ubuntu下优雅的切换任何软件版本,比如切换JDK版本
Posted 境悟初
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu下优雅的切换任何软件版本,比如切换JDK版本相关的知识,希望对你有一定的参考价值。
本次使用的ubuntu系统版本为 20.04
. 很多博客都提到优雅的切换JDK版本,但实际上可以更近一步,实现所有软件多版本的优雅切换。
$ uname -a
Linux jack-f1 5.11.0-44-generic #48~20.04.2-Ubuntu SMP Tue Dec 14 15:36:44 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
先来看JDK的安装和多版本切换。
安装Open-JDK
首先,安装多个版本的JDK:(ubuntu20.04默认安装的是JDK11)
查看下当前支持的JDK版本:
安装JDK8:
$ sudo apt install openjdk-8-jdk
切换JDK
然后使用 update-alternatives --config java
切换
jack@jack-f1:~$ java -version
openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.20.04, mixed mode)
jack@jack-f1:~$ sudo update-alternatives --config java
有 2 个候选项可用于替换 java (提供 /usr/bin/java)。
选择 路径 优先级 状态
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 自动模式
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 手动模式
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 手动模式
要维持当前值[*]请按<回车键>,或者键入选择的编号:2
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 来在手动模式中提供 /usr/bin/java (java)
jack@jack-f1:~$ java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-8u312-b07-0ubuntu1~20.04-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
继续
一般到这里就可以结束了,这也是大多数人的做法。
但是,我们只需要稍微问一下,update-alternatives
是干什么的?为什么可以切换JDK版本?只能切换JDK吗?
没错,这就是思考了。
开源系统由于版权问题无法直接引用Oracle JDK,但一般来说OpenJDK足够使用了。不过,有时必须得配置成OracleJDK,能不能像上面一样优雅的切换呢?
当然可以。
强大且简单的update-alternatives
使用man命令可以知道 update-alternatives
这个命令和具体软件无关,只是个符号连接的切换工具。既然能实现java命令的切换,也可以实现其他的。
$ update-alternatives --help
用法:update-alternatives [<选项> ...] <命令>
命令:
--install <链接> <名称> <路径> <优先级>
[--slave <链接> <名称> <路径>] ...
在系统中加入一组候选项。
--remove <名称> <路径> 从 <名称> 替换组中去除 <路径> 项。
--remove-all <名称> 从替换系统中删除 <名称> 替换组。
--auto <名称> 将 <名称> 的主链接切换到自动模式。
--display <名称> 显示关于 <名称> 替换组的信息。
--query <名称> 机器可读版的 --display <名称>.
--list <名称> 列出 <名称> 替换组中所有的可用候选项。
--get-selections 列出主要候选项名称以及它们的状态。
--set-selections 从标准输入中读入候选项的状态。
--config <名称> 列出 <名称> 替换组中的可选项,并就使用其中
哪一个,征询用户的意见。
--set <名称> <路径> 将 <路径> 设置为 <名称> 的候选项。
--all 对所有可选项一一调用 --config 命令。
<链接> 是指向 /etc/alternatives/<名称> 的符号链接。
(如 /usr/bin/pager)
<名称> 是该链接替换组的主控名。
(如 pager)
<路径> 是候选项目标文件的位置。
(如 /usr/bin/less)
<优先级> 是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高。
使用非常简单,我们只需要再安装一个Oracle JDK的引用就可以随意切换了。
sudo update-alternatives --install /usr/bin/java java /usr/share/oracle-jdk8/bin/java 1
然后再切换就容易了:
总结
是不是感觉这么简单功能很实用?
平时用windows,也有相关环境变量的切换工具。不过还是linux简单方便。
以上是关于ubuntu下优雅的切换任何软件版本,比如切换JDK版本的主要内容,如果未能解决你的问题,请参考以下文章