RHEL 选择没有 --config 的 Java 作为替代方案

RHEL 选择没有 --config 的 Java 作为替代方案

已经安装以下软件包的机器:

java-1.7.0-openjdk
java-1.7.0-openjdk-headless

然后我也java-1.8.0-openjdk-headless通过 yum 进行了安装。

安装新包时,替代方案默认为 java 1.8.0 版本(这很好)。

我可以使用alternatives --config java以下提示来更改此设置:

There is 3 program that provides 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/java/jre1.8.0_161/bin/java
 + 2           java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.231-2.6.19.1.el7_6.x86_64/jre/bin/java)
*  3           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jre/bin/java)

但是,如果我想在没有提示的情况下将其更改为 1.7 和/或返回 1.8,则alternatives --set ...需要知道 java 的具体次要版本/构建信息,例如,/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jre/bin/java这似乎有点违反直觉,因为我只通过指定主要版本 () 来安装包1.8.0。而且我不清楚如何以自动化方式或使用 Ansible 之类的东西来实现这一点...

查看/usr/lib/jvm其中创建的符号链接如下:

java-1.7.0-openjdk-1.7.0.221-2.6.18.0.el7_6.x86_64
java-1.7.0-openjdk-1.7.0.231-2.6.19.1.el7_6.x86_64
java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64
jre -> /etc/alternatives/jre
jre-1.7.0 -> /etc/alternatives/jre_1.7.0
jre-1.7.0-openjdk -> /etc/alternatives/jre_1.7.0_openjdk
jre-1.7.0-openjdk-1.7.0.231-2.6.19.1.el7_6.x86_64 -> java-1.7.0-openjdk-1.7.0.231-2.6.19.1.el7_6.x86_64/jre
jre-1.8.0 -> /etc/alternatives/jre_1.8.0
jre-1.8.0-openjdk -> /etc/alternatives/jre_1.8.0_openjdk
jre-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64 -> java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jre
jre-openjdk -> /etc/alternatives/jre_openjdk

这表明其目的是指定 RHEL 上的 Java 版本的长格式。

在基于 Debian 的系统上,该路径类似于/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

我是不是漏掉了什么?提前谢谢

答案1

为了回答我自己的问题,基于来自 irc.freenode.net 上 #centos 的帮助,在命令行上选择/设置:

# alternatives --set java java-1.8.0-openjdk.x86_64

对于 Ansible,查看alternatives模块的源代码需要 java 可执行文件的路径,因此/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jre/bin/java这似乎不那么容易/直接。

相关内容