< 返回版块

2019-03-19 17:49    责任编辑:Mike

标签:rustup

背景介绍

Rust 项目本有三个版本: stable, beta, nightly 同时开发维护,其中 stable 里面的 API 会保证向后兼容,nightly 是每天或每隔几天编译出二进制版本释出,里面有一些实验性的特性 API 可能会时常变动,开发者测试一段时间后,保留下来会进入下一个 beta 版,beta 版再测试六周如果足够稳定就会进入再下一个 stable 版。stable 和 beta 都是每六周发布一个版本,三个版本同时递推演进。比如当前(2016-04-010)的 stable 版本是 1.7, beta 版本号是 1.8,nigitly 版本号是 1.9,其中 stable 和 beta 都是 2016-03-03 发布的,再过几天(2016-04-14) stable 就会变成 1.8,而 beta 则变成 1.9,按 Rust semver 规定,nightly 会变成 1.10。

从设计初衷来讲,stable 是给生产用的,beta 供开发人员测试用,而 nightly 则是给 Rust 团队内部开发人员用的。理论上,普通开发人员不应该使用 nightly,但是老实讲,Rust 虽然 1.0 之后语法稳定下来了,但是标准库和社区相关项目现在还有好多没法用 stable 版本编译,因为用到了很多 nightly 才提供的特性,所以生产上讲当前 1.7-stable 版本依然是满足不了需求的,比如 Dropbox 在一些生产项目中使用的 Rust 也是 nightly 版本。不过按照 Rust 的演进速度和 Rust team 开发实力,再过几个版本应该就可以完全用 stable 版本写生产项目。

基于上述原因,需要一个工具来管理 Rust 版本问题,这个工具就是 rustup

安装

Linux/Mac OSX

直接在命令行里运行

curl https://sh.rustup.rs -sSf | sh

Windows

Windows 环境有两种选择:原生 MSVC ABI 和 GNU ABI,前者需要安装 Visual Studio 2013 或以上版本,后者使用 GCC 工具链,如果需要与 Visual Studio 编译的工具和库交互,则使用前者,如果项目依赖的库是一些开源库,比如 openssl,建议使用后者。对于初学者而言,后者可能是一个更好的选择,网上很多开源项目对 MSVC 工具链支持并不好,使用 GCC 工具链可以减少很多麻烦。

实际上安装 MSVC 或 GNU ABI 都可以随时用 rustup 命令再切换到另一种 ABI 版本,比如如果下载安装的是 GNU ABI,则 rustup update stable-msvc 就可以切换到 MSVC ABI

rustup 在 *nix 系统环境下会将 $HOME/.cargo/bin 添加到 $PATH,在 Windows 环境下则会将 %USERPROFILE%\.cargo\bin 添加到环境变量中,如果没有则自己手动添加,然后就可以使用 rustup 命令了。

如果出问题了或者想完全卸载,直接运行 rustup self uninstall 即可

版本管理

更新

  • 更新所有安装的工具链: rustup update
  • 更新某个版本: rustup update nightly

更新时可以指定环境变量 RUSTUP_DIST_ROOT 从镜像下载,例如 export RUSTUP_DIST_ROOT=https://mirrors.ustc.edu.cn/rust-static 使用中科大镜像

指定版本

  • 设置系统默认版本: rustup default nightly
  • 设置某项目使用的 Rust 版本(随时可以切换): rustup override beta

跨平台编译

  • 添加工具链: rustup target add arm-linux-androidabi
  • 列出工具链: rustup target list

跨平台编译详见这里

更多更详细的说明可以通过 rustup help 查看帮助或者参考rustup 项目文档说明