17

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

基本上,我试图结合这两个命令:

rpm -qa | grep 'php'

rpm --erase

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

4

5 回答 5

38

使用yum

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

yum remove 'php*'

要绕过确认,请替换yumyum -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*'
于 2014-03-10T22:46:31.630 回答
8

这项工作的常用工具是xargs

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

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

于 2012-08-17T15:15:30.617 回答
0

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

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

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

于 2012-08-17T16:02:39.720 回答
0

列出:

rpm -qa | grep 'php'

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

rpm -e $(rpm -qa |grep 'php')
于 2013-05-27T08:23:37.843 回答
0

我今天有这个。如果没有 --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

于 2020-04-05T20:11:43.660 回答