Answers:
根据debian-administration.org上的一篇文章,
如果对已安装的某个软件包的依赖关系发生了更改,因此必须安装新的软件包才能执行升级,则该软件包将列为“保留”。
谨慎的解决方案1:
根据Pablo的回答,您可以运行sudo apt-get --with-new-pkgs upgrade
,它将安装保留的软件包。
这样的好处是不会将保留的软件包标记为“手动安装”,这可能会迫使更多的用户干预(请参阅注释)。
如果Pablo的解决方案适合您,请对其进行投票。如果没有,请评论出了什么问题。
谨慎的解决方案2:
谨慎的解决方案是运行sudo apt-get install <list of packages kept back>
。在大多数情况下,这将为保留的软件包提供成功升级所需的内容。
激进的解决方案:
一个更积极的解决方案是运行sudo apt-get dist-upgrade
,它将强制安装那些新的依赖项。
但是dist-upgrade
可能很危险。与升级不同,它可能会删除软件包以解决复杂的依赖情况。与您不同,APT并不总是很聪明,无法知道这些添加和删除是否会造成严重破坏。
因此,如果您发现自己在“谨慎解决方案”不起作用的地方,dist-upgrade
可能会起作用...但是您最好还是多了解一点有关APT的知识,并通过安装和删除“手动”解决依赖性问题根据具体情况打包。
可以把它想象成是修理汽车……如果您有时间并且用扳手得心应手,则可以通过阅读和自行进行修理来放心。如果您感到幸运,可以和表哥下车,dist-upgrade
并希望她知道她的东西。
dist-upgrade
在稳定的系统上使用,如以下其他许多答案所指出的那样。我个人认为有一个更简单/更安全的答案需要推广:apt-get install <pkgs列表>
sudo apt-get dist-upgrade
也可以删除软件包。因此,最好在运行时始终在同意更改之前检查更改列表sudo apt-get dist-upgrade
。
apt-get upgrade
可以删除软件包吗?否则,如果存在版本冲突,它将始终这样做。考虑一下llvm3.6
vs. llvm3.6v5
(“ v5”表示它是使用编译的gcc 5
)。这两个不能共存,只能将两者之一保留在系统上。因此,是的,dist-upgrade
也可能会删除一些软件包,但这不仅dist-upgrade
是要这样做。在某些情况下upgrade
也是如此。
每当您从命令中收到apt-get upgrade
消息时
The following packages have been kept back:
然后在不进行发行版升级的情况下升级一个或所有保留包(dist-upgrade
如果我没有记错的话,就是这样做)是发出以下命令:
apt-get install <list of packages kept back>
如其他答案所解释,这将解决保留的问题,并要求安装其他软件包等。
apt-get upgrade <list of packages>
,如果我重做apt-get upgrade
,它将列出有问题的软件包,不再需要,可以apt autoremove
用来删除它们,然后这样做,然后最后一个apt-get upgrade
不再列出为退缩...很奇怪。有什么想法吗?
apt-get install
在必要时也删除软件包以解决过时的依赖性情况,还是您必须运行单独的apt-get remove
命令来完成升级过程的那一部分?
apt autoremove
然后删除这些未使用的依赖项。
sudo apt-get --with-new-pkgs upgrade
这会不会有造成包的侧面影响到被标记为手动安装
apt-get dist-upgrade
对稳定的环境有害,
用例:阻止内核升级,您只想升级内核,不想升级整个发行版。
处理不放回包裹的更好方法:
sudo aptitude
如果您保留了软件包,则应该在列表顶部看到可升级软件包。
您保留的软件包已安装。
apt-get dist-upgrade
仅当您的存储库中有错误的存储库时,它才是危险的/etc/apt/sources.list*
。很高兴知道可以dist-upgrade
升级所有软件包,但是使用默认存储库就可以了。不使用dist-upgrade
可能会很危险,因为您可能会错过安全更新。
apt-get dist-upgrade
可以删除和添加软件包,但这并不危险。如果sources.list
文件有问题,任何软件包安装命令都可能导致严重损坏!常规apt-get upgrade
命令将从已启用的任何软件源安装任何软件包。dist-upgrade
这样不是唯一的。此外,aptitude
在未修正bug 831768apt-get dist-upgrade
的发行版中,使用至少在amd64上执行任何操作比运行危险得多。
sudo aptitude safe-upgrade
为什么不尝试这个Unix SE答案:
sudo apt-get --with-new-pkgs upgrade
这允许安装新软件包。它会告诉您要安装哪些软件包,并在实际执行安装之前提示您。
使用apt install <pkg>
代替会将pkg标记为“手动安装”!要将其再次标记为“自动安装”,请使用apt-mark auto <pkg>
(另请参见子命令showmanual
)。有关此答案的更多信息。
sudo apt-get --with-new-pkgs upgrade
这些软件包仍显示为“保留”。没有错误讯息。
通常,有两个原因可能会导致您看到此消息。
如果通过升级程序sudo apt-get upgrade
会导致添加或删除软件包,则该程序将被保留。sudo apt-get dist-upgrade
在这种情况下,您可以使用,然后它将提供添加或删除其他程序的功能。
这很普遍,通常不是问题。有时候(尤其是在Ubuntu alpha中),a dist-upgrade
会删除许多其他程序,在这种情况下,您可能想取消它。
如果程序依赖于不可用的软件包或版本,则该程序将被保留。在这种情况下,您实际上什么也不能做,只能等待,因为该软件包基本上是可卸载的。当软件包乱序添加到存储库,重命名软件包或软件包停止提供虚拟软件包时,可能会发生这种情况。
apt-get dist-upgrade
拒绝安装它。明智地检查该软件包表明它取决于一个不可用的软件包。我想我得等。
这些软件包很可能会被推迟,因为它们的安装会导致依赖性不一致。这可能是由于您正在使用活动开发ppas下的存档,或者是因为您使用的镜像未完全更新。
在最后一种情况下,只需等待,解决依赖关系后,将在下次安装它。
编辑:
还有另一种可能性,如果对它们进行固定或固定,则可能会将其保留下来。
dist-upgrade
。如果您仍然愿意dist-upgrade
,请在继续之前查看要安装的新软件包和要删除的软件包。
apt-get install --reinstall <packages>
。
这通常是因为程序包已添加依赖项,并且升级不想在未经许可的情况下为您添加依赖项。
如果您运行:
sudo apt-get install gimp gimp-data libgegl-0.0-0 libgimp2.0
然后,应将新版本及其新依赖项一起安装。
这对我有用
sudo aptitude full-upgrade
aptitude upgrade
为我工作。
Ubuntu 14.04
我正在使用,但我没有aptitude
命令行
apt-get dist-upgrade
给了我同样的信息,但这为我解决了。我有一个正在中断另一个程序包升级的程序包。我不需要我安装的那个,所以aptitude full-upgrade
给了我删除它的选项,以便它可以升级其他所有东西。
我发现如果版本略有不同,aptitude在升级软件包方面会做得更好。我有这样的情况:
me@compy:/etc/apt$ apt-cache policy gzip
gzip:
Installed: 1.3.5-15
Candidate: 1.3.5-15+etch1
Version table:
1.3.5-15+etch1 0
500 http://archive.debian.org etch/main Packages
*** 1.3.5-15 0
100 /var/lib/dpkg/status
这使得apt-get可以阻止更新,但是aptitude更新它就可以了。我不确定使用哪种算法来确定是否应更新软件包。我猜这两个有相同的版本,只是一个不同的“限定词”。但是无论如何,apt-get不会更新它,但是能力会更新。
在我看来,与Linux标头和内核相关的软件包被保留下来。我通过尝试解决在通知区域中带有红色感叹号且无法更新软件包的问题来解决此问题。
要解决它,我既不必使用dist-upgrade也不可以使用手册apt-get install xxx。
我所做的和提供的帮助非常简单明了:
sudo apt-get update
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get upgrade
我必须手动确认Grub更新及其配置。
然后我只是在计算机上工作了一段时间,然后再次出现了标准更新对话框,最后包括带有内核及相关内容的“ Ubuntu base”部分。执行更新没有任何麻烦,我再也看不到任何保留的软件包。
另外,请务必记住,包括内核更新在内的那些* buntu更新对休眠非常敏感 -我已经多次遇到此问题,并且始终可以通过重新启动计算机并执行上述步骤来解决此问题。
所以也许这足够了?
(此处描述的情况与我2015年12月底的Xubuntu 15.10有关)
这看起来像是重新安装保留软件包的正确方法:
apt-get install --reinstall libjpeg-progs
libjpeg-progs
从Ubuntu 14.04升级到16.04后停滞不前,这至少对我有用。我确定您可以对其他任何保留的应用程序执行相同的操作,例如gimp
。
来源:https://ubuntuforums.org/showthread.php?t = 2321702&p = 13476183#post13476183
--reinstall
。
我已经阅读了所有帖子,发现有很多有趣的解释。我正在尝试所有这些,但没有完全完成任何结果。我无法升级mysql-utilities的问题。更新是由系统提出的。因此,我想展示一些步骤。当然,我会在某些时候重复上述所有帖子。这是我的错误,是的,我是通过已经存在的帖子找到的,但是接下来我该怎么办?
下一步是:
sudo apt-get --purge remove mysql-utilities
我们可以在下面的图像中看到的结果。我删除软件包并通过命令检查此内容:
sudo apt-get -f install
这样,我认为可以为更多的新人提供帮助,因为有了其他软件包,我们可以执行相同的步骤。
一次,很抱歉,当我在某些地方重复其他帖子时。
{}
在编辑器中按按钮以正确设置其格式。