Apt/Synaptic需要重新安装软件包,但找不到其存档文件。

运行 Synaptic 时,我收到以下错误消息:

E: The package hl1440lpr needs to be reinstalled, but I can't find an archive for it.
E: Internal error opening cache (1). Please report.

接受消息后,Synaptic将退出。

3你是在遵循哪个指南/网站的说明并遇到了什么问题? - Panther
7个回答

嗯,我们可能需要几个步骤来解决这个问题。
  1. 从以下命令开始:

    sudo dpkg --remove --force-all hl1440lpr
    
  2. 如果失败:

    sudo rm -i /var/lib/dpkg/info/hl1440lpr.*
    sudo dpkg --remove --force-remove-reinstreq hl1440lpr
    
  3. 确认 Apt 已修复。执行以下命令不应返回任何错误:

    sudo apt-get update
    

我在升级到Ubuntu 12.10的过程中遇到了这个情况,但不小心在中途将电脑挂起。唤醒电脑后,升级(显然)失败了,并且在电池电量显示旁边出现了一个红色图标,上面写着“E:需要重新安装xterm软件包,但我找不到它的存档。”按照这里的建议执行了sudo dpkg --remove --force-all xterm之后,一切都解决了。谢谢!顺便说一句,如果你能把sodo改成sudo就好了,我不是吹毛求疵,但对于不了解Linux的人来说,这可能会让他们迷惑。 - dylan murphy
1谢谢bodhi.zazen。你的解决方案对我的有问题的兄弟驱动程序dcpj4110dwlpr起作用了。 - v2r
1太好了!第一个解决方案失败了,导致进程挂起,但第二个解决方案成功了。谢谢!(在Debian服务器上尝试过) - Shautieh
只是对@panther的一个补充,sudo dpkg --remove --force-all hl1440lpr 对其他软件包也有效,我的问题是libperl5.22在更新过程中似乎崩溃了。唯一的问题是它需要我以root权限运行。由于我在Google Cloud上,su命令在我设置密码之前无法使用。 - JustAGrump

原来,这个问题无法通过常规命令修复,因为我在安装软件包之后禁用了“multiverse”存储库。我在其他地方的一篇帖子中读到要这样做,直到我阅读另一篇帖子时才让我再次确认它是“启用”的,然后我意识到我一开始就不应该禁用它。
重新启用multiverse存储库使我能够重新安装该软件包。
所以,一般来说,如果出现这种错误,确保您没有禁用提供此软件包的软件源。

dpkg --remove --force-remove-reinstreq   broken---stuff

(加上文件擦除)
工作得很好。Synaptic应该提供这个功能,而不是崩溃并让人们陷入一团糟。Synaptic不友好。

3使用这个命令时必须小心,取决于你要删除的内容,它可能会导致整个桌面被删除。 - ravery

只需以root身份打开/var/lib/dpkg/status文件,然后从中删除相应的条目。

非常重要。这解决了我的问题。 - Wrichik Basu

我使用了这个步骤:

sudo rm -i /var/lib/dpkg/info/package.*
sudo dpkg --remove --force-remove-reinstreq package

使用后,仍然存在残留配置。
sudo dpkg --purge package_name

一切都修好了。

这应该是被接受的答案! - realtebo

包错误可能是由于突然关闭正在进行的软件包升级引起的。为此,您可以使用以下Linux命令。
sudo apt-get --fix-broken install

在终端上运行以下命令:
1)sudo cp /var/lib/dpkg/status status.bkp 2)sudo gedit /var/lib/dpkg/status
3)然后搜索出现错误的软件包名称。 请注意,在我们的情况下,问题软件包是‘flectra’,处于‘purge reinstreq half-installed’状态。当您找到问题软件包后,删除与该软件包相关的信息部分并保存文件。 在我们的情况下,我们删除了矩形框内与‘flectra’相关的部分,并保存了文件。 完成后关闭‘gedit’。
然后尝试安装您想要安装的软件包,您将不再遇到错误 :)