“以下包裹已被保留”是什么意思?

Cha*_*per 92 apt upgrade

执行操作时,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.
Run Code Online (Sandbox Code Playgroud)

这究竟是什么意思?显然,这些软件包已被阻止且未安装,但为什么呢?

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

Cha*_*had 84

如果升级需要删除另一个包或安装新包,则该包将被“保留”。正如apt-get upgrade手册页所解释的那样:

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

为了解决这个问题,你可以这样做

sudo apt-get --with-new-pkgs upgrade
Run Code Online (Sandbox Code Playgroud)

这允许安装新的软件包。它会让您知道将安装哪些软件包并在实际安装之前提示您。

  • 太好了,这是迄今为止最清楚的解释。但是,您在 die.net 上链接到的手册页不包含 --with-new-pkgs 选项。这个是:http://manpages.debian.org/cgi-bin/man.cgi?query=apt-get (7认同)
  • 这对我(Ubuntu 19.04)不起作用,并导致与“ apt upgrade”完全相同的消息,即“保留”。 (4认同)
  • 但是我已经更新并升级了所有软件包,那么为什么这些软件包没有升级? (2认同)
  • @Nullpointer“apt-get upgrade”不会安装新包(除非你提供标志)。如果没有该标志,如果现有软件包的升级需要安装新软件包,则不会发生该升级。 (2认同)

rho*_*oat 19

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


小智 7

尝试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使用a 。


Sco*_*and 5

该消息表明存在潜在的不安全状况

如果您确定希望进行此更改,您可以

sudo apt-get install  xxxxx
Run Code Online (Sandbox Code Playgroud)

其中 xxxx 是保留的软件包...通常,当系统知道通过执行此安装它将必须卸载其他软件包时,就会发生这种情况...例如

sudo apt-get --with-new-pkgs upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  libc6 libc6-dbg
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
Run Code Online (Sandbox Code Playgroud)

不过我可以继续对那些持有的软件包进行更新,所以我运行

sudo apt-get install   libc6 libc6-dbg

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  libx11-xcb1:i386
Use 'sudo apt autoremove' to remove it.
Suggested packages:
  glibc-doc
The following packages will be REMOVED:
  libatomic1:i386 libbsd0:i386 libc6:i386 libdrm-amdgpu1:i386 libdrm-intel1:i386 libdrm-nouveau2:i386 libdrm-radeon1:i386 libdrm2:i386 libedit2:i386 libelf1:i386
  libexpat1:i386 libffi6:i386 libgcc1:i386 libgl1:i386 libgl1-mesa-dri:i386 libglapi-mesa:i386 libglvnd0:i386 libglx-mesa0:i386 libglx0:i386 libidn2-0:i386 libllvm9:i386
  libnvidia-compute-430:i386 libnvidia-decode-430:i386 libnvidia-encode-430:i386 libnvidia-fbc1-430:i386 libnvidia-gl-430:i386 libnvidia-ifr1-430:i386 libpciaccess0:i386
  libsensors5:i386 libstdc++6:i386 libtinfo6:i386 libunistring2:i386 libx11-6:i386 libxau6:i386 libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386 libxcb-present0:i386
  libxcb-sync1:i386 libxcb1:i386 libxdamage1:i386 libxdmcp6:i386 libxext6:i386 libxfixes3:i386 libxshmfence1:i386 libxxf86vm1:i386 zlib1g:i386
The following packages will be upgraded:
  libc6 libc6-dbg
2 upgraded, 0 newly installed, 47 to remove and 0 not upgraded.
Need to get 8,459 kB of archives.
After this operation, 525 MB disk space will be freed.
Do you want to continue? [Y/n] 
Run Code Online (Sandbox Code Playgroud)

因为通过做一些研究,我可以进行此升级,我对上面的提示说“是”...现在那些保留的软件包已安装,成本是消除不需要的辅助 32 位软件包...当然,您将拥有不同的集合导致此The following packages have been kept back 消息或类似消息的软件包数量