Linux下的多版本管理工具—alternatives
alternatives是Unix下重要的版本管理工具,它最早是在debain的系统中出现,因为它强大实用性使得它在各个Unix环境中大量的移植使用,而我们在平时的时候可能最经常使用的是java的openjdk工具包的版本转换,而在alternatives实现多版本是使用替换系统中命令的link指向来实现版本的转换,它默认的多版本link文件都是放在/etc/alternatives路径下,在实际生产中可以用他来管理系统中不同软件的版本问题。
在这里就用openjdk工具包做例子,openjdk工具包下的java虚拟机在平时大量的模拟java的环境时都会被使用到,在这里我们可以看下用yum安装的rpm包java的系统文件
[root@localhost ~]# ll $(which java)
lrwxrwxrwx. 1 root root 22 12月 31 12:02 /usr/bin/java -> /etc/alternatives/java
可以看出来系统中java的路径其实是一个link文件,它所指向的就是系统中的/etc/alternatives下的java,现在去/etc/alternatives路径下看下都有什么东西
[root@localhost ~]# cd /etc/alternatives
[root@localhost alternatives]# ll java
lrwxrwxrwx. 1 root root 46 12月 31 12:02 java -> /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
在这里就可以看出系统中的java指令是被指向openjdk1.6版本下,而我们需要切换java的版本也很简单:
[root@localhost alternatives]# alternatives --config java
共有 2 个程序提供“java”。
选择 命令
-----------------------------------------------
* 1 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
+ 2 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
按 Enter 来保存当前选择[+],或键入选择号码:2,在这里说明一下alternatives的参数选项
--install link name path priority:
用于添加替代系统指令下的文件,就是安装替换系统中的文件成link文件
--remove name path:
移除用alternatives管理的关系
--set name path
手动添加链接的从属关系,这个在原debian中是没有的参数
--config name
对alternatives控制的软件进行版本修改,用于手动指定软件版本
--auto name
对alternatives控制的软件进行自动选项版本,这里一般是选项系统中最新的版本
--display name
用于显示alternatives控制的软件如何替换,替换了那些配置文件、版本等等
总之来说alternatives版本控制器是比较重要的版本管理工具,使用它可以快速管理系统中的软件版本,以减少去修改大量的环境变量的时间。