Linux デプロイ: Red Hat Enterprise Linux Server バージョン 6.10 (San Diego)
コンテキスト:
サーバーから以前のバージョンの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パッケージに依存する他のパッケージがないことを示します(参照:質問-166343):
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
パッケージによって異なります。
理由:--whatrequires
rpmオプションの引数はパッケージ名ではなくパッケージによって提供される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_64
(ではないjava-1.8.0-openjdk-headless
)を意味します。
答え1
この試み、
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