在更新基于Ubuntu和Debian的Linux发行版时修复“以下软件包已保留”错误

Fixing “The following packages have been kept back” Error While Updating Ubuntu and Debian-based Linux Distributions

前几天,我正在更新我的Ubuntu系统。我更喜欢使用apt update和apt upgrade的组合来更新系统的命令行方式。

这次我在Ubuntu中遇到了一个奇怪的更新错误。它告诉我,有些软件包可以升级,但由于读取错误而无法升级这些软件包:

以下软件包已保留:

这是我遇到的错误的屏幕截图:

如上图所示,问题是由于fwupd引起的,它是Ubuntu和其他Linux中的固件更新管理器守护程序。

让我向您展示如何在Ubuntu和其他Linux发行版(如Linux Mint,Debian,Kali Linux等)中处理此错误。

修复"以下软件包已保留"错误

解决此错误的方法非常简单。您所要做的就是对问题中的一个或多个软件包使用apt install命令:

1
sudo apt install package_name

如果在已经安装的软件包上使用apt install,它将被更新。就我而言,fwupd程序包被保留。因此,这是我尝试的方法:

1
sudo apt install fwupd

如您在下面的屏幕快照中所见,它建议两个将要安装的软件包,然后还要安装这些软件包。

解释:"以下软件包已被保留"错误的原因及其解决方法

上面建议的修复程序应该可以为您解决问题。但是您是否好奇导致错误的原因以及如何解决该错误?让我向您解释。

通常,当您运行sudo apt update和sudo apt upgrade命令时,它将所有已安装的软件包更新为可用的较新版本。

但是,如果已更改已安装软件包的依赖性,从而需要安装新软件包,则已安装软件包将不会随着系统更新而升级,并且您会看到软件包保留错误。

在此处的示例中,最初安装fwupd时,未安装tpm2-tools和tpm2-abrmd,并且fwupd并不依赖于此。后来,较新版本的fwupd要求安装这些新软件包。

这是Debian的APT软件包管理器中的一种机制,它通知您现在已经安装的软件包需要安装更多新的软件包作为依赖项。当您手动和单独更新这些软件包时,您会看到要安装哪些新软件包,并且不再显示该错误。

在这种情况下,您也可以使用apt full-upgrade / apt-get dist-upgrade代替apt install package_name,但我不建议这样做。 apt全面升级可能会在处理依赖项时自动删除它认为不必要的软件包。这可能会导致意外情况。

您是否解决了该错误?

此解决方案是否有助于您摆脱"包装已退回"的错误?如果是的话,我欢迎您在评论部分中快速发表"谢谢"消息。如果没有,请告诉我,我会尽力帮助您。