当使用apt时,这个或那个可能看到了这个消息:
The following packages have been kept back: some-package
通常的解决scheme是手动安装软件包:
apt-get install some-package
但是,为什么apt会阻止给定的软件包呢?
对于我目前的情况,我能够重现这个消息:如果some-package是一个虚拟包(所以它不包含任何数据,但是包含一个依赖的控制文件),每次都会发生这种情况,所以会在虚拟包中添加一个依赖项。 例子:some-package是一个虚拟包,版本1.0.0,依赖于package-A和package-B
安装一些软件包1.0.0也会安装软件包A和软件包B。 如果我现在创build一个依赖于包A,包B和包C的some-package 1.1.0的新版本,并尝试
apt-get update && apt-get upgrade
结果是上面提到的消息:
The following packages have been kept back: some-package
任何人有一个想法,为什么要把这样的软件包拿回来?
默认情况下,apt-get升级只会升级没有对其依赖项进行任何更改的软件包。 通过这种方式可以保证没有安装其他软件包,或者更重要的是,删除其他软件,而不受apt控制。 换句话说,apt正在试图为您的系统提供最大的稳定性。
为了升级这些额外的软件包,运行
apt-get dist-upgrade
这将首先显示所有将作出的更改。 然后,您可以放弃这一点,并使用显示的软件包列表来确定这些更改是否对您的系统是安全的。 一旦您满意自己所做的更改,请运行dist-upgrade。