已经安装以下软件包的机器:
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
这似乎不那么容易/直接。