为什么/usr/bin/java链接到/usr/java/default/bin/java?
我正在尝试使用java为什么/usr/bin/java链接到/usr/java/default/bin/java?,java,linux,alternate,Java,Linux,Alternate,我正在尝试使用java替代方案从1.8降级到java1.6。然而,尽管通过--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
替代方案
从1.8
降级到java1.6
。然而,尽管通过--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
我曾在两个单独的RHEL 5.10/11系统上体验过这种情况。在CentOS上尝试复制时,我注意到/usr/bin/java
链接到/etc/alternations/java
回到我的RHEL系统,查看了/etc/alternations/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/alternations/java
为什么这不是默认行为?是否只是将符号链接更改为“/etc/alternations/java”以管理降级 RPM包创建两个链接:
/usr/java/latest
和/usr/java/default
/usr/java/latest
链接将始终指向被视为最新版本的java版本。如果该软件包不是最新版本,则后续升级将覆盖该值/usr/java/default
指向/usr/java/latest
。但是,如果管理员更改/usr/java/default
以指向另一个版本的java,则后续的包升级将由管理员提供,并且无法覆盖谢谢,但请解释一下为什么默认情况下
/usr/bin/java
指向最新版本,而不是“etc/alternations/java”?是否只是将符号链接更改为/etc/alternations/java
以管理降级?关于突出显示的现有问题,我的问题是降级。升级按预期工作,并将其本地化为/usr/bin/java
符号链接到的内容。