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

Hun*_*tte 71 dpkg

我正在使用 apt-get 命令运行升级,它花费了非常长的时间,因为我的 ISP 在中途用他们的公平使用政策打了我的脸。

坐在外面看雨了一会儿,我的电子设备恢复了知觉,所以我回去完成升级,我的终端骂我

"E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem."
Run Code Online (Sandbox Code Playgroud)

最后一点清晰的信息是这样的:

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...
[*]
Run Code Online (Sandbox Code Playgroud)

因此,它持续了数英里,谈论了宝石储藏室、红宝石和我希望拥有的东西。一直到:

A    lib/gemcache/ruby/1.9.1/gems/state_machine-1.1.2/gemfiles/active_record-2.1.2.gemfile.lock
Run Code Online (Sandbox Code Playgroud)

……它在那里坐了一夜。如果我停止它,我是否仍然会收到 dpkg 错误(如果我不会),或者如果是这样,我需要什么来恢复使用 apt-get 命令及其 Super Cow Powers?

Tra*_*der 84

E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
Run Code Online (Sandbox Code Playgroud)

这个错误实际上告诉你到底出了什么问题:dpkg由于包没有正确配置而被中断。

运行它告诉您的命令sudo dpkg --configure -a,它应该能够自行纠正。

如果它没有尝试运行sudo apt-get install -f(修复损坏的包),然后sudo dpkg --configure -a再次尝试运行。

只需确保您可以访问互联网,以便您可以下载任何依赖项。

如果升级是指apt-get dist-upgrade您尝试进行发行版升级(例如 11.10 ? 12.04),则这些说明可能不起作用,那么您需要编辑您的问题以反映这一点。

  • 运行“apt-get install -f”也会给我“dpkg was interrupted”消息...... (2认同)

小智 10

我尝试了@TrailRider 的解决方案,但对我不起作用。我通过以下方式解决它:

  1. 删除更新:

    cd /var/lib/dpkg/updates
    
    sudo rm *
    
    Run Code Online (Sandbox Code Playgroud)
  2. 尝试更新和升级:

    sudo apt update
    
    sudo apt upgrade
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我不能,它说:

    E: Could not get lock /var/lib/dpkg/lock
    
    Run Code Online (Sandbox Code Playgroud)

    这意味着某些程序正在更新系统或安装新软件。

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

  5. 检查某些程序是否正在锁定dpkg文件:

    ps aux | grep -i apt
    
    Run Code Online (Sandbox Code Playgroud)

    如果您只有一个输出,则完成的内容如下:

    S+   19:16   0:00 grep --color=auto -i apt
    
    Run Code Online (Sandbox Code Playgroud)

    你很幸运。您可以删除dpkg锁定文件,您可以使用以下方法手动一一仔细检查:

    sudo lsof /var/lib/dpkg/lock
    sudo lsof /var/lib/apt/lists/lock
    sudo lsof /var/cache/apt/archives/lock
    
    Run Code Online (Sandbox Code Playgroud)

    要删除它们,请使用:

    sudo rm /var/lib/apt/lists/lock
    sudo rm /var/cache/apt/archives/lock
    sudo rm /var/lib/dpkg/lock
    
    Run Code Online (Sandbox Code Playgroud)
  6. 再试一次:

    sudo dpkg --configure -a
    
    Run Code Online (Sandbox Code Playgroud)

    它应该工作。

  7. 您应该尝试使用以下命令恢复当时正在安装的任何内容:

    sudo apt update
    sudo apt upgrade
    
    Run Code Online (Sandbox Code Playgroud)

    这应该恢复该过程并保持一切稳定。

这就是我修复它的方法。

注意:我建议您尝试跟踪/记录正在应用的命令的任何内容,如果出现问题,此预防措施将帮助其他人帮助您。