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


93

我无法更新我的系统,因为它在安装第三方更新(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)

实际上,我确实会重新安装该程序包,但是它无法做到!如果删除此第三方PPA,则系统警告我有关非常非常严重的问题。

那么,为什么我不能安装/重新安装/删除/更新此软件包,为什么在尝试更新时冻结更新程序?


Answers:


116

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

  1. 确保已设置PPA。

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

    sudo dpkg --remove --force-remove-reinstreq zramswap-enabler
    
  3. 再次安装软件包:

    sudo apt-get install zramswap-enabler
    
  4. 重新启动后(不必要),您可以正确安装更新!

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


1
@CharlesL没问题!请注意,此答案是社区Wiki,该解决方案最初是由问题的作者找到的,所以我对此不以为然。我所做的只是编辑并重新组织以将其转化为答案。
ζ--

我遇到了一些麻烦(14.04至16.04)。“ gcc-doc”无效。错误消息显示/var/cache/apt/archives/gcc-doc_4%3a5.3.1-1ubuntu1_amd64.deb,并且工具拒绝名称中的'%',因此全名也不起作用。我最终删除了文件,直到满意为止-参见ubuntuforums.org/showthread.php?t=2321414&page=2
淡出

1
我不得不使用的组合--force-remove-reinstreq--purge --force-dependscpp-5某种程度上打破了依赖问题。
2008年

70

在几乎遍历整个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

2
最后!当dpkg和apt不会删除或重新安装软件包时
-abaelter 2015年

1
谢谢。这节省了我很多时间!我尝试跳过最后一行,然后跳过a apt-get install...,必须重新开始并执行所有四行,然后才可以清除我的包。:)
Ryan H.

1
唯一可行的唯一答案。
twojr

1
从14.04升级后,当我遇到gcc-doc和cpp-doc问题时,这很有用。我从ppa:ubuntu-toolchain-r / test安装了更多新工具,他们搞砸了所有东西。故事的寓意,在升级到新版本之前清除ppas。但是这个技巧帮助我以后解决了问题。
魅力1998年

1
这对我有用。我删除了1个文件来纠正我的仙人掌删除问题。已删除/var/lib/dpkg/info/cacti.list
Mad Man

12

我的情况比这更糟。我必须通过强制依赖项来删除半安装的软件包。

sudo dpkg --remove --force-remove-reinstreq --force-depends <package-name>

然后我必须重新安装它们

sudo apt-get -f install

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


1
我收到一个错误:dpkg:处理软件包debconf(--configure)时出错:软件包处于非常糟糕的不一致状态;您应该在尝试配置之前重新安装它。处理时遇到错误:debconf
IgorGanapolsky

8

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

sudo apt-get install -f --reinstall zramswap-enabler

2

在尝试卸载造成问题的任何东西之前,我会尝试清除安装状态:

apt-get autoclean
apt-get update
apt-get upgrade
apt-get install -f

在大多数情况下,这是一种更好的解决方法,并且至少有一种情况在另一种方法不起作用时帮助了我(因为要删除的软件包有很大的依赖性)


这会产生一个错误:sh: 0: getcwd() failed: No such file or directory /bin/sh: 1: /usr/sbin/dpkg-preconfigure: Permission denied
IgorGanapolsky

1
我猜您是通过非管理员帐户执行此操作的。尝试为每行添加sudo前缀或以root用户身份完全登录(即:“ sudo su”和您的密码或“ su”和管理密码)
Dr. Azrael Tod

1

我对路由守护程序quagga遇到了类似的问题。只是重新安装该软件包对我有用:

# apt-get install -f  
<some output ommited>
dpkg: warning: overriding problem because --force enabled:
Package is in a very bad inconsistent state - you should
reinstall it before attempting a removal.

wget http://security.debian.org/debian-security/pool/updates/main/q/quagga/quagga_0.99.22.4-1+wheezy3_i386.deb
dpkg -i quagga_0.99.22.4-1+wheezy3_i386.deb

现在又可以了:

#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

当我在下载“ wireshark”软件包时断开与互联网的连接时,我也发生了同样的事情。之后,当我尝试重新安装它时,它抛出了相同的错误“程序包处于非常糟糕的不一致状态”。我尝试了所有命令进行安装,清除,删除和重新安装,但没有任何效果。经过一番谷歌搜索后,我偶然发现了一个命令

sudo dpkg -i --force-overwrite /var/cache/apt/archives/libwireshark8_2.2.6+g32dac6a-2ubuntu0.16.04_amd64.deb

libwireshark8_2.2.6+g32dac6a-2ubuntu0.16.04_amd64.deb在目录中更改任何会造成问题的软件包/var/cache/apt/archives/)。

所有问题解决之后。我再次使用移除了包装

sudo apt --purge remove libwireshark8:amd64
sudo apt autoremove 完全取出包装。

之后,我使用再次安装了wireshark sudo apt-get install wireshark
现在一切正常!

参考:
如何解决“子进程usr bin dpkg返回错误代码1”错误?
修复dpkg错误

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.