alternatives命令用法

来源:互联网 发布:gtasa汽车数据修改器 编辑:程序博客网 时间:2024/06/06 00:26

最近给公司重装服务器,测试发邮件时遇到了异常: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target,经过不断的百度,google,终于把问题定位在java证书。可是以前同样安装jdk1.6.0_20的机器没有问题啊,怎么回事呢?

 

使用rpm -qa |grep java一查,原来IT安装linux时默认安装了java-1.4.2-gcj-compat-1.4.2.0-40jpp.115,虽然环境变量PATH配成了jdk1.6.0_20,可使用which java,whereis java找到的还是/usr/bin/java。由于/usr/bin/java使用的还是java-1.4.2-gcj,导致实际应用的JVM等估计是java-1.4.2-gcj的。怎么解决呢?本想使用rpm -e java-1.4.2-gcj-compat-1.4.2.0-40jpp.115卸载java-1.4.2-gcj,谁知道Failed dependencies,总不能都卸载吧,万一有我不知道的用处呢。

 

然后继续百度,google,终于找到了方法,那就是alternatives。

alternatives是Linux下的一个功能强大的命令。只能在root权限下执行。如系统中有几个命令功能十分类似,却又不能随意删除,那么可以用 alternatives 来指定一个全局的设置。

alternatives常用于同一个系统中安装同一软件的多个版本。比如为了开发需要,我需要安装JDK1.4.2,同时还需要JDK1.6.10,我怎么样才能忽略安装路径,按照我自己的意思,使用我想要的java版本呢?

下面为您一一道来。

alternatives的命令行执行如下:
[root@localhost ~]# alternatives 

alternatives version 1.3.30.2 - Copyright (C) 2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage: alternatives --install <link> <name> <path> <priority>
                    [--initscript <service>]
                    [--slave <link> <name> <path>]*
       alternatives --remove <name> <path>
       alternatives --auto <name>
       alternatives --config <name>
       alternatives --display <name>
       alternatives --set <name> <path>

common options: --verbose --test --help --usage --version
                --altdir <directory> --admindir <directory>

说明:
alternatives --install <link> <name> <path> <priority>
其中,
install表示安装
link是符号链接
name则是标识符
path是执行文件的路径
priority则表示优先级

以java的安装为例,我的rhel下自带了一种java版本,分别如下:

  Selection         Command
-----------------------------------------------
* +1                    /usr/lib/jvm/jre-1.4.2-gcj/bin/java

我在目录/opt/app安装了java version "1.6.0_20"
[root@localhost test]# alternatives --install /usr/bin/java java /opt/app/jdk1.6.0_20/bin/java 2
[root@localhost test]# alternatives --config java

There are 2 programs which provide 'java'.

  Selection        Command
-----------------------------------------------

 *+ 1                  /usr/lib/jvm/jre-1.4.2-gcj/bin/java
  2                      /opt/app/jdk1.6.0_20/bin/java        

Enter to keep the current selection[+], or type selection number: 2

用alternatives --config java就可以选择你想要的Java版本。然后重启应用,再次发送email,结果还是一样有Exception,晕了。

继续找,找到/etc/java,里面有个java.conf设置了JVM_ROOT等参数,难道是它。按我的理解修改了几乎每个参数,可仍然不起作用。

最后灵机一闪,reboot,哈哈,终于起作用了,邮件发出去了,Exception消失了。

综上所述,修改/etc/java/java.conf是不必要的(这个文件的作用以后再研究),只要alternatives就可以了,当然最后别忘了重启机器。