在 Debian
系统,比如 Ubuntu
中,经常会出现一个软件安装多个版本或类别的需求,而在使用时可以方便的切换。update-alternatives
就是用来在 Debian
系统中维护系统命令连接符的工具。
通过一定的设置,可以实现系统自动的选择最新的软件版本或最合适的软件类别。比如,维护系统的多个JDK
的版本;维护editor
命令所对应的编辑工具是 vim
或 emacs
。
命令介绍
基本的命令格式
在Ubuntu
的终端中输入 man update-alternatives
就可以查看该命令的详细使用信息。
命令的基本格式:
@H_
502_40@update-alternatives [option...] command
install 命令
install
命令用来增加一组新的系统命令连接符。
@H_
502_40@update-alternatives --install link name path priority [--slave link name path]...
sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk-
9/bin/java
1702
- link 系统中功能相同的软u件的公共链接目录。比如
/usr/bin/java
- name 命令连接符在
alternatives
目录的名字
- path 需要被链接的软件的目录,比如
/usr/local/java/jdk-9/bin/java
- priority 优先级,数值越大优先级越高。当
alternative
为 auto
模式时,系统会自动选择优先级高的软件
- slave
slave
创建的链接从属某一个主链接。
查看命令
display
update-alternatives --display name
用来展示某一个 name
的包含的链接的详细信息。包括模式、优先级以及当前最佳的软件版本。
@H_
502_40@~$ update
-alternatives --display java
java
- manual mode
link currently points
to /usr/
local/java/jdk1
.8.0_111/bin/java
/usr/lib/jvm/java
-7-openjdk-amd64/jre/bin/java
- priority
1071
slave java
.1.gz: /usr/lib/jvm/java
-7-openjdk-amd64/jre/man/man1/java
.1.gz
/usr/
local/java/jdk
-9/bin/java
- priority
1074
/usr/
local/java/jdk1
.7.0_79/bin/java
- priority
1072
/usr/
local/java/jdk1
.8.0_111/bin/java
- priority
1073
Current
'best' version is
'/usr/local/java/jdk-9/bin/java'.
update-alternatives --query
以更友好的格式来查看。
update-alternatives --list
展示更简洁的信息。
config 命令
config
命令允许我们以交互的形式进行软件的切换。
@H_
502_40@~$ sudo update-alternatives
[sudo] password
for zhaoyu:
There are
4 choices
for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
0 /usr/
local/java/jdk-
9/bin/java
1074 auto mode
1 /usr/lib/jvm/java-
7-openjdk-amd64/jre/bin/java
1071 manual mode
2 /usr/
local/java/jdk-
9/bin/java
1074 manual mode
3 /usr/
local/java/jdk1
.7.0_79/bin/java
1072 manual mode
*
4 /usr/
local/java/jdk1
.8.0_111/bin/java
1073 manual mode
Press enter
to keep
the current choice[*],
or type selection
number:
在上述模式下,输入我们想要切换的软件编号即可。
remove 命令
update-alternatives --remove name path
命令可以用来移除某个指定的name
中的某个软件版本。比如:
@H_
502_40@
sudo update-alternatives --remove java /usr/local/java/jdk1.
6.0_45/bin/java
-- remove-all name
可以用来移除某一name
下的所有软件。
auto 命令
update-alternatives --auto name
命令可以用来设置某一name
的软件管理模式为自动。设置完成后,会根据priority
选择版本高的软件。
总结
update-alternatives
命令方便地用来进行JDK
的版本管理,包括java javac javap jar
等命令都可以配置。如下:
@H_
502_40@
sudo update-alternatives --install /usr/bin/javac javac /usr/local/jdk1.
7.0_80/bin/javac
300
使用该方法管理JDK
时,需要注意$JAVA_HOME PATH
的配置:
@H_
502_40@
export JAVA_HOME=/usr/local/java/jdk1.
8.0_111
export PATH=
$PATH:
$JAVA_HOME/bin:
$JAVA_HOME/jre/bin
export CLASSPATH=
$CLASSPATH:.:
$JAVA_HOME/lib:
$JAVA_HOME/jre/lib
要先查找 $PATH
(PATH=
PATH:
JAVA_HOME/bin:
JAVAHOME/jre/bin)而不是‘
JAVA_HOME` 对应的路径(PATH=
JAVAHOME/bin:
JAVA_HOME/jre/bin:$PATH)。
引用
- @L_403_2@
- Linux命令大全
- Linux 教程