当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

前几天我去安装了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]

Doc

第六种办法

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

第七种办法

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

以前尝试过apt autoclean

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2158.html,未经允许,请勿转载。