如何修复“包处于非常糟糕的不一致状态”错误?

Ben*_*ler 115 package-management

我无法更新我的系统,因为它在安装第三方更新 (zramswap-enabler) 时冻结!

有时我会在更新管理器中收到以下消息:

无法初始化包信息 初始化包信息时出现无法解决的问题。

请针对“update-manager”包报告此错误,并包含以下错误消息:

E:The package zramswap-enabler needs to be reinstalled, but I can't find an archive for it.

我试图删除 zramswap-enabler,但这是不可能的,因为我收到以下消息:

dpkg: error processing zramswap-enabler (--remove):
 Package is in a very bad inconsistent state - you should
 reinstall it before attempting a removal.
Errors were encountered while processing:
 zramswap-enabler
E: Sub-process /usr/bin/dpkg returned an error code (1)
Run Code Online (Sandbox Code Playgroud)

其实我真的会重新安装那个包,但它无法做到!如果我删除这个第三方 PPA,那么系统会警告我一个非常非常严重的问题。

那么为什么我不能安装/重新安装/删除/更新这个包,如果我尝试更新,为什么会冻结更新程序?

nan*_*rad 140

编辑出问题并添加为答案。

  1. 确保您的 PPA 已设置。

  2. 通过以下命令删除损坏的包:

    sudo dpkg --remove --force-remove-reinstreq zramswap-enabler
    
    Run Code Online (Sandbox Code Playgroud)
  3. 再次安装软件包:

    sudo apt-get install zramswap-enabler
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重新启动(非必要)后,您就可以正确安装更新了!

实际上,您可以使用此解决方案修复任何“包处于非常糟糕的不一致状态”问题!

  • 当“cpp-5”以某种方式破坏了依赖问题时,我必须结合使用“--force-remove-reinstreq”和“--purge --force-depends”。 (4认同)

Ham*_*uel 88

在几乎搜索了整个 AskUbuntu 和 Ubuntu 论坛之后,这对我有用!(来源)。我正在运行 Lubuntu 14.04

sudo mv /var/lib/dpkg/info/<packagename>.* /tmp/
sudo dpkg --remove --force-remove-reinstreq <packagename>
sudo apt-get remove <packagename>
sudo apt-get autoremove && sudo apt-get autoclean
Run Code Online (Sandbox Code Playgroud)

  • 我已完成以下操作,但出现错误: `sudo mv /var/lib/dpkg/info/libgcc1:i386.* /tmp/` `sudo dpkg --remove --force-remove-reinstreq libgcc1:i386` dpkg:依赖性问题阻止删除 libgcc1:i386:libc6:i386 依赖于 libgcc1。dpkg:处理包 libgcc1:i386 时出错(--remove):依赖性问题 - 未删除处理时遇到错误:libgcc1:i386 (3认同)
  • 最后!当 dpkg 和 apt 不会删除或重新安装软件包时,这可以解决问题 (2认同)

小智 22

我遇到了比这更糟糕的情况。我不得不通过强制依赖来删除半安装的包。

sudo dpkg --remove --force-remove-reinstreq --force-depends <package-name>
Run Code Online (Sandbox Code Playgroud)

然后我不得不重新安装它们

sudo apt-get -f install
Run Code Online (Sandbox Code Playgroud)

这应该可以解决任何问题。但是,当您尝试执行此操作时,请确保您具有网络连接。否则,您将不得不经历更多的麻烦。


Dav*_*ter 9

其他答案是正确的,提到删除软件包,然后apt-get install -f重新安装损坏的软件包(并完全安装其他半安装的软件包)。但是,这可以一步完成:

sudo apt-get install -f --reinstall zramswap-enabler
Run Code Online (Sandbox Code Playgroud)