RedHat下JDK1.6安装-利用alternative实现多版本并存(Ubuntu同理)
虽然本文讲的是RH下面的配置,不过Ubuntu里也是一样的!
RedHat es下安装过程很简单,Sun下载JDK1.6包,解压,然后rpm安装
安装完后,在etc/profile.d/下建立java.sh,代码如下
JAVA_HOME=/usr/java/jdk1.6.0
PATH=$PATH: $JAVA_HOME/bin
CLASSPATH=.: $JAVA_HOME/lib/dt.jar: $JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
注销
重新登陆
特别注意:设置变量时,RedHat下变量分隔符为 冒号 : 而不是Win系的 分
号 ;
[root@localhost ~]# echo $CLASSPATH
.:/usr/java/jdk1.6.0/lib/dt.jar:/usr/java/jdk1.6.0/lib/tools.jar
[root@localhost ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:
/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/java/jdk1.6.0/bin:/root/bin:
/usr/java/jdk1.6.0/bin
[root@localhost ~]# echo $JAVA_HOME
/usr/java/jdk1.6.0
问题:很不幸,控制台下 java -version,我看到的却是1.4.0
原来我的系统中已经安装过其他java版本
难道安装sun新版jdk前需要卸载这个jdk1.4.0?
google 后发现,原来RedHat下远没有Win系统这么麻烦。RedHat中有一种可替代系统(alternatives system)机制, 来抽象出不同软件或者同一软件不同版本运行时的位置和“商标”,以消除更替环境的需要。而update-alternatives 就是这种机制的的实现。因此可以用update-alternatives 来实现两个jdk并存,并且根据需要方便切换。
首选 update-alternatives --dispaly java,看看当前java软件的当前配置,尤其是路径的优先级
然后我们配置java软件配置,使其使用我们刚才的JDK1.6
update-alternatives --config java
如果一切顺利这时候我们可以看到系统中可供使用的java配置方案。不过由于JDK1.6版本比较新,我本身的RedHat无法检测到,所以需要利用update-alternatives --install选项手工添加再可选择列表中
我们采用 update-alternatives --install 选项,赋予JDK1.6这新JVM最高的级别(设置为60),以达到添加如列表中的目的,具体如下
# update-alternatives --install /usr/bin/java java /usr/java/jdk1.6.0/jre/bin/java 60
--slave /usr/share/man/man1/java.1.gz java.1.gz /usr/lib/jvm/jdk1.6.0/man/man1/java.1
然后update-alternatives --config java选择添加的JDK1.6配置方案
这时如果在终端下查看java -version,就会看到1.6字样
注:由于update-alternatives本质是利用ln的方式实现影射的方式来实现可替代系统
因此具体使用时,我们也可以通过命令查看其映像路径,进而了解其影射细节。以java为例
终端下 # which java
/usr/lib/java
#ls -l usr/lib/java
即可得到其影射路径,依次下去,即可看到此命令最终使用的是那个文件,以达到了解其影射细节的目的