RHEL/CentOS - 如何找到所有依賴於特定包的 rpm 包?
Linux 發行版:Red Hat Enterprise Linux Server 6.10 版(聖地亞哥)
上下文:
我需要在我的伺服器中解除安裝所有舊版本的 Java。
我有 java 路徑的列表,例如:
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el6_10.x86_64/jre/bin/java
我可以通過以下方式找到擁有此文件的 pacakage:
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
取決於這個包。原因: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_64
(不是java-1.8.0-openjdk-headless
)
試試這個,
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