![apt-get 消息“持有损坏的软件包”是什么意思?](https://linux22.com/image/90756/apt-get%20%E6%B6%88%E6%81%AF%E2%80%9C%E6%8C%81%E6%9C%89%E6%8D%9F%E5%9D%8F%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%E2%80%9D%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%EF%BC%9F.png)
我最近运行了一个命令在 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,或者通过更改固定配置。