我刚刚为GIMP的开发版本添加了一个PPA库,但我得到了这个错误。
$ apt-get update && apt-get upgrade
...
The following packages have been kept back:
gimp gimp-data libgegl-0.0-0 libgimp2.0
为什么,如何才能解决这个问题,以便我可以使用最新的版本,而不是现在的版本?
根据debian-administration.org上的一篇文章。
如果你所安装的某个软件包的依赖关系发生了变化,以至于必须安装一个新的软件包来执行升级,那么这个软件包将被列为 "保留-回溯"。
谨慎的解决方案1:
根据Pablo的回答,你可以运行sudo apt-get --with-new-pkgs upgrade
,它将安装保留下来的软件包。
这样做的好处是不会把保留的软件包标记为 "手动安装",这可能会迫使更多的用户干预(见评论)。
如果Pablo的解决方案对你有用,请给它投票。如果不行,请评论一下哪里出了问题。
谨慎的解决方案2:
谨慎的解决方案是运行 "sudo apt-get install "。在大多数情况下,这将给保留下来的软件包提供它们需要的东西,以成功升级。
积极的解决方案:
一个更积极的解决方案是运行sudo apt-get dist-upgrade
,这将强制安装这些新的依赖项。
但 "dist-upgrade "可能相当危险。与升级不同它可能会删除包来解决复杂的依赖情况。不像你,APT并不总是足够聪明,知道这些添加和删除是否会造成破坏。
因此,如果你发现自己处于一个 "谨慎的解决方案 "不起作用的地方,dist-upgrade
可能会起作用......但你最好多了解一下APT,通过逐个安装和删除软件包来 "手工 "解决依赖性问题。
把它想成是修车......如果你有时间并且能熟练地使用扳手,你可以通过阅读和自己动手修理来获得一些安心。如果你觉得自己很幸运,你可以把你的车交给你的表妹dist-upgrade
,希望她知道她的东西。
通常有两个原因,你可能看到这个消息。
如果升级程序(通过sudo apt-get upgrade
)会导致软件包被添加或删除,那么程序将被搁置。在这种情况下,你可以使用sudo apt-get dist-upgrade
,然后它将提供添加或删除额外的程序。
这是很常见的,通常不是问题。偶尔(特别是在Ubuntu alpha期间),dist-upgrade
会提出删除很多其他程序,在这种情况下,你可能想取消它。
如果该程序依赖的软件包或版本不可用,那么该程序将被搁置。在这种情况下,你除了等待,真的什么也做不了,因为软件包基本上是可以卸载的。这种情况可能发生在软件包被不按顺序添加到版本库、软件包被重新命名、或者软件包停止提供虚拟包的时候。
最有可能的是这些软件包被搁置了,因为它们的安装会造成依赖关系的不一致。这可能是因为你使用的是正在开发中的档案,ppas,或者是因为你使用的镜像没有完全更新。
在最后一种情况下,只需等待,当依赖关系解决后,它将在下次安装。
编辑:
还有另一种可能,如果软件包被搁置了,或者被钉住了,它们可能会被拖住。