inux软件版本管理命令update-alternatives使用详解

inux软件版本管理命令update-alternatives使用详解

update-alternatives 命令用于处理linux系统中软件版本的切换,在各个linux发行版中均提供了该命令,命令参数略有区别,但大致是一样的。

1、 注册软件

以jdk为例,安装了jdk以后,先要在update-alternatives工具中注册;

序号命令
1# update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_91/bin/java 200
2# update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_111/bin/java 300

其中:

第一个参数–install表示向update-alternatives注册服务名。

第二个参数是注册最终地址,成功后将会把命令在这个固定的目的地址做真实命令的软链,以后管理就是管理这个软链;

( --install link name path priority)

其中link为系统中功能相同软件的公共链接目录,比如/usr/bin/java(需绝对目录);name为命令链接符名称,如java path为你所要使用新命令、新软件的所在目录 priority为优先级,当命令链接已存在时,需高于当前值,因为当alternative为自动模式时,系统默认启用priority高的链接;# 整数 根据版本号设置的优先级(更改的优先级需要大于当前的)

第三个参数:服务名,以后管理时以它为关联依据。

第四个参数,被管理的命令绝对路径。

第五个参数,优先级,数字越大优先级越高。

2、查看已注册列表

序号命令
1# update-alternatives --display java
2java - status is auto.
3link currently points to /opt/install/jdk1.8.0_111/bin/java
4/opt/install/jdk1.8.0_91/bin/java - priority 200
5/opt/install/jdk1.8.0_111/bin/java - priority 300
6Current `best’ version is /opt/install/jdk1.8.0_111/bin/java.

3、 修改命令版本

注意–display开关使用时第一行信息:

序号命令
1java - auto/manual mode

默认为自动版本,根据优先级,使用优先级高的。

下面手动修改为jdk1.8.0_91:

交互式修改

交互式会提示一所有可用的列表, 选择对应的索引确认。

序号Value
1# update-alternatives --config java
2There are 2 programs which provide ‘java’.
3Selection Command
41 /opt/install/jdk1.8.0_91/bin/java
5*+ 2 /opt/install/jdk1.8.0_111/bin/java
6Enter to keep the current selection[+], or type selection number: 1
7# java -version
8java version “1.8.0_91”
9Java™ SE Runtime Environment (build 1.8.0_91-b14)
10Java HotSpot™ 64-Bit Server VM (build 25.91-b14, mixed mode)
11# update-alternatives --display java
12java - status is manual.
13link currently points to /opt/install/jdk1.8.0_91/bin/java
14/opt/install/jdk1.8.0_91/bin/java - priority 200
15/opt/install/jdk1.8.0_111/bin/java - priority 300
16Current `best’ version is /opt/install/jdk1.8.0_111/bin/java.

5、管理软件包

开始我们以java为例,作为jre运行环境可以,但如果你作为开发测试环境,你会发现javac找不到。

序号命令
1# javac
2-bash: javac: command not found

原因是我们只对java命令做了版本管理。

事实上,update-alternatives的原理是软链管理,可以处理目录。那么我们就可以把整个软件包目录都纳入管理。

首先清理掉原来配置的java命令配置。

序号命令
1# update-alternatives --remove java /opt/jdk1.8.0_91/bin/java
2# update-alternatives --remove java /opt/jdk1.8.0_111/bin/java

ubuntu里可以直接使用下面的全部清除,centos没有:

序号命令
1# update-alternatives --remove-all java

注册javahome管理

序号命令
1#update-alternatives --install /usr/local/jdk jdk /opt/jdk1.8.0_111 300
2update-alternatives: using /opt/jdk1.8.0_111 to provide /usr/local/jdk (jdk) in auto mode
3#update-alternatives --install /usr/local/jdk jdk /opt/jdk1.8.0_91 200
4#update-alternatives --display jdk
5jdk - auto mode
6link best version is /opt/jdk1.8.0_111
7link currently points to /opt/jdk1.8.0_111
8link jdk is /usr/local/jdk
9/opt/jdk1.8.0_111 - priority 300
10/opt/jdk1.8.0_91 - priority 200

配置jdk环境变量,指向注册的软链地址。
#echo export JAVA_HOME=/usr/local/jdk >>~/.bash_profile

#echo export PATH= P A T H : PATH: PATH:JAVA_HOME/bin >>~/.bash_profile

#source ~/.bash_profile

管理JAVA_HOME

echo $JAVA_HOME

/usr/local/jdk

java -version

序号命令
1java version “1.8.0_111”
2Java™ SE Runtime Environment (build 1.8.0_111-b14)
3Java HotSpot™ 64-Bit Server VM (build 25.111-b14, mixed mode)
4# javac -version
5javac 1.8.0_111
6# update-alternatives --config jdk
7There are 2 choices for the alternative jdk (providing /usr/local/jdk).
8Selection Path Priority Status
9* 0 /opt/jdk1.8.0_111 300 auto mode
101 /opt/jdk1.8.0_111 300 manual mode
112 /opt/jdk1.8.0_91 200 manual mode
12Press to keep the current choice[*], or type selection number: 2
13update-alternatives: using /opt/jdk1.8.0_91 to provide /usr/local/jdk (jdk) in manual mode
14#echo $JAVA_HOME
15/usr/local/jdk
16#java -version
17java version “1.8.0_91”
18Java™ SE Runtime Environment (build 1.8.0_91-b14)
19Java HotSpot™ 64-Bit Server VM (build 25.91-b14, mixed mode)
20#javac -version
21javac 1.8.0_91
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值