无法纠正问题,您持有破损的包裹

无法纠正问题,您持有破损的包裹

从 10.04 升级到 12.04 后,我尝试安装不同的软件包。例如 ia32-libs 和 skype (4.0)。

当尝试安装这些时,我收到“无法纠正问题,您持有损坏的包”错误消息。

命令输出:

sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

运行此命令后:

sudo dpkg --configure -a
foo@foo:~$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

答案1

该特定错误消息可能表明您已持有包裹,但也可能表明存在不同的问题。

您可以获得以下列表实际的持有以下包裹:

dpkg --get-selections | grep hold

如果没有,或者看起来没有相关内容,那么可能是其他原因。收到错误消息时,请仔细检查您尝试的命令的输出,因为除了错误消息之外,该命令的完整输出中可能还有其他线索。

另一种故障排除方法可能是使用 aptitude 而不是 apt-get 来尝试安装您的软件包:

sudo aptitude install <packagename>

Aptitude 不会轻易放弃,并会尝试寻找可能涉及修改其他软件包的解决方案。它可能会为您提供有关问题的更多解释以及修复问题的选项。

有时 aptitude 会急于删除或降级大量软件包以满足您的请求,在这种情况下,重试会-f改变其优先级,并帮助它提出涉及删除/降级更少软件包的解决方案,即使这意味着并非所有您请求的更改都可以继续进行:

sudo aptitude -f install <packagename>

编辑:这是一个老答案,自从编写了较新的 APT 前端(简称为)以来apt,它已成为最终用户首选的命令行 APT 界面。它仍然不是瑞士军刀aptitude,但它比更人性化一些apt-get。我还没有花时间研究它在上述情况下如何提供帮助,但它值得使用。

答案2

我也遇到过这种情况。我所做的就是sudo apt-get update解决了我的问题。祝你好运。

答案3

我在全新安装 14.04 时遇到了类似的情况,中没有列出任何文件dpkg --get-selections | grep hold,之后也没有任何效果sudo apt-get update

什么做过对我来说修复它很简单

sudo apt-get autoremove

当我尝试重新安装失败的软件包时,它运行正常。耶!

答案4

我遇到了类似的缺少依赖项的情况。 就我而言,我尝试在 ubuntu saucy salamander 13.10 上安装 curl...

错误表明依赖项需要 curl3 库的早期版本。

我可以尝试使用 aptitude 安装 curl 来降级到早期版本。

当它注意到缺少的依赖项及其原因(需要早期版本的库文件)时,它给了我几种如何响应的选项…… y// n/q

Y将会中止安装,N寻找其他选项,然后Q直接退出,不执行任何操作,留下损坏的软件包。

我选择了N,它给了我一个选项,让我将库文件降级到早期版本。所以我照做了,curl 完成了安装,没有任何错误。

  • 安装后我可能会再次考虑升级库文件,但到目前为止一切都很好。

相关内容