运行 sudo apt-get upgrade 时出错(与 linux-headers-generic 相关)

运行 sudo apt-get upgrade 时出错(与 linux-headers-generic 相关)

我正在尝试运行 sudo apt-get upgrade,但它显示:

linux-generic:依赖:linux-headers-generic(= 5.4.0.51.54)但已安装 5.4.0.48.51

为了尝试修复此问题,我从 ubuntu 内核团队站点手动下载了以下软件包并成功安装:

linux-headers-5.6.10-050610_5.6.10-050610.202005052301_all.deb
linux-image-unsigned-5.6.10-050610-generic_5.6.10-050610.202005052301_amd64.deb
linux-modules-5.6.10-050610-generic_5.6.10-050610.202005052301_amd64.deb

所以当我运行 $ uname r 时它显示:

~$ uname -r
5.6.10-050610-通用

我以为这样可以解决问题,但安装前仍然收到相同的消息。我没有他们需要的标题的更新版本吗?这为什么是个问题?到底是什么问题?

答案1

截至今天,和的当前软件包linux-generic都是linux-headers-generic5.4.0.52.55(而不是 5.4.0.51.54)

我认为有四种可能性:

  1. 您忘记运行sudo apt update。这是最常见的原因。只需运行一下,您的问题就会像晨雾一样神奇地消失。

  2. 如果您最近进行了发布升级,并且遇到了其他问题,那么您的发布升级可能遇到了问题。

    人们经常会添加非 Ubuntu 软件包、第三方源、PPA 和其他奇怪的东西,然后希望 apt 能够神奇地处理它们。但实际上它不能,这会导致升级中断。在 LTS 到 LTS 的升级中,这种情况相当常见,因为人们不会跟踪两年前安装的内容。

    如果您遇到这种情况,那么简单的解决方案就是备份您的数据并全新安装 20.04,以清除所有历史垃圾。

    版本升级的最佳做法是卸载所有非 Ubuntu 和错误版本的软件包和源发布升级;将系统恢复到尽可能接近出厂状态。然后发布升级,然后恢复非 Ubuntu 源和软件包。下次,尝试这样做。

  3. 在极少数情况下,元软件包(如linux-headers-generic)无法升级。这通常是因为人们或其网络连接在升级方面不一致,导致正常的 apt 升级延迟了几周以上。它通常与设备上没有剩余空间的错误有关。您可以通过查看元软件包版本来测试这一点。

    在这个例子中,版本号是当前的(5.4.0.52.55),所以我的系统没有这个问题,下面的解决方案不会有帮助。

    $ dpkg -l | grep linux-image-generic
    ii  linux-image-generic                        5.4.0.52.55                      
    

    如果您的系统有一个顽固不改的旧版本号,则使用clean从本地缓存中删除元包(从而强制 apt 下载新副本),然后重新安装元包。最后运行正常的 apt 升级。

    sudo apt update
    sudo apt clean linux-headers-generic
    sudo apt install --reinstall linux-headers-generic
    sudo apt upgrade
    
  4. 如果你的升级习惯是使用 GUI 和 Shell 的混合,那么你的系统可能会陷入分阶段更新

    只需从 shell 运行 apt-update/upgrade,而不必使用 GUI 工具。Shell 工具不受分阶段更新的影响。

    sudo apt update
    sudo apt upgrade
    

答案2

我最近了解到,修复依赖关系(删除不需要的,添加需要的)的最简单方法是运行以下命令:

sudo apt full-upgrade

这将处理正常升级选项无法处理的某些软件包的添加/删除,并可能解决您的问题。

遇到了类似的问题,即保留的软件包阻止了升级。使用上述命令可以立即处理它。

相关内容