Ubuntu 用户有时会遇到apt
以下apt-get
形式的错误:
The package some-package needs to be reinstalled, but I can't find an archive for it.
我想知道是什么导致了这个错误,以便我可以重现它并尝试找到修复它的安全方法,即使损坏的包很重要并且有很多依赖项。这段APT 源代码可能会提供一些线索,但我不知道包如何获得导致错误的状态。
如何在我的 (Ubuntu MATE 17.10) 系统上测试时产生此错误?
这是由最近的 Ask Ubuntu 问题和我长期以来对关闭有关针对Apt/Synaptic 的此错误的问题的不适所提示的,需要重新安装软件包但找不到它的存档,其答案用于dpkg --force-all
删除有问题的软件包。匿名反馈表明此解决方案已对许多用户有效,但我不确定使用--force-all
不会导致以后出现问题,或者使用此方法删除 APT 等重要软件包是个好主意。
错误“Apt/Synaptic 需要重新安装软件包但找不到它的存档”有时并不具体。
我看到此错误的最常见时间是在将 Ubuntu 从一个版本升级到另一个版本时。
注意:Ubuntu 正在从 apt-get 转换为 apt ,但我在这篇文章中使用的是 apt-get。有关更多信息
man apt
,请参阅https://www.debian.org/doc/manuals/debian-reference/ch02.en.html此错误的最常见原因是用户安装了一个包,然后删除了 .deb,通常使用
sudo apt-get clean
http://manpages.ubuntu.com/manpages/zesty/man8/apt-get.8.html
然后,在某个时候,
dpkg --reconfigure
被用户调用,或者通过升级,或者在某个时候用户尝试重新安装软件包被重新安装sudo apt-get --reinstall foo
或某些变体。如果 apt 无法在存储库中找到 .deb,或者是因为软件包被删除(罕见),存储库已从系统中删除,或者升级并且软件包不在新存储库中,您将收到错误“Apt/Synaptic需要重新安装包,但找不到它的存档”
但错误可能来自其他原因。
引用 dpkg 手册页中的相关部分(有关详细信息,请参见http://manpages.ubuntu.com/manpages/trusty/man1/dpkg.1.html)
如果手册页是 tl;dr -> 作为安装的一部分,.deb / dpkg / apt 运行安装前/安装后脚本和其他功能。如果这些安装/删除脚本由于各种原因而失败,则包将被标记为“半安装”(或未安装/未安装以外的某种状态)。在这种不干净的状态下,您有时可能还会看到错误“Apt/Synaptic 需要重新安装软件包但找不到它的存档”。在此示例中,问题不是缺少存档,而是安装前/安装后脚本中的问题,无法通过重新运行它们来解决。因此,错误有时是非特定的。
如何管理损坏的包裹
首先尝试通过确保启用适当的 ppa / 存储库来修复依赖关系,例如 Universe 或任何需要的存储库。
如何启用“Universe”存储库?
什么是 PPA 以及如何使用它们?
然后臭名昭著
如果需要帮助,请阅读任何输出和错误消息并在此处发布命令和输出。
尝试重新配置
这将运行配置脚本。您可以指定一个包而不是 -a,但是当您遇到问题时,-a 会更有帮助。
如果需要帮助,请阅读任何输出和错误消息并在此处发布命令和输出。
尝试查看任何失败的脚本,并尽可能修复脚本中的错误/问题。
如有必要,请尝试删除有问题的包裹。您必须非常小心,您可以强制删除关键包或更糟糕的关键包集。以下命令从礼貌到不太礼貌到彻底强制。按顺序尝试它们。
如果其中任何一个有效,请运行
sudo apt-get update && sudo apt-get upgrade
,您可能还需要运行sudo apt-get -f install
和/或sudo dpkg --configure -a
。如果失败,您将需要手动删除软件包。这可能涉及查找系统上的所有组件并手动删除它们。
使用以下过程
删除 dpkg 信息(见上文)
请注意,不要在此处删除超出需要的内容。
最后删除有问题的包
然后你应该能够使用 apt
仅在必要时查找并手动删除系统上剩余的任何文件。这是一个手动过程,可能在
/etc
手册页或共享数据中包含配置文件。使用 find 或 locate 来识别潜在的剩余文件。显然,删除系统文件时应该非常小心。不要删除你不理解的东西,不要
rm -Rf
在不了解该命令将做什么的情况下使用。rm -i
可能更好,因为-i
选项要求确认。重新创建此问题
您可以通过手动编辑其中任何软件包的 dpkg 状态文件
/var/lib/dpkg/info
并将状态更改为已安装一半来重现此错误消息编辑状态行,使其显示为
然后尝试运行
apt-get
。如果这不起作用,请从 ppa 安装包,运行 apt-get clean,删除 ppa,然后尝试重新安装或重新配置包。
很抱歉这篇长文,但我希望这能让您深入了解这个复杂错误消息“Apt/Synaptic 需要重新安装软件包但找不到它的存档”的原因和解决方法