我正在尝试使用java alternatives
从1.6
降级到java 1.8
。但是,尽管通过--set
在备选方案中正确设置了该版本,但java版本仍会返回1.8
:
Selection Command
-----------------------------------------------
*+ 1 /usr/java/jre1.6.0_37/bin/java
2 /usr/java/jre1.8.0_66/bin/java
java -version
java version "1.8.0_66"
仔细观察后发现/usr/bin/java
总是指向最新版本,因为:
ls -la /usr/bin/java
lrwxrwxrwx 1 root root 26 Mar 31 11:27 /usr/bin/java -> /usr/java/default/bin/java
ls -la /usr/java/
total 20
drwxr-xr-x 4 root root 4096 Mar 31 11:30 .
drwxr-xr-x 16 root root 4096 Oct 7 11:41 ..
lrwxrwxrwx 1 root root 16 Mar 31 11:27 default -> /usr/java/latest
drwxr-xr-x 7 root root 4096 Mar 31 11:27 jre1.6.0_37
drwxr-xr-x 7 root root 4096 Mar 31 11:30 jre1.8.0_66
lrwxrwxrwx 1 root root 21 Mar 31 11:30 latest -> /usr/java/jre1.8.0_66
我在2个独立的RHEL 5.10 / 11系统上体验过这个。在尝试在CentOS上复制此内容时,我注意到/usr/bin/java
链接到/etc/alternatives/java
。
回到我的RHEL系统,查看了/etc/alternatives/java
:
ls -la /etc/alternatives/
total 24
drwxr-xr-x 2 root root 4096 Mar 31 12:02 .
drwxr-xr-x 78 root root 12288 Sep 25 2012 ..
lrwxrwxrwx 1 root root 30 Mar 31 12:02 java -> /usr/java/jre1.6.0_37/bin/java
正如预期的那样,它链接到正确的版本,这意味着/usr/bin/java
应该链接到/etc/alternatives/java
。
为什么这不是默认行为?是否只需将符号链接更改为' / etc / alternatives / java'管理降级?
答案 0 :(得分:0)
RPM包会创建两个链接:/usr/java/latest
和/usr/java/default
。
/usr/java/latest
链接始终指向被视为最新版本的Java版本。如果不是最新版本,软件包的后续升级将覆盖此值。
默认情况下,/usr/java/default
指向/usr/java/latest
。但是,如果管理员将/usr/java/default
更改为指向另一版本的Java,则管理员将提供后续的软件包升级,并且不能覆盖。
关于RHEL的替代方案,请遵循以下内容: