![RPM:jre 依赖失败,即使安装了该 JRE 版本](https://linux22.com/image/51095/RPM%EF%BC%9Ajre%20%E4%BE%9D%E8%B5%96%E5%A4%B1%E8%B4%A5%EF%BC%8C%E5%8D%B3%E4%BD%BF%E5%AE%89%E8%A3%85%E4%BA%86%E8%AF%A5%20JRE%20%E7%89%88%E6%9C%AC.png)
我正在尝试安装一个软件包,但它无法报告缺少依赖项:
# rpm -ivh *
error: Failed dependencies:
jre >= 1.7.0 is needed by Tomcat-7.0.37-1.noarch
同时,当我检查我的java版本时,我得到的是:
# java -version
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) Server VM (build 24.0-b56, mixed mode)
rpm想要的不就是java吗?我错过了什么吗? rpm 是否看到不同的 java,我该如何检查?
答案1
包管理器就是这样 - 包信息的管理器,它并不真正知道您的系统上有什么,只知道它安装了哪些包,因此它假设您的系统上有什么。
这种设计的明显问题是两者可能不同步,例如,如果您通过从 Oracle 下载 JRE 来手动安装 JRE,那么包管理器不知道它在那里,因此会指出失败的工作依赖链。
有多个选项,假设这就是问题所在(检查你的 rpm 包列表,我忘记了 rpm 的参数),按难看的顺序排列:(1)你可以安装你的发行版本的 JRE,这将使包管理器满意,(2)你可以捏造包管理器,让它认为所说的依赖项“jre version 1.7.0”实际上已经安装,无论是否安装它,然后颠覆java二进制文件以使用你安装的版本,或者(3)你可以使用以下命令安装tomcat --nodeps 选项忽略依赖性。请注意,(3) 是一个滑坡,随着时间的推移,您最终将跳过更多的依赖项和子依赖项。