我被授予访问安装了 50+ php rpms 的服务器的权限。我正在尝试将它们全部删除。
基本上,我试图结合这两个命令:
rpm -qa | grep 'php'
和
rpm --erase
我对管道和重定向了解一点,但我不知道如何将它们用于此目的。请帮忙。
yum
列出并删除指定的包及其所有依赖项,但需要y/N
确认:
yum remove 'php*'
要绕过确认,请替换yum
为yum -y
。
rpm
本节以twalburg和Ricardo的答案为基础。
列出安装了哪些 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*'
另一种选择是直接使用命令rpm -qa | grep ...
中的输出rpm --erase
:
rpm --erase `rpm -qa | grep php`
也许不适用于php
您引用的情况,但是如果该方法决定将列表拆分为多个调用,并且第一个列表包含作为后续列表中包的依赖项的包,则该xargs
方法可能会遇到问题。rpm -e
当然,如果您要同时删除这么多包,您可能还有其他需要考虑的事情......
列出:
rpm -qa | grep 'php'
删除已安装的列出和过滤:
rpm -e $(rpm -qa |grep 'php')
我今天有这个。如果没有 --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