50以上のphp rpmがインストールされているサーバーへのアクセス権が与えられました。それらをすべて削除しようとしています。
基本的に、私はこれら2つのコマンドを組み合わせようとしています:
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*'
このジョブの通常のツールは xargs
です。
rpm -qa | grep 'php' | xargs rpm -e
これは、xargs
の標準入力で指定されたすべてのパッケージを引数としてrpm -e
を呼び出します。
もう1つのオプションは、rpm -qa | grep ...
コマンドでrpm --erase
の出力を直接使用することです。
rpm --erase `rpm -qa | grep php`
引用しているphp
のケースではないかもしれませんが、xargs
のアプローチが、リストをrpm -e
の最初のリストといくつかの呼び出しに分割することを決定した場合、問題が発生する可能性があります後続のリストのパッケージの依存関係であるパッケージが含まれています。もちろん、一度に多くのパッケージを削除する場合は、他にも検討する必要があることがあります...
今日食べました。 --justdbおよび--noscripts rpmパラメーターを使用することは、-allmatchesなしでは十分ではありませんでした。
[root@localhost ~]# rpm -ev --allmatches --justdb <the-package-name>
https://mcvictech.blogspot.com/2011/10/rpm-error-specifies-multiple-packages.html
リストする:
rpm -qa | grep 'php'
インストールされ、リストされ、フィルタリングされたものを削除するには:
rpm -e $(rpm -qa |grep 'php')