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

前几天我去安装bsnes,无论出于什么原因安装失败了。 现在,我无法更新,安装新软件包,或基本上执行任何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) 

我一直在谷歌和Ask Ubuntu上搜索,但没有找到可行的解决方案。 通常建议的修复方法是运行以下命令:

 sudo apt-get clean && sudo apt-get autoremove sudo apt-get -f install sudo dpkg --configure -a 

然而,这不起作用。 apt-get命令全部失败,出现与上面相同的错误,dpkg命令无效。 他们经常建议通过Synaptic或命令行清除它的另一件事,它也失败了。

谢谢您的帮助

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

根据以下错误消息:

 subprocess installed post-installation script returned error exit status 127 

您可能想要编辑/var/lib/dpkg/info/[package_name].postinst并评论所有内容(或者更好,尝试理解并确定问题),然后再次尝试apt-get

请注意,尽管在此特定问题中消息涉及“安装后”,但它可能已经提到例如“预删除”或“删除后”(在这种情况下,要编辑的文件的扩展名为.prerm.postrm )。

除了那些已经发布的内容之外,还有一些其他命令可能会有所帮助。

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

     sudo apt-get autoclean 
  • 强制安装/拆除包裹。 ☠请谨慎使用

     sudo apt-get --force-yes install  

     sudo apt-get --force-yes remove  

与往常一样,您可以使用dpkg来安装,删除和清除包。

  • 安装

     sudo dpkg -i  
  • 去掉

     sudo dpkg -r  
  • 清除

     sudo dpkg -P  

因此,经过更多的谷歌搜索并再次仔细阅读错误消息后,似乎需要重新安装dpkg

 sudo apt-get install --reinstall dpkg 

什么告知这是问题(如果有人搜索并看到这个)是update-alternatives: not found错误消息。 重新安装dpkg后,其他软件包继续正常自动安装。

如果一切都失败了。 我做的是我首先将目录更改为:

 cd /var/lib/dpkg/info 

然后我用.postinst删除了所有.postinst

 sudo rm *.postinst 

然后更新存储库

 sudo apt-get update 

然后当我做的时候一切都恢复正常:

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

您可以删除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]

文件

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

在我的情况下, apt-get install -f工作。 我正在安装mysql-workbench-community

以前尝试过apt autoclean

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

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

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