喜欢 Linux 的一个很重要的原因是简单,不需要用鼠标就可以解决绝大多数问题,手只要放在键盘上敲命令就好了。
在 Linux 上进行版本控制很方便,今天用 Java 举例,讲讲用 update-alternatives 来管理同程序的不同版本。
Java 是个有历史,有故事的“事物”,Linux 上常用 OpenJDK,OpenJDK 就有很多版本了,不同项目要不同的版本,有时还要使用不同的开发商的 JDK,比如现在,我想试一试 ZuluJDK。
#安装
首先下载 ZuluJDK,下载解压后其实可以直接调用的,只要指定 path 就可以调用。但是这样不方便版本管理。找到你其他 JDK 的地址,一般都在 /usr/lib/jvm/
,把解压的文件夹放到这个文件夹下.
然后执行
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/zulu17.30.15-ca-jdk17.0.1-linux_aarch64/bin/java 1999
update-alternatives
参数解释: --install [link] [name] [path] [priority]
- link: 指系统命令的链接
- name: 配置名称
- path: 可选的命令链接路径
- priority: 优先级
update-alternatives
是以链接的方式进行版本管理的,以上命令告诉update-alternatives
,java 在/usr/lib/jvm/zulu17.30.15-ca-jdk17.0.1-linux_aarch64/bin/java
有一个新版本,优先级是 1999。
#修改
执行
sudo update-alternatives --config java
会提示机器上所有的可选版本,输入前边的数字选择想要的版本。
$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/zulu17.30.15-ca-jdk17.0.1-linux_aarch64/bin/java 1999 auto mode
* 1 /usr/lib/jvm/java-11-openjdk-arm64/bin/java 1111 manual mode
2 /usr/lib/jvm/java-17-openjdk-arm64/bin/java 1711 manual mode
3 /usr/lib/jvm/zulu17.30.15-ca-jdk17.0.1-linux_aarch64/bin/java 1999 manual mode
#删除
sudo update-alternatives --remove java /usr/lib/jvm/zulu17.30.15-ca-jdk17.0.1-linux_aarch64/bin/java
将删除刚才安装的 JDK 链接,文件依旧在 /usr/lib/jvm/
下,然后手动删除文件。
#查看所有版本
sudo update-alternatives --list java