问题描述
前几天我去安装了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
。
请注意,虽然在这个特定问题中该消息涉及”post-installation”,但它可能已经提到过,例如,改为”pre-removal”或”post-removal”(在这种情况下,要编辑的文件的扩展名为.prerm
或.postrm
)。
次佳解决办法
除了您已经发布的那些之外,很少有其他命令可以提供帮助。
-
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>
第三种解决办法
因此,经过更多谷歌搜索并再次仔细阅读错误消息后,似乎需要重新安装dpkg
。
sudo apt-get install --reinstall dpkg
是什么原因,这是问题(如果有人搜索并看到这个)是update-alternatives: not found
在错误消息中。重新安装dpkg后,其他软件包继续正常自动安装。
第四种办法
如果一切都失败了。我做的是我首先将目录更改为:
cd /var/lib/dpkg/info
然后我用.postinst
删除了所有内容:
sudo rm *.postinst
然后更新存储库
sudo apt-get update
然后当我这样做时,一切都恢复正常:
sudo apt-get --force-yes install openjdk-7-jre-headless
第五种办法
您可以删除此/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错误是由于一些缺少的依赖关系,可以通过在强制模式下安装(安装依赖项)来纠正