apt 说包裹已被保留,该怎么办?

apt 说包裹已被保留,该怎么办?

的输出apt-get upgrade是:

The following packages have been kept back:
certbot python-acme python-certbot python-certbot-apache python-cryptography python-openssl

这是什么意思?我应该采取行动吗?如果是,该怎么做?

答案1

快速简便的解决方案:

我遇到过同样的问题,好几次了。不要首先要做的事情sudo apt-get dist-upgrade。非常重要。它会使你的系统非常不稳定,程序可能会崩溃,你可能会失去操作系统中的很多功能。注意:此解决方案适用于基于 Debian 的机器,但是不管用KDE Neon。要更新 KDE Neon,您必须使用sudo pkcon update

必须单独安装每个包,然而在此过程中,其他依赖项也将自动安装,您的问题将在几分钟内得到解决。请参阅这篇博文了解为什么会发生这种情况。

我对以下解决方案没有遇到任何问题。它相当快捷和简单。


首先,执行以下操作:

apt list --upgradable

  • 这将显示可以升级的软件包列表。

接下来,执行以下操作:

  • 从列表开头的第一个包开始并输入:

sudo apt-get install package-name-here

  • 这将运行安装过程并拉取/安装依赖项。

该过程完成后,执行以下操作:

apt list --upgradable

  • 这将再次显示哪些软件包可以升级。您的软件包列表现在应该在减少。按照软件包列表并apt list --upgradable在安装每个软件包后键入。这只需要几分钟即可完成。

最后:

sudo apt-get autoclean

sudo apt-get update && sudo apt-get dist-upgrade

如果此解决方案对您有用,请不要忘记对其进行投票,以便其他人可以使用正确的解决方案并将其置于答案列表的顶部。

如果出于某种原因,此解决方案不适合您,请参阅下面用户 GAD3R 的回答。这也是一个很好的解决方案。

谢谢。

答案2

这是什么意思?

The following packages have been kept back:

答案是这里

这意味着这些软件包有新版本,但由于某种原因无法安装。可能的原因是依赖关系中断(所依赖的软件包没有可供下载的版本)或新的依赖关系(自上一个版本以来,软件包开始依赖于新的软件包)。

我该采取行动吗?

您需要使用dist-upgrade以下命令来安装新的依赖项并升级软件包:

sudo apt-get dist-upgrade

dist-upgrade如果不需要,可以通过运行以下命令解决该问题:

修复损坏的依赖项

sudo apt-get -f install 

删除系统上不再安装的一些软件包:

sudo apt-get autoclean

保留所需包裹:

echo "<package_name> hold" | dpkg --set-selections

重新配置命名的包:

dpkg-reconfigure <package_name>

答案3

本文很好地总结了为什么会发生这种情况:

如果您安装的某个软件包的依赖项发生了变化,从而必须安装新的软件包才能执行升级,那么该软件包将被列为“保留”。

解决这个问题的方法是使用

sudo apt install [packages]

您可能希望将这些包标记为自动安装,除非您自己关心它们,而不仅仅是为了满足依赖关系。

sudo apt-mark auto [packages]

为了防止这种情况发生,我建议使用

sudo apt --with-new-pkgs upgrade

以便将来升级软件包,从而允许安装新的软件包来满足依赖关系的变化。

答案4

我把这个答案写在我的博客里了。如果你想看的话,可以从这里转到那里关联

当您尝试升级( )时,上述错误在 Ubuntu 终端中非常常见apt-get upgrade。这通常是因为您安装的一个软件包的依赖项发生了变化。为了升级,您首先需要升级那些软件包。所以解决这个问题非常简单。您将能够看到此错误消息下方保留的那些软件包。例如,我可以在列表中看到以下软件包:

gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

不要只输入它,sudo apt-get dist-upgrade因为它会安装所有待处理的更新,这非常危险。这可能会使您的工作环境处于高度不稳定的状态。

因此我的意见是使用著名的

sudo apt-get install [package]

您可以[package]用错误消息中的任何包替换它们。您也可以将它们原封不动地放在列表中(只需复制并粘贴即可)。作为我的例子,我可以输入

sudo apt-get install gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

如果你想做

sudo apt-get dist-upgrade

-s出于某种原因,只需确保使用模拟选项( )检查包列表sudo apt-get -s dist-upgrade,或者不使用-s选项,您可以在接受之前终止执行。(您始终可以选择选项否)

相关内容