如何删除/安装未完全安装的软件包?
前几天我去安装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
在上面运行之后,您可以照常安装/升级/删除/清除任何软件包。