的输出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
选项,您可以在接受之前终止执行。(您始终可以选择选项否)