alternative 命令用于管理系统上多个提供相同功能的软件包。如 jre mta editor 等。

当系统中有多个 editor 软件安装时,alternative 系统指定其中一套软件(包括相应的 man page)供用户使用。
如 editor 我们有vim nano gedit ed 等可供选择,相应地,有对应的 man page
下文我们将通过实际安装一个 alternative 命令来体会该命令的强大之处。

alternative 命令

该命令需要root 权限运行

看起来 –install 分支较为复杂一些,其他分支看名字就能猜出意思来。

首先,我们想看一下目前系统中安装了哪些 alternatives, 不过遗憾的是,该命令没有 –list 参数。
通过man alternatives,发现系统安装的 alternatives 都在 /var/lib/alternatives/ 下面。检查一下,发现里面有三个文本文件
看起来系统安装了这三个 alternatives
我们来看看links 到底是什么
看起来,links 指向了 /usr/bin/elinks
检查一下,确实是这样的。

下面我们将安装一个叫 editor 的alternative。 editor命令放在 /usr/local/bin/ 下面

这时运行 /usr/local/bin/editor  就可以直接打开 vim 了
但是看起来man page仍然不生效

我们通过安装 slave alternatives 来解决这个问题

试试 man editor
大功告成
当然,我们也可以安装另一个 editor 的候选并设置一个较低的优先级。

在机器上用RPM 装多个版本的JDK

从上面的页面下载所需版本的jdk
对于jdk6,需要先解开bin包,再安装里面的所有rpm包。
会得到一个jdk的包和很多sun-javadb-*的包
将这些包都传到yum repo,然后更新repo索引。
在机器上运行:
就可以看到传到yum repo上的所有jdk版本

见图

5291ead1-b43b-4806-be47-6c3c7fbfb8d8

从jdk1.8起,包的命名方式竟然改了。
把jdk 1.6 1.7 1.8都装上
检查 java 链接

看起来这个链接不属于任何包。
我们安装之前学习的 alternatives 来管理多个版本的jdk
我们以jdk为名字来管理上面的java/javac/javadoc/javaws/…的链接
看起来版本已经是正确的了
然后,再更新下相关联的j* 程序的链接
看起来下面的包都需要做一下alternatives 链接

用一个脚本解决:

上面的脚本同时解决了 JAVA_HOME 环境变量的配置。

这应该就是安装多版本JDK的正确姿势了。

PS: 根据实际的安装经验,jdk1.8的RPM已经自行安装 alternatives,不需要运行上面的脚本了。

参考:

http://www.if-not-true-then-false.com/2010/install-sun-oracle-java-jdk-jre-7-on-fedora-centos-red-hat-rhel/