web-dev-qa-db-ja.com

rpmまたはyumを使用して複数のパッケージを消去する

50以上のphp rpmがインストールされているサーバーへのアクセス権が与えられました。それらをすべて削除しようとしています。

基本的に、私はこれら2つのコマンドを組み合わせようとしています:

rpm -qa | grep 'php'

そして

rpm --erase

パイプとリダイレクトについては少し知っていますが、この目的でパイプを使用する方法がわかりません。助けてください。

14
jerry

yumの使用

指定されたパッケージとそのすべての依存関係を一覧表示して削除しますが、y/Nの確認が必要です。

yum remove 'php*'

確認をバイパスするには、yumyum -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*'
27
Acumenus

このジョブの通常のツールは xargs です。

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

これは、xargsの標準入力で指定されたすべてのパッケージを引数としてrpm -eを呼び出します。

7
thkala

もう1つのオプションは、rpm -qa | grep ...コマンドでrpm --eraseの出力を直接使用することです。

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

引用しているphpのケースではないかもしれませんが、xargsのアプローチが、リストをrpm -eの最初のリストといくつかの呼び出しに分割することを決定した場合、問題が発生する可能性があります後続のリストのパッケージの依存関係であるパッケージが含まれています。もちろん、一度に多くのパッケージを削除する場合は、他にも検討する必要があることがあります...

0
twalberg

今日食べました。 --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

0
Jcc.Sanabria

リストする:

rpm -qa | grep 'php'

インストールされ、リストされ、フィルタリングされたものを削除するには:

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