删除 Ubuntu 中破损的软件包

当我试图删除一个包时,出现了一个错误,因此它处于破碎状态。我尝试了以下方法:

sudo dpkg --remove --force-remove-reinstreq rvm

产出:

(Reading database ... 41743 files and directories currently installed.)
Removing rvm (1.29.3-1) ...
bash: rvm: command not found
dpkg: error processing package rvm (--purge):
subprocess installed pre-removal script returned error exit status 127
Errors were encountered while processing:
rvm

.

sudo dpkg --purge rvm

输出: 与上述相同

sudo dpkg -i --force-overwrite package

产出:

dpkg: error processing archive rvm (--install):
cannot access archive: No such file or directory
Errors were encountered while processing:
rvm

有没有办法强制删除它,忽略所有错误? 我在 WSL 上使用 Ubuntu 16.04。

139329 次浏览

我遇到了这个问题与一个破损的包,Rvm。我尝试了很多东西,像 sudo apt install -fsudo dpkg --purge --force-all rvm,但没有工作。最后,我终于找到了一篇博客文章,解释了如何在 Debian/Ubuntu 上删除破损的软件包。

这是步骤。

  1. /var/lib/dpkg/info中查找包,例如使用: ls -l /var/lib/dpkg/info | grep <package>

  2. 将包文件夹移动到另一个位置,就像我之前提到的博客文章中建议的那样。

     sudo mv /var/lib/dpkg/info/<package>.* /tmp/
    
  3. 运行以下命令:

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

作为一个例子,我通过在终端中执行以下命令解决了这个问题:

sudo mv /var/lib/dpkg/info/rvm.* /tmp/
sudo dpkg --remove --force-remove-reinstreq rvm

以根用户身份执行命令

sudo apt-get install -f

您需要提升包管理器的特权。

  1. 安装 Synaptic。

    sudo apt-get install synaptic
    
  2. Open synaptic package manager and search for the package which you want to remove or install or change

Done!

所以在我的情况下 perl-modules-5.22是腐败的。 我按照公认答案中的步骤做了,但这并没有解决我的问题。

我还必须:

sudo apt remove -f perl-modules-5.22
sudo apt upgrade -y

sudo apt remove -f <package_name>

例句: sudo apt remove mongo*将删除所有 mongo db 包。

我遇到过类似的问题,一个包丢失了文件,因此无法删除。错误消息是“ StopingService”。不能停下来。服务,服务没有运行” 由于服务文件丢失,服务未运行。

- 那么清除包裹不是更容易吗?-我想不是。

还是: 运行资质

sudo aptitude

找到有问题的软件包,检查它的信息,核实哪些版本存在。 安装一个不同的版本从你现有的(理想情况下,一个补丁版本上升或下降,你必须避免太多的变化)-它会问你如何处理丢失的文件-选择替换的版本正在安装

sudo apt-get install <package>=<version>

一旦所有这些丢失的文件被替换,您应该能够进行标准的清除

sudo apt-get purge <package>