【问题标题】:Removing broken packages in Ubuntu [closed]在 Ubuntu 中删除损坏的软件包 [关闭]
【发布时间】:2018-01-24 20:51:06
【问题描述】:

当我试图删除一个包时出错,所以它处于损坏状态。我尝试了以下方法:

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。

【问题讨论】:

    标签: ubuntu apt


    【解决方案1】:

    我遇到了一个损坏的包 rvm 的问题。我尝试了很多东西,比如sudo apt install -fsudo dpkg --purge --force-all rvm,但没有任何效果。最后我找到了这篇解释how to remove broken packages on 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
    

    【讨论】:

    • 这对我有用,也适用于 WSL 上的楔形包。当问题是关于删除损坏的包时,不确定其他“如何安装东西”的答案是如何相关的。
    • 第 2 步证明对我来说已经足够了。
    • 谢谢。这为我节省了很多时间!我在 Windows 10(作为 WSL)下使用 ubuntu 18.04 并尝试安装 docker,您的回答对我有帮助,同时手动安装 docker-ce 包。
    • sudo dpkg --purge --force-all 为我工作。
    • 上面链接的 pirpime 网站目前处于离线状态,但已在此处存档:web.archive.org/web/20201112035511/http://www.piprime.fr/1480/…
    【解决方案2】:
    1. 安装突触包管理器。

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

    完成!

    【讨论】:

    • 这不能回答问题!相反,它提供了另一种安装包的方式。
    • Synaptic 不同,处理方式也不同。有时突触可以解决 apt 无法解决的问题。所以它实际上可能是一个正确的答案..!
    【解决方案3】:

    所以在我的情况下,perl-modules-5.22 已损坏。 我按照接受的答案中的步骤进行操作,但这并没有解决我的问题。

    要修复,我还必须:

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

    【讨论】:

      【解决方案4】:

      sudo apt remove -f &lt;package_name&gt;

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

      【讨论】:

        【解决方案5】:

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

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

        仍然:运行 aptitude

        sudo aptitude
        

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

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

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

        sudo apt-get purge <package>
        

        【讨论】:

          【解决方案6】:

          以root身份执行命令

          sudo apt-get install -f
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-11-12
            • 2015-05-09
            • 2014-08-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-06
            相关资源
            最近更新 更多