为了方便(更快的构建循环和自动更新)是否有可能拥有一个每夜构建的Rust编译器以及从GitHub克隆的用于实验目的的Rust开发版本?
我的想法是我有一个二进制版本的Rust用于我的各种项目,还有一个可以随便玩的Rust版本,它们之间不会造成混乱。
如果有关系的话,请假设我的操作系统是Ubuntu 64位。
目前的解决方案是使用rustup。安装完成后,您可以安装多个工具链:toolchains:
rustup install nightly
rustup install stable
rustup install 1.7
如果您已经在本地构建了Rust,则可以将其作为工具链进行链接
rustup toolchain link my-development /path/to/rust/code
您可以选择一个默认的工具链。rustup default stable
您可以通过 rustup
为您机器上的特定目录添加一个 覆盖工具链。
cd /my/cool/project
rustup override set nightly
或者通过一个 rust-toolchain
文件,向特定目录(如存储库)添加一个覆盖工具链。
cd /my/cool/project
echo "nightly" > rust-toolchain
如果你只想暂时使用不同的工具链,你可以使用“加号语法”:
rustc +1.7 --help
cargo +nightly build
在其他情况下,您可以使用rustup run
在特定的工具链中运行任何自定义命令:rustup run nightly any command you want here
另请参阅:
--prefix
选项的时候,需要执行./configure
命令,例如:--prefix=~/opt/rust-dev
,这样安装的文件将完全包含在该目录中。通常在处理 rustup
时,您会处理 toolchains - Rust编译器的一次安装。有3个主要的发布渠道:
频道可以附加可选日期和主机名:channel[-date][-host]
。
您可以使用 rustup
安装多个工具链:
rustup toolchain install nightly
rustup toolchain install stable-x86_64-pc-windows-msvc
安装 nightly 时要小心,因为使用 rustup update
更新时会同时更新 stable 版本。
您可以拥有不同级别的覆盖:
# command level
rustc +beta <command>
cargo +beta <command>
# environment level
export RUSTUP_TOOLCHAIN=nightly-2019-05-22
# directory level
rustup override set stable
rust-toolchain
文件进行版本控制。$ cat rust-toolchain
nightly-2019-05-22
rust-toolchain
文件中无法配置任何主机名。
覆盖优先级如下:
cargo +beta
RUSTUP_TOOLCHAIN
环境变量rustup override set beta
rust-toolchain
文件参考资料:https://github.com/rust-lang/rustup.rs#toolchain-specification
你也不需要安装开发版本。你可以从$PATH中的某个位置创建符号链接,指向源代码树/构建目录中某个位置的rustc二进制文件,编译器将找到其动态链接的依赖项,并生成知道该路径的二进制文件(即使是动态链接的)。
试试envirius。
它允许您创建任意数量的环境,并使用任何版本的Rust。
第一次使用时,它将下载Rust的源代码并进行编译。这需要一些时间。但第二次及以后的尝试只需不到10秒钟,因为它只会将二进制文件复制到目标环境中。
例如:
➥ nv mk --rust=0.9
Creating environment: rust-0.9 ...
* installing rust==0.9 ...
* done (in 5 secs.)
➥ nv ls
Available environment(s):
rust-0.9
➥ nv on rust-0.9
Environment rust-0.9 activated.
(rust-0.9) ➥ rustc -v
rustc 0.9
make install
不会导致两个Rust编译器互相冲突吗?此外,在可能存在较旧的rustc
的情况下,测试将如何进行?我如何在rust-dev
上运行Rust测试套件? - Daniel Fath