apt-get 消息“持有损坏的软件包”是什么意思?

apt-get 消息“持有损坏的软件包”是什么意思?

我最近运行了一个命令在 Ubuntu 16.04 上安装软件包apt-get

% sudo apt-get install <package>

apt-get无法安装,它打印了一些状态消息,最后一行是:

[ output truncated... ]
E: Unable to correct problems, you have held broken packages.

据我所知,aptdpkg有一个标记软件包的系统,您可以在其中表示有关软件包安装状态的首选项。
您可以使用以下命令查看此列表

dpkg -l

因此,结果列表中状态为“所需”或“安装我”的所有包都可用于在另一个系统上重新创建应用程序的安装状态。
持有破损的包裹与此有关吗?即我的软件包安装首选项如dpkg -l表达软件包状态所示,这样如果apt-get要安装它们-最终结果会产生依赖性冲突吗?
拥有是什么意思持有破损的包裹

答案1

该消息表明 apt 没有更改任何内容,并且它尝试解决的损坏的软件包保持相同的状态。在这种情况下,“hold”被用作“keep”。如果我必须改写的话,它会说:

由于无法纠正问题,软件包保持不变。

答案2

另一个答案不完整,也不完全正确。

dpkg具有“保持”状态。本质上,这种状态意味着您不希望系统升级给定状态下的软件包,即使有更新的版本。该状态只能手动设置。要确定是否有任何处于此状态的包,请运行dpkg -l|grep ^h。如果产生任何输出,则该包将处于保留状态。当存在处于该状态的软件包并且apt需要升级它们时,您会收到您看到的错误消息。

不幸的是,你可能apt如果看到某个包并想要安装它,但由于 apt pinning 或其他原因而无法安装,请参阅错误消息。这种情况可以通过(暂时?)授予apt安装给定文件的权限来解决;例如,通过显式列出要安装的软件包和版本,通过将参数传递-t target-distribution给 apt,或者通过更改固定配置。

相关内容