在Ubuntu中删除损坏的包

Leo*_*ang 10 ubuntu apt

我尝试删除包时出错,因此它处于断开状态.我尝试了以下方法:

sudo dpkg --remove --force-remove-reinstreq rvm
Run Code Online (Sandbox Code Playgroud)

输出:

(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
Run Code Online (Sandbox Code Playgroud)

.

sudo dpkg --purge rvm
Run Code Online (Sandbox Code Playgroud)

输出:与上述相同

sudo dpkg -i --force-overwrite package
Run Code Online (Sandbox Code Playgroud)

输出:

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

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

emo*_*t01 41

我遇到了这个破包的问题,rvm.我尝试了许多类似的东西sudo apt install -f,sudo 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/
    
    Run Code Online (Sandbox Code Playgroud)
  3. 运行以下命令:

    sudo dpkg --remove --force-remove-reinstreq <package>
    
    Run Code Online (Sandbox Code Playgroud)

举个例子,我通过在终端中执行以下命令解决了我的问题:

sudo mv /var/lib/dpkg/info/rvm.* /tmp/
sudo dpkg --remove --force-remove-reinstreq rvm
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,并且在WSL上也有一个楔形包.当问题是关于删除破损的包时,不确定其他"如何安装东西"答案是否相关. (5认同)
  • 上面链接的 pirpime 网站暂时离线,但已存档在这里:https://web.archive.org/web/20201112035511/http://www.piprime.fr/1480/manually-remove-broken-package-debian -ubuntu/ (4认同)
  • 事实证明,第 2 步对于我的情况来说已经足够了。 (2认同)
  • sudo dpkg --purge --force-all &lt;package-name&gt; 为我工作。 (2认同)