Ubuntu 如何定义哪些 linux-headers-* 将与 linux-headers-generic 一起安装?

Ubuntu 如何定义哪些 linux-headers-* 将与 linux-headers-generic 一起安装?

从 22.10 升级到 23.04 时,我遇到了这个错误6.2.0-20由于最新的内核尚未正确安装,导致系统无法启动。

我使用 GRUB 启动菜单来定义一个较旧的内核(显然,5.19.0-41是最新内核“后面”唯一可用的内核6.2.0-20),所以现在我在这个较旧的内核上运行。

为了清理我的系统,我尝试了新的和损坏的内核的apt remove linux-headers-6.2.0-20所有其他6.2.0-20相关标头,但这是不可能的,因为非特定linux-headers-generic依赖于那些包。

因此,我还删除了它,linux-headers-generic并计划在删除有问题的标题后重新安装它。我手动清除了所有这些新标题,直到列表几乎为空(我留下了,linux-libc-dev:amd64因为这似乎不会造成问题):

$ sudo dpkg -l | grep "6.2.0-20"
pi  linux-headers-6.2.0-20                                      6.2.0-20.20                               all          Header files related to Linux kernel version 6.2.0
rc  linux-image-6.2.0-20-generic                                6.2.0-20.20                               amd64        Signed kernel image generic
ii  linux-libc-dev:amd64                                        6.2.0-20.20                               amd64        Linux Kernel Headers for development
rc  linux-modules-6.2.0-20-generic                              6.2.0-20.20                               amd64        Linux kernel extra modules for version 6.2.0 on 64 bit x86 SMP
rc  linux-modules-extra-6.2.0-20-generic                        6.2.0-20.20                               amd64        Linux kernel extra modules for version 6.2.0 on 64 bit x86 SMP

但是现在,apt install linux-headers-generic它仍将尝试安装最新的标题:

$ sudo apt install linux-headers-generic
Die folgenden zusätzlichen Pakete werden installiert:
  linux-headers-6.2.0-20 linux-headers-6.2.0-20-generic

现在我想知道,系统如何确定在安装常规时将安装较新的内核linux-headers-generic,我是否可以以某种方式将其重置为较旧的内核?

答案1

5.19.0-41是 Ubuntu 22.10 内核。它不在 23.04 的存储库中,因此您无法找到它apt。它可能在您升级之前就存在于您的系统中。

linux-headers-generic是一个元包,它始终指向最新的一组标题。

你可以精确地指定要安装的标头,apt install linux-headers-6.2.0-20-generic例如,元包指向哪个标头(请参阅变更日志

但是您将无法做到apt install这一点linux-headers-5.19.0-41-generic,因为如上所述,它不在 23.04 仓库中。

由于您在 23.04 上运行 5.19,因此您可以手动获取 deb:

答案2

事实上,你想要安装 linux-headers-generic,因为该包依赖于其他会给您带来问题的包。

有两种方法可以解决这个问题:

  1. 找到适合您的最新版本的 linux-headers-generic,然后安装它。然后,暂停该软件包,这样它就不会自动升级。然后,一旦最新的标头包含对漏洞您提到,解除保留并升级到最新版本。

    这种策略需要做很多工作,因为你必须寻找一个可用的版本,测试并确保它能正常工作,然后清理每个不能正常工作的版本。最后,如果你当前的 Ubuntu 版本没有最新的可用版本,那么添加软件包就是额外的工作,因为popey 的回答密友。

  2. 保持系统原样,处于工作状态。在错误修复之前不要做任何更改,修复后,您将能够以与安装其他软件完全相同的正常方式安装最新版本的 linux-headers-generic。

    如果这个策略对你不起作用,那为什么不行呢?安装这个包为什么如此重要?

相关内容