asdf 通用版本管理器完整教程
你是否厌倦了为不同语言安装不同的版本管理器(NVM 管 Node、Pyenv 管 Python、Rbenv 管 Ruby)?asdf 是一个通用版本管理器,通过插件系统支持几乎所有编程语言和工具的版本管理。一个 .tool-versions 文件即可定义项目所需的所有运行时版本。购买搬瓦工使用优惠码 NODESEEK2026 享 6.77% 折扣。
一、安装 asdf
# 安装依赖
apt update && apt install -y curl git
# 克隆 asdf
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.0
# 添加到 ~/.bashrc
echo '. "$HOME/.asdf/asdf.sh"' >> ~/.bashrc
echo '. "$HOME/.asdf/completions/asdf.bash"' >> ~/.bashrc
source ~/.bashrc
# 验证
asdf --version
二、插件管理
asdf 通过插件支持不同语言和工具。每种语言/工具需要先添加对应插件:
# 添加插件
asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
asdf plugin add python
asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git
asdf plugin add java https://github.com/halcyon/asdf-java.git
asdf plugin add golang https://github.com/asdf-community/asdf-golang.git
asdf plugin add rust https://github.com/asdf-community/asdf-rust.git
# 查看已安装的插件
asdf plugin list
# 查看所有可用插件
asdf plugin list all
# 更新插件
asdf plugin update nodejs
asdf plugin update --all
# 删除插件
asdf plugin remove golang
三、安装语言版本
# 查看可安装版本
asdf list all nodejs
asdf list all python
# 安装指定版本
asdf install nodejs 20.11.0
asdf install python 3.12.1
asdf install ruby 3.3.0
asdf install java temurin-21.0.2+13.0.LTS
# 查看已安装版本
asdf list nodejs
asdf list python
四、版本切换
# 设置全局版本
asdf global nodejs 20.11.0
asdf global python 3.12.1
# 设置项目级版本(创建 .tool-versions)
cd /opt/my-project
asdf local nodejs 18.19.0
asdf local python 3.11.7
# 查看 .tool-versions 文件
cat .tool-versions
# nodejs 18.19.0
# python 3.11.7
# 设置当前 Shell 临时版本
asdf shell nodejs 22.0.0
# 查看当前所有版本
asdf current
五、.tool-versions 文件
asdf 的核心是 .tool-versions 文件,它定义了项目所需的所有运行时版本:
# .tool-versions 示例
nodejs 20.11.0
python 3.12.1
ruby 3.3.0
java temurin-21.0.2+13.0.LTS
团队成员克隆项目后,只需执行 asdf install 即可安装 .tool-versions 中定义的所有版本:
# 自动安装所有定义的版本
asdf install
六、与专用工具对比
| 场景 | 专用工具 | asdf 替代 |
|---|---|---|
| Node.js | NVM | asdf + nodejs 插件 |
| Python | Pyenv | asdf + python 插件 |
| Ruby | Rbenv | asdf + ruby 插件 |
| Java | SDKMAN | asdf + java 插件 |
asdf 的优势是统一管理接口,一个配置文件搞定所有。专用工具在各自领域的功能更丰富(如 SDKMAN 管理 Maven/Gradle、NVM 的 .nvmrc 生态)。
七、常用命令速查
# 插件管理
asdf plugin add <name> # 添加插件
asdf plugin list # 查看已安装插件
asdf plugin update --all # 更新所有插件
# 版本管理
asdf list all <name> # 查看可安装版本
asdf install <name> <ver> # 安装版本
asdf uninstall <name> <ver> # 卸载版本
asdf list <name> # 查看已安装版本
# 版本切换
asdf global <name> <ver> # 全局版本
asdf local <name> <ver> # 项目版本
asdf shell <name> <ver> # 临时版本
asdf current # 查看当前所有版本
# 自动安装
asdf install # 安装 .tool-versions 中的所有版本
# 更新 asdf
asdf update
八、最佳实践
- 将
.tool-versions提交到 Git,确保团队使用相同版本。 - 在 CI/CD 流水线中使用 asdf 统一管理构建环境。
- 定期运行
asdf plugin update --all更新插件获取最新版本列表。 - 对于 Java 项目,如果需要 Maven/Gradle 管理,SDKMAN 可能更方便。
总结
asdf 是管理多语言开发环境的利器,特别适合全栈开发者和多语言项目。如果你在搬瓦工 VPS 上同时运行 Node.js、Python 和 Ruby 等多种应用,asdf 可以大幅简化环境管理。如果你只使用单一语言,专用工具(NVM、Pyenv、Rbenv)可能更适合。选购搬瓦工请访问 全部方案,使用优惠码 NODESEEK2026 享 6.77% 折扣,通过 bwh81.net 进入官网。