我希望有更多知识的人可以解释一些有关apt-get upgrade
在 Ubuntu 16.04 及更高版本中执行的操作。
我看到的行为是apt-get upgrade
有时不会安装新的内核包,有时会:
即从输出:
The following packages have been kept back:
linux-generic linux-headers-generic linux-image-generic linux-tools-generic
我做知道执行dist-upgrade
会安装这些软件包(所以不要重复回答 :-)。我不知道是什么控制了这些软件包的保留。
有时执行 时会安装新内核apt-get upgrade
,有时软件包会被保留。
这些保留是 Canonical 自己提出的吗?它们是否与其他软件包的依赖关系有关?
答案1
该apt-get upgrade
命令仅将软件包升级到其较新的版本,它不会安装新的软件包,也不会删除任何软件包来升级。
当您升级内核时,实际上是在安装新内核。Ubuntu 不会升级内核,它会安装新内核并保留旧内核。
但是为什么呢?为什么我们要安装新版本的内核而不是将其升级到上一个版本?答案是为了稳定性。
你永远不知道内核升级后会发生什么,它可能无法启动你的系统或使你的硬件正常工作。你应该始终保留旧版本,这样即使出现任何问题,你仍然有一台可以正常工作的机器。
永远不要升级你的工作内核。
Slackware 表示系统升级指南。
更多信息
man apt-get
:
在任何情况下都不会删除当前安装的软件包,也不会检索和安装尚未安装的软件包。如果不更改另一个软件包的安装状态,则无法升级当前安装的软件包的新版本将保留其当前版本。
但是如您所知,您也可以使用apt-get dist-upgrade
或apt upgrade
安装这些“保留”的包。
$ apt-cache search linux-image-4.4.*-generic | tail -3
linux-image-4.4.0-75-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
linux-image-4.4.0-77-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
linux-image-4.4.0-78-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
看到了吗?这些是不同的包,因此是新安装而不是升级。