dpkg如何删除/安装未完全安装的软件包?

・5 分钟阅读

问题

现在我无法更新、安装新软件包或执行任何apt-get命令,因为它们都试图处理这个损坏的软件包并一直失败。我得到的错误是:


Setting up google-chrome-stable (33.0.1750.152-1) ...


/var/lib/dpkg/info/google-chrome-stable.postinst: 124: /var/lib/dpkg/info/google-chrome-stable.postinst: update-alternatives: not found


dpkg: error processing google-chrome-stable (--configure):


 subprocess installed post-installation script returned error exit status 127


Setting up bsnes (0.088-7) ...


/var/lib/dpkg/info/bsnes.postinst: 5: /var/lib/dpkg/info/bsnes.postinst: update-alternatives: not found


dpkg: error processing bsnes (--configure):


 subprocess installed post-installation script returned error exit status 127


Errors were encountered while processing:


 google-chrome-stable


 bsnes


E: Sub-process /usr/bin/dpkg returned an error code (1)



通常建议的修复方法是运行以下命令:


sudo apt-get clean && sudo apt-get autoremove


sudo apt-get -f install


sudo dpkg --configure -a



然而,这不起作用。


回答1

对于高级用户,请自担风险。

根据以下错误消息:


subprocess installed post-installation script returned error exit status 127



你可能需要编辑 /var/lib/dpkg/info/[package_name].postinst 并注释掉一切(或者尝试理解它,并确定问题),然后再尝试apt-get。


回答2
  • Autoclean清除本地存储库中检索到的包文件。

    
    sudo apt-get autoclean
    
    
    
    
  • 强制安装/删除软件包。小心使用

    
    sudo apt-get --force-yes install <pkgname>
    
    
    
    

    
    sudo apt-get --force-yes remove <pkgname>
    
    
    
    

同样,你可以使用dpkg来安装,删除和清除包。

  • 安装

    
    sudo dpkg -i <pkgname>
    
    
    
    
  • 移除

    
    sudo dpkg -r <pkgname>
    
    
    
    
  • 清除

    
    sudo dpkg -P <pkgname>
    
    
    
    

回答3

sudo apt-get install --reinstall dpkg



安装dpkg之后,其他软件包就会自动安装。


回答4

如果一切都失败了,首先将目录更改为:


cd /var/lib/dpkg/info



然后我用.postinst删除了所有东西:

 
sudo rm *.postinst



 

然后更新库


sudo apt-get update



一切都回到正常状态了


sudo apt-get --force-yes install openjdk-7-jre-headless




回答5

你可以删除director /var/lib/dpkg/info/中的软件包文件,并且更新源代码。


sudo rm /var/lib/dpkg/info/[package_name].*


sudo dpkg --configure -a


sudo apt-get update



然后,重新安装你的软件包 sudo apt-get install [package_name]


回答6

如果所有其他都失败,你可以通过dpkg手动删除包,运行 sudo dpkg -P bsnes 应该清除bsnes


回答7

我的例子apt-get install -f 。 我安装了mysql-workbench-community

以前尝试过apt autoclean

我看到dpkg错误是由于一些缺少的依赖项,可以通过在强制模式下安装来解决(安装依赖项),


回答8

sudo apt-get install -f --reinstall coreutils init-system-helpers



运行上面命令之后,你可以照常安装/升级/删除/清除任何软件包了。


讨论
Tianye profile image