删除 Ubuntu 中损坏的包

Removing broken packages in 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。

我遇到这个问题是因为一个损坏的包 rvm。我尝试了很多东西,比如 sudo apt install -fsudo dpkg --purge --force-all rvm 但没有任何效果。最后我设法找到了一个博客 post,它解释了如何在 Debian/Ubuntu.

上删除损坏的包

步骤如下。

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

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

     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

以root身份执行命令

sudo apt-get install -f

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

  1. 安装突触包管理器。

    sudo apt-get install synaptic
    
  2. 打开 synaptic 包管理器并搜索您要删除或安装或更改的包

完成!

所以就我而言 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 数据库包。

我有一个类似的问题,一个包丢失了文件,因此无法删除。错误消息是“正在停止服务。无法停止 ***.service,服务未 运行ning” 由于缺少服务文件,服务未 运行ning。

那么清除包不是更容易吗?我猜不是。

仍然:运行能力

sudo aptitude

找到有问题的包,检查它的信息,验证存在哪些版本。 安装与您目前拥有的版本不同的版本(最好是比您必须的版本更高或更低的补丁版本,以避免太多更改) - 它会询问您如何处理丢失的文件 - 选择从正在安装的版本替换

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

一旦所有丢失的文件都被替换,您应该可以进行标准清除

sudo apt-get purge <package>