E: dpkg被中断...运行'sudo dpkg --configure -a'

我正在使用apt-get命令进行升级,由于我的ISP在半路上向我施加了公平使用政策,所以花费的时间异常长。
在外面坐了一会儿,看着雨下了一段时间后,我的电子设备恢复了意识,所以我回去继续升级,但我的终端却责备我说:
"E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem."

最后一段能看清的信息是这样的:
Installing (ri/RDoc) documention for (stuff and such)
ERROR:  Could not find a valid gem 'watobo-0.9.8.724.gem' (>= 0) in any repository
rm: cannot remove `watobo-0.9.8.724.gem': No such file or directory

Setting up metasploit (4.3.0-bt1) ...
Upgrading Pre-Existing Installation...
/opt/metasploit/postgresql/scripts/ctl.sh : postgresql  (pid 1191) already running
prosvc is running
metasploit is running
[*]
[*] Attempting to update the Metasploit Framework...
[*]

一直延伸数英里,谈论宝石储藏、红宝石等我渴望拥有的东西。一直到:
A    lib/gemcache/ruby/1.9.1/gems/state_machine-1.1.2/gemfiles/active_record-2.1.2.gemfile.lock

...然后它就一整晚都停在那里了。 如果我停止它,我还会遇到dpkg错误吗(万一不会的话),如果是的话,我需要做什么才能继续使用apt-get命令和它的超级牛力?
3个回答

E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
这个错误实际上告诉你出了什么问题:`dpkg`被中断了,因此包没有正确配置。
运行它告诉你的命令`sudo dpkg --configure -a`,它应该能够自行纠正。
如果不行,尝试运行`sudo apt-get install -f`(修复损坏的软件包),然后再次运行`sudo dpkg --configure -a`。
只要确保你有可用的互联网访问,以便下载任何依赖项。
如果你的升级是指`apt-get dist-upgrade`,那么这些说明可能不适用。如果你尝试进行发行版升级(例如11.10 → 12.04),请编辑你的问题以反映这一点。

我也做了同样的事情,但是没有成功。请查看这个链接:http://askubuntu.com/questions/469553/how-to-install-flash-plugin-on-ubuntu-14-04-lts-64-bit-version - agha rehan abbas
运行dpkg命令解决了我的问题。我想从4.8内核回滚到4.4时可能出现了一些问题,在配置过程中进行了一整套版本检查。 - mendota
3运行 "apt-get install -f" 命令也会给我显示 "dpkg 被打断" 的消息... - fei0x
1对我来说,这导致了最初出错的软件包尝试安装,并导致操作系统挂起。 - Jamie Marshall
不错。不知怎么地,对我起了作用。 - saumilsdk
这真是太可预测了……这又让我回到了最初的错误。输入命令'dpkg --configure -a'后,系统会停下来冻结一会儿,然后要求输入密码,之后无论我尝试什么都告诉我需要运行……等等……命令'dpkg --configure -a'。使用apt-get install -f也只会得到完全相同的错误。而且Stack Exchange似乎一直保持着“解决方案”百分之百无效的记录,它们只会导致你试图通过它们修复的原始错误!哇哦! - undefined

我尝试了@TrailRider的解决方案,但对我没有起作用。 我通过以下方法解决了这个问题:
  1. 删除更新文件:

    cd /var/lib/dpkg/updates
    
    sudo rm *
    
  2. 尝试更新和升级:

    sudo apt update
    
    sudo apt upgrade
    
  3. 但是我无法进行操作,显示如下信息:

    E: 无法获取锁定 /var/lib/dpkg/lock
    

    这意味着有其他程序正在更新系统或安装新软件。

  4. 重要提示:在立即删除之前,请检查是否有其他进程锁定了 dpkg 文件。如果是这种情况,您应该等待它们完成。

  5. 检查是否有其他程序锁定了 dpkg 文件:

    ps aux | grep -i apt
    

    如果只有一个输出,类似于以下内容:

    S+   19:16   0:00 grep --color=auto -i apt
    

    那么你很幸运。您可以手动逐个验证 dpkg 锁定文件:

    sudo lsof /var/lib/dpkg/lock
    sudo lsof /var/lib/apt/lists/lock
    sudo lsof /var/cache/apt/archives/lock
    

    要删除它们,请使用以下命令:

    sudo rm /var/lib/apt/lists/lock
    sudo rm /var/cache/apt/archives/lock
    sudo rm /var/lib/dpkg/lock
    
  6. 再次尝试:

    sudo dpkg --configure -a
    

    应该可以正常工作。

  7. 您应该尝试恢复您当时正在安装的内容:

    sudo apt update
    sudo apt upgrade
    

    这将继续进行进程并保持系统稳定。

这就是我修好它的方法。

注意:我建议你无论你尝试什么,都要保留对你所应用的命令进行跟踪/日志记录的记录,这种预防措施将有助于他人在出现问题时帮助你。


请考虑给我一个“OP”的头衔,因为你帮助我解救了在升级20.04.1时困扰了我一周的笔记本电脑。 - Sayan Dey
1非常非常非常非常感谢!!!..它起作用了....我首先必须杀掉后台运行的进程,我能够使用您的建议ps aux | grep -i apt看到它..它显示了两个进程,所以我杀掉了第一个并保留了S+ 19:16 0:00 grep --color=auto -i apt,然后我按照您说的做了一切。 - coderina

启动到GRUB菜单,选择Ubuntu的高级选项,然后选择第二个选项(该选项末尾带有(恢复模式))。然后运行sudo dpkg --configure -a来修复问题。以下详细说明逐步描述了如何执行此操作。

进入恢复模式

在计算机启动时,出现主板/计算机制造商的标志屏幕后,立即按住Shift键,这将显示GNU GRUB菜单屏幕。对于UEFI,按下Esc键(可能需要按多次)以进入GNU GRUB菜单屏幕。有时,制造商的标志屏幕是Windows引导加载程序的一部分,因此当您启动计算机时,它会直接进入GNU GRUB菜单屏幕,此时按下Shift键是不必要的。

按下左侧Shift键的时机可能有些棘手,所以如果您错过了,可能需要再试一次。如果这样还不起作用,请尝试我无法在启动时显示GRUB菜单的解决方法。然后运行sudo dpkg --configure -a'来纠正问题。

您将看到一个类似于这样的GNU GRUB菜单屏幕。选择Ubuntu的高级选项并按下Enter键。

enter image description here

一个新的紫色屏幕将出现,显示一个内核列表,其中包括正常启动内核或恢复模式的选项。

enter image description here

按下箭头键,直到选择顶部的第二个条目(具有描述中的恢复模式),然后按两次“Enter”键。
现在您应该看到此恢复菜单:

recovery menu

使用箭头键向下滚动到“网络”(在恢复菜单中从底部开始的第三个条目),然后按下“Enter”键。
使用箭头键向下滚动到“root”(在恢复菜单中从底部开始的第二个条目),然后按下“Enter”键。
现在您应该看到一个root提示符,您可以从中运行命令。
运行“sudo dpkg --configure -a”命令以纠正问题。
运行以下命令。
sudo mount -o remount,rw /
fsck -f /
sudo dpkg --configure -a
sudo apt-get install -f