RHEL/CentOS - 如何找到依赖于特定软件包的所有 rpm 软件包?

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

我可以通过以下方式找到拥有该文件的包:

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-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

答案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

相关内容