是否可以同时存在多个Rust安装?

15

为了方便(更快的构建循环和自动更新)是否有可能拥有一个每夜构建的Rust编译器以及从GitHub克隆的用于实验目的的Rust开发版本?

我的想法是我有一个二进制版本的Rust用于我的各种项目,还有一个可以随便玩的Rust版本,它们之间不会造成混乱。

如果有关系的话,请假设我的操作系统是Ubuntu 64位。

6个回答

35

目前的解决方案是使用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 

另请参阅:


2
当你在开发版本中使用--prefix选项的时候,需要执行./configure命令,例如:--prefix=~/opt/rust-dev,这样安装的文件将完全包含在该目录中。

好的,但是make install不会导致两个Rust编译器互相冲突吗?此外,在可能存在较旧的rustc的情况下,测试将如何进行?我如何在rust-dev上运行Rust测试套件? - Daniel Fath
2
@DanielFath,“--prefix”脚本定义了一个目录,所有由构建过程生成的文件(我是说,构成可用编译器的所有文件)都将放在其中。您的系统不会进行任何其他更改。您甚至不应该使用sudo来进行“make install”。然后,您将需要将相应的“bin”目录添加到“PATH”环境变量中,以直接调用“rustc”,类似于“export PATH =”〜/ opt / rust-dev:$ PATH“。然后,在这个特定的shell中,您将使用编译器的开发版本。 - Vladimir Matveev

1
尝试配置你的IDE。虽然我在Windows电脑上工作,但我认为这个想法与Ubuntu类似。首先,我已经安装了3个版本的Rust到:C:\Rust\64 beta MSVC 1.9,C:\Rust\64 nightly MSVC 1.10和C:\Rust\64 stable MSVC 1.8。然后我配置了我的IDE(在这种情况下是IntelliJ IDEA 2016 + Rust Plug-In),以根据构建选择器使用不同版本的Rust。之后,我可以通过从工具栏中选择构建配置来使用不同版本的Rust编译我的代码。

0

通常在处理 rustup 时,您会处理 toolchains - Rust编译器的一次安装。有3个主要的发布渠道:

  • stable
  • beta
  • nightly

频道可以附加可选日期和主机名: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


0

你也不需要安装开发版本。你可以从$PATH中的某个位置创建符号链接,指向源代码树/构建目录中某个位置的rustc二进制文件,编译器将找到其动态链接的依赖项,并生成知道该路径的二进制文件(即使是动态链接的)。


0

试试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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接