【问题标题】:Erase multiple packages using rpm or yum使用 rpm 或 yum 擦除多个包
【发布时间】:2012-08-13 21:16:30
【问题描述】:

我被授予访问安装了 50+ php rpms 的服务器的权限。我正在尝试将它们全部删除。

基本上,我正在尝试将这两个命令结合起来:

rpm -qa | grep 'php'

rpm --erase

我对管道和重定向知之甚少,但我不知道如何将它们用于此目的。请帮忙。

【问题讨论】:

    标签: unix rpm yum


    【解决方案1】:

    我今天有这个。如果没有 --allmatches,使用 --justdb 和 --noscripts rpm 参数是不够的,仅此而已。

    [root@localhost ~]# rpm -ev --allmatches --justdb <the-package-name>
    

    https://mcvictech.blogspot.com/2011/10/rpm-error-specifies-multiple-packages.html

    【讨论】:

      【解决方案2】:

      使用yum

      列出并删除指定的包及其所有依赖项,但需要y/N 确认:

      yum remove 'php*'
      

      要绕过确认,请将yum 替换为yum -y

      使用rpm

      本部分以twalburgRicardo 的答案为基础。

      列出已安装的 RPM:

      rpm -qa 'php*'
      rpm -qa | grep '^php'  # Alternative listing.
      

      列出哪些 RPM 将被删除,而不是实际删除它们:

      rpm -e --test -vv $(rpm -qa 'php*') 2>&1 | grep '^D:     erase:'
      

      在 Amazon Linux 上,您可能需要改用 grep '^D: ========== ---'

      如果上述命令未列出相关的 RPM,请检查错误:

      rpm -e --test -vv $(rpm -qa 'php*')
      

      删除这些 RPM:

      rpm -e $(rpm -qa 'php*')
      

      确认删除:

      rpm -qa 'php*'
      

      【讨论】:

      • grep 命令在我的 Amazon Linux 实例上没有获取任何内容,我认为它应该寻找 '^D: ========== ---'。此外(因为这是不明显的),在多个通配符的情况下(例如,LibreOffice),查询命令看起来像rpm -qa 'libreoffice*' 'libobasis*'
      【解决方案3】:

      列出:

      rpm -qa | grep 'php'
      

      删除已安装的列表和过滤:

      rpm -e $(rpm -qa |grep 'php')
      

      【讨论】:

        【解决方案4】:

        另一种选择是直接在rpm --erase 命令中使用rpm -qa | grep ... 的输出:

        rpm --erase `rpm -qa | grep php`
        

        可能不适用于您引用的php 案例,但xargs 方法可能会遇到问题,如果它决定将列表拆分为rpm -e 的多个调用并且第一个列表包含作为依赖项的包后续列表中的软件包。当然,如果您要同时删除这么多包,您可能还有其他需要考虑的事情...

        【讨论】:

          【解决方案5】:

          这项工作的常用工具是xargs

          rpm -qa | grep 'php' | xargs rpm -e
          

          这将调用rpm -e,并将xargs 的标准输入中命名的所有包作为参数。

          【讨论】:

          • 这种方法通常会因为依赖而失败。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-02-26
          • 2012-03-20
          • 2017-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多