我知道这个问题以前有人问过,但我觉得我的情况有点……奇怪。
我一直在尝试install build-essential
这样做以便能够进行一些开发,但是我不断收到一份很长的依赖项列表,而我无法手动安装。
我尝试了多个指南,包括那个dpkg -i
技巧,后来才意识到那.deb
只是针对软件包的(除非我完全误解了整个问答)。我尝试通过 Synaptic 进行安装,并通过镜像站点手动安装,我尝试添加一些行,/etc/apt/sources.list
就像一些人建议的那样,但到目前为止什么也没发生。
这不是一个如何修复的问题,而是一个发生了什么的问题?我运行了sudo apt-get update
,然后sudo apt-get upgrade
没有任何变化。然后我运行了sudo apt-get dist-upgrade
。输出sudo apt-get upgrade
为:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
cpp-4.8 gcc-4.8 gcc-4.8-base gcc-4.8-base:i386 libasan0 libatomic1
libgcc-4.8-dev libgomp1 libitm1 libquadmath0 libstdc++6 libstdc++6:i386
libtsan0
0 upgraded, 0 newly installed, 0 to remove and 13 not upgraded.
的输出sudo apt-get update
只是通常的Hit http://...
和Ign http://...
。然而,sudo apt-get dist-upgrade
在我尝试进行任何其他更新、升级或安装之前,它已经发生了变化。它的输出如下:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
cpp-4.8 gcc-4.8-base gcc-4.8-base:i386 libasan0
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.
当通过 Synaptic 下载 build-essential 时,它本来就想删除这个程序,所以我决定只使用remove
或purge
删除它们。但是,它们有依赖关系,所以要删除它们(这毫无意义)?我会向你展示我得到的结果。
$ sudo apt-get purge gcc-4.8-base
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
gir1.2-dee-1.0 : Depends: libdee-1.0-4 (>= 1.2.7+13.10.20130924.1) but it is not going to be installed
system-image-dbus : Depends: system-image-common (= 2.2-0ubuntu1) but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
然而,在我遇到的一个完全不相关且完全相似的问题中,我发现删除这些软件包实际上会导致 Ubuntu 完全停止工作!所以现在我不知道为什么这些软件包不会更新或像命令dist-upgrade
告诉我的那样被“阻止”。抱歉问题这么长。我希望我清楚地表达了要点!
答案1
我通过实际破解 Ubuntu 发现了这一点。
在尝试安装时,build-essential
我尝试删除这些“被阻止”的软件包,Ubuntu 实际上崩溃了。我只能通过恢复模式加载 Ubuntu,在多次使用终端后,我设法修复了 Ubuntu,以便启动仅终端版本的 Ubuntu。我设法卸载了 Ubuntu 桌面本身(以及其他一些使计算机正常运行的非常重要的文件等)。
在排除故障时这问题我发现一个参数由于某种原因只为我解决了桌面和build-essential
包中的类似问题。我对桌面产生了一个巨大的长期依赖,因为非常重要的文件丢失了,而且由于某种奇怪的原因我无法解锁 root 来保存我上学所需的文件。我只是研究了这个新问题并发现如果我使用,sudo apt-get install build-essential checkinstall
它会安装所有依赖项(为什么以前没有人使用过这个!!?)。然后我尝试使用它ubuntu-desktop
,它安装得很好,现在我拥有了两者。所以我猜发生的事情是我弄乱了一些资源列表,以至于需要更新的文件没有得到更新。
简而言之,回答这两个问题,事情是这样的:我犯了一个错误,导致/etc/apt/sources.list
某些重要文件无法更新,而要安装,build-essential
你只需checkinstall
在命令末尾添加即可apt-get
。如果你在生活中的任何时候遇到同样的问题,你可以考虑将重要文件移动到你不会经常损坏的计算机上。