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
)
尝试这个,
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句