大家好,
我写了 rsvm:
https://github.com/rsvm-sh/rsvm
它从 static.rust-lang.org 下载官方工具链,校验 SHA256,装到 ~/.rsvm/versions/ 下面。可以同时装着好几个版本;切换时只改当前这个终端的 PATH,别的窗口不受影响。也不会调用 rustup default。
多版本
每个版本单独一个目录,互不覆盖:
~/.rsvm/versions/1.85.0/
~/.rsvm/versions/1.98.0/
~/.rsvm/versions/1.100.0-nightly-2026-08-30/
rsvm install 只往里加,不会把已经装好的删掉。rsvm list 看装了哪些。rsvm uninstall 1.85.0 只删这一个,缓存里的安装包也会清掉。正在用的版本不能删,先 rsvm use 切走再卸。
rsvm install stable
rsvm install beta
rsvm install nightly # 目录名会带上日期
rsvm install 1.85.0
rsvm list
rsvm current
rsvm which 1.85.0
rsvm uninstall 1.85.0
stable / beta / nightly 安装时取该通道当时的最新版。rsvm alias default 1.85 表示默认用已安装的最新 1.85.x,新开终端会跟这个 default。
切换版本
rsvm use <version> 把这个版本的 bin 放到当前终端 PATH 最前面。已经打开的其他终端不会跟着变。
rsvm use stable
rustc --version
rsvm use 1.85.0
rustc --version
rsvm use system # 当前终端不再走 rsvm,改用系统里的 rustc
不想切整个终端,只想用某个版本跑一条命令:
rsvm run 1.85.0 cargo test
rsvm-exec 1.85.0 cargo build
项目里可以放一个 .rust-version 指定版本。命令不写版本号时,rsvm install、rsvm use、rsvm-exec -- 会从当前目录往上找最近的这个文件。
echo 1.85.0 > .rust-version
rsvm use
rsvm-exec -- cargo test
这个文件只有 rsvm 会读。Cargo 和 rust-analyzer 认的是 rust-toolchain.toml。
切版本只作用于当前终端,不会改全局默认,也不会调用 rustup default。
现状
- v0.1.0,MIT
- bash / zsh,需要
curl和tar - 暂时没有 Windows 和 fish
- 装下来的是官方这套:
rustc、cargo、rustdoc、std
安装
curl -o- https://raw.githubusercontent.com/rsvm-sh/rsvm/v0.1.0/install_sh.sh | bash
source ~/.zshrc # 或 ~/.bashrc
rsvm help
欢迎提意见、开 issue 和 PR。
仓库: https://github.com/rsvm-sh/rsvm 许可证: MIT
评论区
写评论还没有评论