web-dev-qa-db-ja.com

RHEL / CentOS-特定のパッケージに依存するすべてのrpmパッケージを見つけるにはどうすればよいですか?

Linuxディストリビューション:Red Hat Enterprise Linux Serverリリース6.10(Santiago)

環境:
サーバーでJavaの古いバージョンをすべてアンインストールする必要があります。
Javaパスのリストがあります。例:

/usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.201.b09-2.el6_10.x86_64/jre/bin/Java

このファイルを所有しているパッケージは、次の方法で見つけることができます。

rpm -qf /usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.201.b09-2.el6_10.x86_64/jre/bin/Java
java-1.8.0-openjdk-headless-1.8.0.201.b09-2.el6_10.x86_64

さて、Java-1.8.0-openjdk-headless-1.8.0.201.b09-2.el6_10.x86_64に応じてすべてのパッケージを見つけて、パッケージを安全に削除できるかどうかを確認するにはどうすればよいですか?

以下のコマンドは、他のパッケージがこのopenjdkパッケージに依存していないことを示しています(参照: Question-16634 ):

rpm -q --whatrequires  Java-1.8.0-openjdk-headless-1.8.0.201.b09-2.el6_10.x86_64
no package requires Java-1.8.0-openjdk-headless-1.8.0.201.b09-2.el6_10.x86_64

しかしmysql-connector-Javaはこのパッケージに依存します。
理由:rpm --whatrequiresオプションの引数は、パッケージ名ではなく、パッケージによって提供されるCAPABILITYであり、CAPABILITYを使用した検索は簡単ではありません。

以下のコマンドも結果を返しませんでした:

repoquery --requires --resolve --recursive Java-1.8.0-openjdk-headless-1.8.0.201.b09-2.el6_10.x86_64

では、特定のパッケージに依存するすべてのrpmパッケージを識別する簡単な方法はありますか?
パッケージとは、Java-1.8.0-openjdk-headless-1.8.0.201.b09-2.el6_10.x86_64Java-1.8.0-openjdk-headlessではない)を意味します

2
penguin

これを試して、

通常、このパッケージに依存する他のパッケージがある場合、rpm -eはパッケージをアンインストールしません[もちろん--nodepsはこれをバイパスするために使用できます]。 @JeffSchallerが述べたように、rpm -e--testと組み合わせて使用​​して、error: Failed dependencies:があるかどうかを確認することもできます。

--test Don’t really uninstall anything, just go through the motions.  Useful in conjunction with the -vv option for debugging.

rpm -e -vv <package_name>-error: Failed dependencies:を確認します

または

rpm -e -vv --test <package_name>-error: Failed dependencies:を確認します

詳細については、man rpmを参照してください

3
ss_iwe