软件包系统损坏,可能是由于内核版本不匹配导致的?

软件包系统损坏,可能是由于内核版本不匹配导致的?

几天前,我发现我的 Ubuntu 21.10 无法再执行更新,同时发现“Ubuntu 软件”应用程序查找实用程序再也找不到任何可用的应用程序。尝试更新系统时,我收到此错误报告:

包装系统已损坏

Check if you are using third party repositories. If so disable them, since they are a common source of problems.
Furthermore run the following command in a Terminal: apt-get install -f
Transaction failed: The package system is broken
 The following packages have unmet dependencies:

linux-generic-hwe-20.04: Depends: linux-image-generic-hwe-20.04 (= 5.13.0.44.53) but 5.13.0.52.58 is installed
                         Depends: linux-headers-generic-hwe-20.04 (= 5.13.0.44.53) but 5.13.0.52.58 is installed

从那时起,我四处搜索并尝试了各种命令,这些命令似乎可以清理、修复、更新 apt 和 dpkg 的依赖项等(包括错误中推荐的命令),所有这些命令都成功运行了几个结果,但也包括一些错误,我认为这些错误看起来与上面的错误大致相同,内核版本依赖项不匹配。我不确定我的内核版本是如何领先于其依赖项的;我通常不会弄乱我的系统内部,我不确定我是否会导致这种情况。

我要指出的关于我的系统的一个奇怪之处是,这个分区的文件系统是 btrfs。这是一个基本成功的实验,除了当我将内存超载到交换区时,它永远不会将东西移回,所以我的系统总是陷入困境,直到我重新启动,即使关闭了几个程序也是如此。不过,我认为这无关紧要。

结果:dpkg -l | grep "linux-image*"

rc  linux-image-5.11.0-31-generic                 5.11.0-31.33                               amd64        Signed kernel image generic
rc  linux-image-5.11.0-34-generic                 5.11.0-34.36                               amd64        Signed kernel image generic
rc  linux-image-5.11.0-36-generic                 5.11.0-36.40                               amd64        Signed kernel image generic
rc  linux-image-5.11.0-37-generic                 5.11.0-37.41                               amd64        Signed kernel image generic
rc  linux-image-5.11.0-38-generic                 5.11.0-38.42                               amd64        Signed kernel image generic
rc  linux-image-5.11.0-40-generic                 5.11.0-40.44                               amd64        Signed kernel image generic
rc  linux-image-5.11.0-41-generic                 5.11.0-41.45                               amd64        Signed kernel image generic
rc  linux-image-5.11.0-44-generic                 5.11.0-44.48                               amd64        Signed kernel image generic
rc  linux-image-5.11.0-49-generic                 5.11.0-49.55                               amd64        Signed kernel image generic
rc  linux-image-5.13.0-37-generic                 5.13.0-37.42                               amd64        Signed kernel image generic
rc  linux-image-5.13.0-39-generic                 5.13.0-39.44                               amd64        Signed kernel image generic
ii  linux-image-5.13.0-40-generic                 5.13.0-40.45                               amd64        Signed kernel image generic
ii  linux-image-5.13.0-41-generic                 5.13.0-41.46                               amd64        Signed kernel image generic
ii  linux-image-5.13.0-44-generic                 5.13.0-44.49                               amd64        Signed kernel image generic
ii  linux-image-5.13.0-48-generic                 5.13.0-48.54                               amd64        Signed kernel image generic
ii  linux-image-5.13.0-52-generic                 5.13.0-52.59                               amd64        Signed kernel image generic
rc  linux-image-5.8.0-25-generic                  5.8.0-25.26                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-29-generic                  5.8.0-29.31                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-31-generic                  5.8.0-31.33                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-33-generic                  5.8.0-33.36                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-34-generic                  5.8.0-34.37                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-36-generic                  5.8.0-36.40                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-38-generic                  5.8.0-38.43                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-41-generic                  5.8.0-41.46                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-43-generic                  5.8.0-43.49                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-44-generic                  5.8.0-44.50                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-45-generic                  5.8.0-45.51                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-48-generic                  5.8.0-48.54                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-49-generic                  5.8.0-49.55                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-50-generic                  5.8.0-50.56                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-53-generic                  5.8.0-53.60                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-55-generic                  5.8.0-55.62                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-59-generic                  5.8.0-59.66                                amd64        Signed kernel image generic
rc  linux-image-5.8.0-63-generic                  5.8.0-63.71                                amd64        Signed kernel image generic
ii  linux-image-generic                           5.13.0.41.50                               amd64        Generic Linux kernel image
ii  linux-image-generic-hwe-20.04                 5.13.0.52.58                               amd64        Generic Linux kernel image

