“保留以下软件包”是什么意思?


72

执行此操作时apt-get upgrade,有时会收到一条消息,指出“以下软件包已保留”。例如:

$ sudo apt-get upgrade                                                                                                
Reading package lists... Done                                                                                                          
Building dependency tree                                                                                                               
Reading state information... Done                                                                                                      
The following packages have been kept back:                                                                                            
  linux-headers-server linux-image-server linux-server                                                                                 
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

这到底是什么意思?显然,这些软件包已被保留并且没有安装,但是为什么呢?

接下来的问题是:如何升级这些保留的软件包?


2
可以在这里找到非常清楚的解释:debian-administration.org/article/69/…– jplandrain
2015年

我总结了有关以下方面的评论和技术文档:保留了以下软件包,我邀请您阅读我的文章并发表评论,以便对此进行改进。感谢您抽出宝贵时间来处理此请愿书。另外,希望您对这篇文章有用。这是它的链接:guillermo.lopez.co.cr/…当有人需要有关此主题的帮助时,请引用本文作为参考。
ithan

Answers:


63

如果升级需要删除另一个软件包或安装新软件包,则该软件包将“保留”。正如apt-get升级手册页所述:

当前安装有可用新版本的软件包将被检索和升级;在任何情况下都不会删除和安装尚未安装的软件包或尚未安装的软件包。

为了克服这个问题,您可以

sudo apt-get --with-new-pkgs upgrade

这允许安装新软件包。它会告诉您要安装哪些软件包,并在实际执行安装之前提示您。


6
好的,这是迄今为止最清晰的解释。但是,您在die.net上链接的手册页不包括--with-new-pkgs选项。这是做的:manpages.debian.org/cgi-bin/man.cgi?query=apt
Charles Roper

1
但是我已经更新和升级了所有软件包,那么为什么这些软件包不能升级?
Nullpointer

2
@Nullpointer“ apt-get upgrade”将不会安装新软件包(除非您提供了标志)。如果没有该标志,则如果升级现有软件包将需要安装新软件包,则不会进行该升级。
乍得

18

基本报告是apt-get upgrade不会升级程序包管理器要删除并重新安装程序包的程序包。在安全补丁程序中经常发生这种情况,因为通常,实际上它们实际上是补丁程序最终可分发编译的库。“删除并删除内容”功能apt-get dist-upgrade仍然存在,但请确保先运行apt-get update,以防上游人员自您上次尝试以来发现某些内容。有时他们会错过某些东西并迅速修复它们。


3

尝试apt-get dist-upgrade。从手册页:

dist-upgrade

dist-upgrade除了执行的功能外upgrade,还可以智能地处理新版本软件包的依赖关系;apt-get 拥有一个“智能”冲突解决系统,它将尝试升级最重要的程序包,必要时以次要的程序为代价。因此,dist-upgrade命令可能会删除某些软件包。该/etc/apt/sources.list文件包含一个位置列表,可从中检索所需的软件包文件。另请参阅有关apt_preferences(5)覆盖单个软件包的常规设置的机制。

虽然这个命令用来升级操作系统的一个新的主要版本,它并不会在默认情况下做到这一点。该文件/etc/apt/sources.list必须改变,以新的版本,然后一个dist-upgrade被使用。


0

做就是了

sudo apt-get install linux-headers-server linux-image-server linux-server

升级保留的软件包。

然后运行apt-get upgrade,您会没事的。


5
这是不正确的。apt-get dist-upgrade不是你的操作系统升级到新版本。man apt-get看到差异。
BT643

@ BT643(以及那些发表评论的人)请对错误的答案进行投票,而不是仅发表评论。尤其是像这样的公然错误的答案,使一个普遍的误解长期存在。我们依靠投票将好的内容带到了最前线,同时也压低了错误的内容。
terdon

1
@terdon我尝试过,但是没有足够的代表:)(需要125来投票)。
BT643 2014年

第一部分(安装/升级只是保留的软件包)不是一个好的答案吗?然后继续升级。删除有关dist-upgrade声音的令人讨厌的建议是一个好主意,而不是仅仅
投票反对

首先考虑使用:sudo apt-get --with-new-pkgs upgrade不会导致将软件包标记为手动安装的
副作用
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.