update-alternatives命令详解

说明:
如我系统已安装有java 1.6,还想要安装java 1.7,但我不想卸载java 1.6。就可以通过update-alternatives –config在多个java版本间进程切换。update-alternatives是用于在多个同类型命令中进行切换的一个脚本,在debian中可以通过apt-get install dpkg来进行安装。

在说明update-alternatives的详细用法之前,先让我们看看系统中已有的例子。打开终端,执行下面的命令:
# ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 2011-03-12 15:20 /usr/bin/java -> /etc/alternatives/java

# ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 40 2011-03-12 15:20 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk/jre/bin/java
java这个可执行命令实际是一个链接,指向了/etc/alternatives/java。而这个也是一个链接,指向了/usr/lib/jvm/java-6-openjdk/jre/bin/java,这才是最终的可执行文件。之所以建立这样两个链接,是为了方便脚本程序的编写和系统的管理。

语法:
暂空!!!

实例:
1. display参数列出一个命令的所有可选命令

# update-alternatives --display java

 
2. config参数用于给某个命令选择一个link值,相当于在可用值之中进行切换吧。

# update-alternatives --config java  //有 3 个候选项可用于替换 java (提供 /usr/bin/java)  
 选择       路径                                       优先级  状态  
------------------------------------------------------------  
  0            /usr/lib/jvm/java-6-openjdk/jre/bin/java      1061      自动模式  
* 1            /home/wuekzhu/download/jdk1.6.0_23/bin/java   1         手动模式  
  2            /usr/lib/jvm/java-6-openjdk/jre/bin/java      1061      手动模式  

 
3. install参数用于添加一个命令的link值,相当于添加一个可用值,其中slave非常有用。

# update-alternatives –install /usr/bin/java java /usr/local/jre1.6.0_20/bin/javac 100  
# update-alternatives –install /usr/bin/java java /usr/local/jre1.6.0_20/bin/javac 100 –slave /usr/bin/javac javac /usr/local/jre1.6.0_20/bin/javac  

 
4. remove参数用于删除一个命令的link值,其附带的slave也将一起删除。

# update-alternatives –remove java /usr/local/jre1.6.0_20/bin/java  

 
当然如果想让java能使用,还是得把java按照如下添加到环境变量去。
# vim /etc/profile //在最后添加以下内容
JAVA_HOME=/usr/local/jdk1.5.0_22
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$PATH: $JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH PATH
如果想通过update-alternatives在多个版本的java间切换,只需简单地用update-alternatives –config java,选择我们想要的java版本即可!

附录:
附录1./etc/profile中path的设置,可以选择覆盖或不覆盖/usr/bin/java命令。
如果我这样设置profile,那么会使用jdk1.5 :
#set java environment
JAVA_HOME=/home/wuekzhu/download/jdk1.5.0_22
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
如果我这样设置profile,那么会使用/usr/bin/java – > /etc/alternatives/java :
#set java environment
JAVA_HOME=/home/wuekzhu/download/jdk1.5.0_22
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$PATH: $JAVA_HOME/bin

发表评论

邮箱地址不会被公开。 必填项已用*标注