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

Dav*_*vre 4 apt kernel 16.04

我希望有更多知识的人可以解释有关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
Run Code Online (Sandbox Code Playgroud)

知道,做了dist-upgrade将安装这些程序包(所以不要再讲答案:-)。我不知道是什么控制了这些包裹的保留。
有时会在执行时安装新内核apt-get upgrade,有时会保留软件包。

这些保留是否由 Canonical 自己提出,它们是否与对其他软件包的依赖有关?

Rav*_*ina 5

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
Run Code Online (Sandbox Code Playgroud)

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