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


apt – 如何删除Ubuntu中损坏的软件包

,

问题描述

我无法删除破损的包裹。使用以下命令:sudo apt-get -f install,但得到以下响应:

Preparing to unpack .../nodejs_0.10.28-1chl1~trusty1_amd64.deb ...
Unpacking nodejs (0.10.28-1chl1~trusty1) over (0.10.25~dfsg2-2ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/node.1.gz', which is also in package nodejs-legacy 0.10.25~dfsg2-2ubuntu1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Processing triggers for man-db (2.6.7.1-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

我尝试了各种命令

 2015  sudo apt-get clean
 2020  sudo dpkg --configure -a
 2023  sudo apt-get autoremove
 2034  sudo apt-get upgrade && sudo apt-get -f install

但是我没有得到任何结果。我无法安装突触。有什么想法可以删除损坏的包装吗?

最佳方案

运行此命令以删除ubuntu中损坏的软件包。

sudo dpkg --remove --force-remove-reinstreq package_name 

删除软件包后,使用命令更新系统

sudo apt-get update

成功更新后重新启动系统。

次佳方案

我发现:

sudo dpkg --remove --force-remove-reinstreq <packagename>

效果最好。如果它提示您由于另一个软件包所依赖而无法删除该软件包,则也请删除该另一个软件包。您必须多次重复此步骤,然后重新安装已删除的软件包。

force-remove-reinstreq是删除程序包的”nuclear option”。只有根据要删除的软件包有另一个软件包时,此操作才会失败-同样,在这种情况下,请删除相关软件包。

第三种方案

打开终端并使用以下命令

sudo dpkg --purge nodejs-legacy
sudo apt-get install -f

它应该可以解决您的问题。

第四种方案

这解决了我的问题:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb

第五种方案

以上都不对我有用。最终,我编辑了/var /lib /dpkg /status文件,并从那里删除了软件包。

艰难的是我不建议这样做,即使其他事情失败了…

第六种方案

打开您的终端,然后逐行粘贴这些行

sudo rm -rf  /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
sudo apt-get autoclean
sudo apt-get update
sudo apt-get upgrade

然后再试一次

参考资料

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