内核包保留的背后逻辑是什么?

内核包保留的背后逻辑是什么?

我希望有更多知识的人可以解释一些有关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-upgradeapt 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

看到了吗?这些是不同的包,因此是新安装而不是升级。

相关内容