使用rpm或yum擦除多个包

jer*_*rry 12 unix rpm yum

我被允许访问安装了50+ php rpms的服务器.我试图将它们全部删除.

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

rpm -qa | grep 'php'
Run Code Online (Sandbox Code Playgroud)

rpm --erase
Run Code Online (Sandbox Code Playgroud)

我对管道和重定向有一点了解,但我不知道如何将它们用于此目的.请帮忙.

Acu*_*nus 26

运用 yum

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

yum remove 'php*'
Run Code Online (Sandbox Code Playgroud)

要绕过确认,请替换yumyum -y.

运用 rpm

本节以twalburgRicardo的答案为基础.

列出安装了哪些RPM:

rpm -qa 'php*'
rpm -qa | grep '^php'  # Alternative listing.
Run Code Online (Sandbox Code Playgroud)

列出将被删除的RPM,而不实际删除它们:

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

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

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

rpm -e --test -vv $(rpm -qa 'php*')
Run Code Online (Sandbox Code Playgroud)

删除这些RPM:

rpm -e $(rpm -qa 'php*')
Run Code Online (Sandbox Code Playgroud)

确认删除:

rpm -qa 'php*'
Run Code Online (Sandbox Code Playgroud)

  • `grep`命令在我的Amazon Linux实例上没有任何东西,我认为它应该寻找`'^ D:========== ---'`.另外(因为这是不明显的),在多个通配符(例如,LibreOffice)的情况下,查询命令看起来像`rpm -qa'libreoffice*''libobasis*'`. (2认同)

thk*_*ala 7

这项工作的通常工具是xargs:

rpm -qa | grep 'php' | xargs rpm -e
Run Code Online (Sandbox Code Playgroud)

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