根据人们的建议进行编辑:我不太确定,但我认为切换到存档的发布服务器不会有帮助,因为问题是我显然不知何故使用了 HWE 内核,而 APT 不喜欢这样。有没有办法回滚我的内核版本?我可以简单地删除太新的 HWE 内核版本吗(我该怎么做),或者它会再次崩溃,因为它不知何故被设置为使用 HWE 内核?我是否应该以某种方式强制它切换到不同的更新服务器,这样做会有效吗,尽管这是一个与其他人建议我查看的问题不同的问题?

当然,我可以重新安装整个系统,但如果解决方案足够简单(是的,我确实想更新它,只是因为我的互联网速度太慢,所以我更喜欢选择何时更新,所以我没有及时更新),那么我宁愿不必这样做。而且为什么 21.10 只支持这么短的时间?(我以为我在使用 LTS。)

答案1

编辑如下

记住:

  • Ubuntu 21.10 将于 2022 年 7 月 31 日达到 EOL[0]
  • 非 LTS 版本不应运行 HWE [1]

我假设您已经安装了(dpkg -l | grep "linux-image*"):

linux-image-5.13.0-52-generic 5.13.0.52.58 amd64 Signed kernel image generic

fallback linux-image-generic

linux-image-generic

标题也一样。

您的图像和头文件与您的 Linux 内核元包不匹配;linux-generic-hwe-20.04指向您没有的(?),因为您不应该有。linux-image-generic-hwe-20.04linux-headers-generic-hwe-20.04

虽然我很好奇你是怎么到这里来的,但你最好的选择是备份你的主文件夹并执行一些全新安装另一个版本的 Ubuntu(您只能选择 LTS,直到新的非 LTS 版本发布)。想必您无论如何都会在月底这样做。

围绕这个主题进一步阅读(但不是该问题的直接解决方案)[2][3][4]。

[0]https://endoflife.date/ubuntu

[1]什么是硬件支持 (HWE)?

[2]内核版本不匹配导致 APT 受阻

[3]Linux 内核元包和头文件

[4]添加 PPA 后如何解决未满足的依赖关系?

编辑 07/10/2022 根据正在编辑的问题本身:

实际指南(我只是粗略地看了一遍): 降级内核 Linux

我的答案:

为什么 21.10 只支持这么短的时间?(我以为我使用的是 LTS。)

来自Canonical本身[5]:

在 LTS 版本之间每六个月,Canonical 都会发布一个 Ubuntu 的临时版本,...临时版本将引入来自 Canonical 和上游开源项目的新功能,它们作为这些新功能的试验场。

由于您已经安装了几个内核,您可以在启动时启动其中任何一个:如何在启动时进入 GRUB 菜单?

确保安装了以下包(及其依赖项):

linux 通用

sudo apt install linux-generic

可以看到依赖的是header和image包(依赖比较多)

您需要删除所有三个 HWE 包[6] linux-generic-hwe-20.04 linux-headers-generic-hwe-20.04 linux-image-generic-hwe-20.04

终端:

sudo apt purge linux-generic-hwe-20.04 linux-headers-generic-hwe-20.04 linux-image-generic-hwe-20.04

[5]https://ubuntu.com/about/release-cycle

[6] 事实上,你应该确保你根本没有任何 hwe 包。

相关内容