alternatives/update-alternatives的用法
alternatives(update-alternatives)命令用于处理 Linux 系统中软件版本的切换,使其多版本共存。alternatives 的管理目录 /etc/alternatives 。
用法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| # alternatives --help alternatives(备用)版本 1.7.4 - 版权 (C) 2001 红帽公司 在 GNU 公共许可条款下,本软件可被自由地重发行。 用法:alternatives --install <链接> <名称> <路径> <优先度> [--initscript <服务>] [--family <family>] [--slave <链接> <名称> <路径>]* alternatives --remove <名称> <路径> alternatives --auto <名称> alternatives --config <名称> alternatives --display <名称> alternatives --set <名称> <路径> alternatives --list common options: --verbose --test --help --usage --version --keep-missing --altdir <目录> --admindir <目录> #
|
举例说明
以CentOS 7下java命令为例说明alternatives的用法
环境说明
最小化安装CentOS 7.6, 安装java 8 和java 11
1 2
| sudo yum install java-11-openjdk-devel sudo yum install java-1.8.0-openjdk-devel
|
安装完后,yum安装的java路径为/usr/lib/jvm/
,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # ll /usr/lib/jvm/ 总用量 0 lrwxrwxrwx. 1 root root 26 4月 25 21:29 java -> /etc/alternatives/java_sdk lrwxrwxrwx. 1 root root 29 4月 25 21:28 java-11 -> /etc/alternatives/java_sdk_11 lrwxrwxrwx. 1 root root 37 4月 25 21:28 java-11-openjdk -> /etc/alternatives/java_sdk_11_openjdk drwxr-xr-x. 8 root root 97 4月 25 21:28 java-11-openjdk-11.0.14.1.1-1.el7_9.x86_64 lrwxrwxrwx. 1 root root 32 4月 25 21:29 java-1.8.0 -> /etc/alternatives/java_sdk_1.8.0 lrwxrwxrwx. 1 root root 40 4月 25 21:29 java-1.8.0-openjdk -> /etc/alternatives/java_sdk_1.8.0_openjdk drwxr-xr-x. 7 root root 135 4月 25 21:29 java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64 lrwxrwxrwx. 1 root root 34 4月 25 21:29 java-openjdk -> /etc/alternatives/java_sdk_openjdk lrwxrwxrwx. 1 root root 21 4月 25 21:29 jre -> /etc/alternatives/jre lrwxrwxrwx. 1 root root 24 4月 25 21:28 jre-11 -> /etc/alternatives/jre_11 lrwxrwxrwx. 1 root root 32 4月 25 21:28 jre-11-openjdk -> /etc/alternatives/jre_11_openjdk lrwxrwxrwx. 1 root root 42 4月 25 21:28 jre-11-openjdk-11.0.14.1.1-1.el7_9.x86_64 -> java-11-openjdk-11.0.14.1.1-1.el7_9.x86_64 lrwxrwxrwx. 1 root root 27 4月 25 21:29 jre-1.8.0 -> /etc/alternatives/jre_1.8.0 lrwxrwxrwx. 1 root root 35 4月 25 21:29 jre-1.8.0-openjdk -> /etc/alternatives/jre_1.8.0_openjdk lrwxrwxrwx. 1 root root 51 4月 25 21:29 jre-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64 -> java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre lrwxrwxrwx. 1 root root 29 4月 25 21:29 jre-openjdk -> /etc/alternatives/jre_openjdk #
|
其中java 8 和java 11的安装目录是
- /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre/bin/java
- /usr/lib/jvm/java-11-openjdk-11.0.14.1.1-1.el7_9.x86_64/bin/java
系统java目前链接的是java 8
1 2 3 4 5 6 7
| # which java /usr/bin/java # ll /usr/bin/java lrwxrwxrwx. 1 root root 22 4月 25 21:29 /usr/bin/java -> /etc/alternatives/java # ll /etc/alternatives/java lrwxrwxrwx. 1 root root 73 4月 25 21:29 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre/bin/java #
|
用法说明
使用alternatives --list
列出支持的可选组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| # alternatives --list libnssckbi.so.x86_64 auto /usr/lib64/pkcs11/p11-kit-trust.so ld auto /usr/bin/ld.bfd mta auto /usr/sbin/sendmail.postfix java auto /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre/bin/java jre_openjdk auto /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre jre_11 auto /usr/lib/jvm/java-11-openjdk-11.0.14.1.1-1.el7_9.x86_64 jre_11_openjdk auto /usr/lib/jvm/jre-11-openjdk-11.0.14.1.1-1.el7_9.x86_64 javac auto /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/bin/javac java_sdk_openjdk auto /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64 java_sdk_11 auto /usr/lib/jvm/java-11-openjdk-11.0.14.1.1-1.el7_9.x86_64 java_sdk_11_openjdk auto /usr/lib/jvm/java-11-openjdk-11.0.14.1.1-1.el7_9.x86_64 jre_1.8.0 auto /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre jre_1.8.0_openjdk auto /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64 java_sdk_1.8.0 auto /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64 java_sdk_1.8.0_openjdk auto /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64 #
|
使用alternatives --config java
设置java候选项。
1 2 3 4 5 6 7 8 9 10
| alternatives --config java 共有 2 个提供“java”的程序。 选项 命令 ----------------------------------------------- 1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.14.1.1-1.el7_9.x86_64/bin/java) *+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre/bin/java) 按 Enter 保留当前选项[+],或者键入选项编号:
|
选择“1”,来设置默认的java命令为java 11。
选择过后,系统默认java就被设置为java 11了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # which java /usr/bin/java # # ll /usr/bin/java lrwxrwxrwx. 1 root root 22 4月 25 21:39 /usr/bin/java -> /etc/alternatives/java # # ll /etc/alternatives/java lrwxrwxrwx. 1 root root 64 4月 25 21:39 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-11.0.14.1.1-1.el7_9.x86_64/bin/java # # java -version openjdk version "11.0.14.1" 2022-02-08 LTS OpenJDK Runtime Environment 18.9 (build 11.0.14.1+1-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.14.1+1-LTS, mixed mode, sharing) #
|
Reference