Answers:
我有几次相同的问题。不要先做
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的回答。这也是一个很好的解决方案。
谢谢。
这是什么意思?
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>
首先,如上所述,请不要对任何生产系统进行升级!尽管dist-upgrade可以“解决”保留的软件包,但绝对不是解决此问题的方法,如果在不知道对系统有何影响的情况下运行它,很可能会给您带来更多的痛苦。
如果升级软件包需要安装其他软件包,则在运行时将“保留” sudo apt-get upgrade
。
如上所述,您可以通过显式运行来手动安装这些“保留”软件包,sudo apt-get install [paste kept back packages here]
但这会将这些软件包标记为“手动安装”,这通常不是我们想要的。
要自动安装升级“保留”软件包所需的任何其他软件包,同时不将“保留”软件包标记为手动安装,只需运行即可sudo apt-get --with-new-pkgs upgrade
。
我在博客中包含了这个答案。如果您想看到可以从此链接转到那里。
当您尝试升级(apt-get upgrade
)时,以上错误在Ubuntu终端中非常常见。这通常是因为您安装的一个软件包的依赖关系已更改。为了升级,您还需要先进行升级。因此,解决该问题非常简单。您将能够看到这些错误消息下方包含的软件包。作为示例,我可以在列表中看到以下软件包:
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
出于某种原因,只需确保使用Simulation选项-s
(sudo apt-get -s dist-upgrade
)检查软件包列表,否则,如果没有该-s
选项,您可以在接受之前终止执行。(您始终可以选择选项no)
本文很好地总结了为什么会发生这种情况:
如果对已安装的某个软件包的依赖关系发生了更改,因此必须安装新的软件包才能执行升级,则该软件包将列为“保留”。
解决方案是使用以下命令显式安装它们
sudo apt install [packages]
您可能希望将这些软件包标记为自动安装,除非您自己关心它们,而不仅仅是满足依赖关系。
sudo apt-mark auto [packages]
为了避免这种情况的发生,我建议使用
sudo apt --with-new-pkgs upgrade
在将来升级软件包,从而允许安装新软件包来满足依赖性方面的更改。
--with-new-pkgs
!让我再次强调, “ 请勿对任何生产系统进行分布式升级!尽管分布式升级将“解决”保留的软件包,但这绝对不是解决此问题的方法,并且如果您愿意,可能会给您带来更多的痛苦而不是好的在不知道对系统有何影响的情况下运行它。”