adsf-vm
官方给出的定义是:
Manage multiple runtime versions with a single CLI tool
大家在日常开发时,经常遇到需要对同一个编程语言/框架安装不同版本的情况,比如 python 2/3 ,ruby 1.8/1.9,scala 2.11/2.12/... ,gradle 4.x/5.x 等等。虽然已经有pyenv,rvm,sdkman 等等针对这些语言进行多版本的管理,方便不同版本的环境切换,但是:
- 要安装很多这种管理软件
- 有些编程语言/框架没有类似的多版本环境管理软件
于是有了adsf-vm
。一个工具管理多版本的运行时环境,而且提供了plugin
的概念,方便所有人扩展定义针对编程语言/框架的管理。比如 Elasticsearch
Kubectl
MySQL
等都可以用adsf-vm
进行版本管理。
安装
参考官方文档即可。https://asdf-vm.com/#/core-manage-asdf-vm
对于macOS
我是通过brew
安装,比较简单:
brew install coreutils curl git
brew install asdf
添加到zsh
环境:
echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ~/.zshrc
搞定。
插件管理
主要流程是:先添加插件,然后安装,设置当前使用的版本。就可以使用了。 添加插件:
asdf plugin add <name>
# asdf plugin add gradle
如果需要安装的插件不在当前插件库,也可以指定插件的仓库url:
asdf plugin add <name> <git-url>
查看当前添加的插件列表:
asdf plugin list
# asdf plugin list
# java
# nodejs
asdf plugin list --urls
# asdf plugin list
# java https://github.com/halcyon/asdf-java.git
# nodejs https://github.com/asdf-vm/asdf-nodejs.git
更新插件:
asdf plugin update --all
asdf plugin update <name>
移除一个插件:
asdf plugin remove <name>
插件的版本管理
查看插件库里所有可用的版本
asdf list all <name>
asdf list all <name> <version>
指定插件的版本安装:
asdf install <name> <version>
查看已经安装的插件版本:
asdf list <name>
设置插件的当前版本:
asdf global <name> <version> [<version>...]
asdf shell <name> <version> [<version>...]
asdf local <name> <version> [<version>...]
global
就是全局设定了,会把版本写入$HOME/.tool-versions
shell
就是设定在当前shell环境生效。实际上是把版本信息写入了当前环境变量ASDF_${LANG}_VERSION
local
会写入$PWD/.tool-versions
查看插件的当前版本
asdf current
asdf current <name>
卸载当前版本
asdf uninstall <name> <version>
深入插件
插件非常简单,就是一个git库。包含3个脚本,用于响应list-all
, install
或者 uninstall
命令。
bin/list-all
列出插件所有可用版本bin/download
下载插件bin/install
安装特定版本的插件
实际上大部分插件都只有bin/list-all
bin/install
这俩个文件。