作为一名全干工程师,我们会在同一个电脑上安装各种工具,然而又会因为各种原因,需要使用这些工具的不同版本,版本管理就变的十分重要。

我们会使用 nvm 来管理 Node.js;

我们会使用 gvm 来管理 Go;

我们会使用 pyenv 或者 Conda 来管理 Python;

这些工具都十分强大,但使用方式却各不相同,一段时间不使用,就不得不重新熟悉每个工具的使用方式。重要的是,平白无故又多了好几个软件。

在一次重装系统之后,终于忍无可忍… 其实我的需求很简单,也用不到版本管理器的那些高级功能,我只是需要一个小巧的版本管理器,使用统一的管理方式,统一的命令。

因此 xvm 应运而生,融合了 Node.js, Go, Python 等的版本管理工具,虽然没有专业的工具那么强大,但小巧且命令统一。

xvm 是 linux 和 macos 上的版本管理工具,windows 上可以使用 xvm-windows

安装方式

curl -o- https://raw.githubusercontent.com/duan0120/xvm/main/install.sh | bash

或者

git clone https://github.com/duan0120/xvm.git ~/.xvm

将下面代码放到 ~/.bashrc 或者  ~/.zshrc 中,并重新 source

export XVM_ROOT=~/.xvm
[ -s "$XVM_ROOT/xvm" ] && source "$XVM_ROOT/xvm"

使用方式

查看版本 

xvm -v

获取帮助

xvm -h
xvm help node

Node.js

查看版本

# 查看发布版本
xvm node ls-remote
# 查看 lts 版本
xvm node ls-remote --lts
# 查看已安装版本
xvm node list
# 查看默认版本
xvm node default

安装指定版本

# 安装指定版本
xvm node install v18.19.1
# 安装指定版本,并设置为默认版本, 重启terminal或者source生效
xvm node install v18.19.1 --default

卸载指定版本

xvm node uninstall v18.19.1

切换版本

# 临时切换指定版本
xvm node use v18.19.1
# 临时切换指定版本,并设置为默认
xvm node use v18.19.1 --default

Go

查看版本

xvm go ls-remote
xvm go list

安装指定版本

xvm go install go1.19.2
# 安装并设置为默认版本
xvm go install go1.19.2 --default
# 
xvm go install go1.13.10 --default --arch=amd64

如果需要指定下载地址,可以在 ~/.xvm/scripts/go-scripts/proxy 文件中指定,如 https://golang.google.cn

卸载指定版本

xvm go uninstall go1.19.2

切换版本

# 临时切换指定版本
xvm go use go1.19.2
# 临时切换指定版本,并设置为默认
xvm go use go1.19.2 --default

查看默认版本

xvm go default

Python

xvm 也支持管理虚拟环境,并且操作很简单

安装依赖

Python使用的是源码编译安装,需要安装依赖,请参考 https://devguide.python.org/getting-started/setup-building/

查看版本

xvm python ls-remote
xvm python list

安装指定版本

xvm python install 3.12.0
# 安装并设置为默认版本
xvm python install 3.12.0 --default

切换版本

# 临时切换指定版本
xvm python use 3.12.0
# 临时切换指定版本,并设置为默认
xvm python use 3.12.0 --default

查看默认版本

xvm python default

创建虚拟环境

xvm python alias 3.12.0 venv

激活虚拟环境

xvm python activate venv

撤销虚拟环境

xvm python deactivate

卸载指定版本

xvm python uninstall 3.12.0
# 删除虚拟环境
xvm python uninstall venv