作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343
邮箱 :291148484@163.com
本文地址:https://blog.csdn.net/qq_28550263/article/details/130758057
Rust 官方默认的 Cargo 源服务器为 crates.io,其同时也是 Rust 官方的 crate 管理仓库,但是由于官方服务器部署在北美洲,中国大陆用户下载速度较慢,甚至反复中断下载——你是否正在经历 cargo 安装模块太慢?甚至进度卡停?
cargo add xxxx Updating crates.io xxxx warning: spurious network error (2 tries remaining): failed to receive response: 操作超时 ; class=Os (2) Fetch [======> ] 30.16%, 415.60KiB/s
… enmm,不用担心。当你主动来查找时,那么就如你所猜想的,作为 rust 语言的包管理器的 cargo,当然也有国内源。
如果你安装好了 rust,在你的 用户主目录 中有一个.cargo 目录。其中用户主目录一般是 C:\Users\ +当前用户名 为路径的目录。
如果安装完成了 rust 当前用户目录下有一个 .cargo 目录。新建 config 文件,编辑内容:
[source.crates-io] replace-with='rsproxy' [source.rsproxy] registry="https://rsproxy.cn/crates.io-index" [registries.rsproxy] index = "https://rsproxy.cn/crates.io-index" [net] git-fetch-with-cli = true
使用 Windows 的系统环境变量 $HOME 可以直接指向主目录。如果你安装了 VSCode,可以打开一个终端,输入以下命令:
code $HOME/.cargo/config
其中,code 所使用的是 VScode 的可执行文件:code.exe。运行上面命令后,VSCode 自动打开一个指向 config 文件的空文件:
然后编辑之前的内容,并保存即可。
如果尽在本窗口有效,则可以使用以下命令:
$env:RUSTUP_DIST_SERVER="https://mirrors.sjtug.sjtu.edu.cn/rust-static" $env:RUSTUP_UPDATE_ROOT="https://mirrors.sjtug.sjtu.edu.cn/rust-static/rustup"
你可以使用以下方式查看是否设置成功:
Write-Host $env:RUSTUP_DIST_SERVER Write-Host $env:RUSTUP_UPDATE_ROOT
如需要写入为长期的环境变量则需要使用以下命令(其中User表示环境变量级别为当前用户,你也可以设置为系统级变量):
[System.Environment]::SetEnvironmentVariable('RUSTUP_DIST_SERVER','https://mirrors.sjtug.sjtu.edu.cn/rust-static','User') [System.Environment]::SetEnvironmentVariable('RUSTUP_UPDATE_ROOT','https://mirrors.sjtug.sjtu.edu.cn/rust-static/rustup','User')
如果已经安装有 vim / vi 或之类编辑工具则可以忽略。
# linux 的 debin 版本如 ubuntu 使用 apt 包管理器。如使用 centOS 的改用 yum 包管理器安装 sudo apt update sudo apt install vim
(如果你在 docker 容器中,不需要 sudo)
使用 vim 新建(或编辑已有)一个config文件:
sudo vim ~/.cargo/config
(如果你在 docker 容器中,不需要 sudo)
这时 vim 建立一个新的为保存config文件,英文输入模式下,输入 i 进入编辑模式,添加以下内容(和在Windows 时编辑的配置文件一样):
[source.crates-io] replace-with='rsproxy' [source.rsproxy] registry="https://rsproxy.cn/crates.io-index" [registries.rsproxy] index = "https://rsproxy.cn/crates.io-index" [net] git-fetch-with-cli = true
依次 exit、:wq! 保存退出。
除了上面给出的配置,你可可以参考本节挑选一个自己喜欢的国内源进行配置。
文档地址:https://rsproxy.cn/
~/.cargo/config:
[source.crates-io] # To use sparse index, change 'rsproxy' to 'rsproxy-sparse' replace-with = 'rsproxy' [source.rsproxy] registry = "https://rsproxy.cn/crates.io-index" [source.rsproxy-sparse] registry = "sparse+https://rsproxy.cn/index/" [registries.rsproxy] index = "https://rsproxy.cn/crates.io-index" [net] git-fetch-with-cli = true
~/.zshrc or ~/.bashrc:
export RUSTUP_DIST_SERVER="https://rsproxy.cn" export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"
地址:https://mirrors.sjtug.sjtu.edu.cn/docs/rust-static
使用方法:安装rustup,将以下环境变量加入~/.bashrc或类似文件中:
export RUSTUP_DIST_SERVER=https://mirror.sjtu.edu.cn/rust-static export RUSTUP_UPDATE_ROOT=https://mirror.sjtu.edu.cn/rust-static/rustup
文档地址:https://mirrors.tuna.tsinghua.edu.cn/help/crates.io-index.git/
编辑 ~/.cargo/config 文件,添加以下内容:
[source.crates-io] replace-with = 'mirror' [source.mirror] registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
文档地址:https://mirrors.tuna.tsinghua.edu.cn/help/crates.io-index/
编辑 ~/.cargo/config 文件,添加以下内容:
[source.crates-io] replace-with = 'mirror' [source.mirror] registry = "sparse+https://mirrors.tuna.tsinghua.edu.cn/crates.io-index/"
注:sparse+ 表示在使用稀疏索引,链接末尾的 / 不能缺少。
截至目前,可以通过 cargo +nightly -Z sparse-registry update 使用稀疏索引。
cargo 1.68 版本开始支持稀疏索引:不再需要完整克隆 crates.io-index 仓库,可以加快获取包的速度。如果您的 cargo 版本大于等于 1.68,可以直接使用而不需要开启 nightly。
文档地址:http://mirrors.ustc.edu.cn/help/crates.io-index.html
Windows 用户在使用 crates 源时可能会出现 next InitializeSecurityContext failed: Unknown error 错误(见 https://github.com/ustclug/discussions/issues/339 和 https://github.com/rust-lang/cargo/issues/7096)。一个 workaround 是在运行 cargo 的时候加入环境变量 CARGO_HTTP_CHECK_REVOKE=false,或者在配置中增加:
[http] check-revoke = false
cargo 1.68 版本开始支持稀疏索引:不再需要完整克隆 crates.io-index 仓库,可以加快获取包的速度。如果您的 cargo 版本大于等于 1.68,可以在 $HOME/.cargo/config 中添加如下内容:
[source.crates-io] replace-with = 'ustc' [source.ustc] registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"
在 $HOME/.cargo/config 中添加如下内容:
[source.crates-io] replace-with = 'ustc' [source.ustc] registry = "git://mirrors.ustc.edu.cn/crates.io-index"
如果所处的环境中不允许使用 git 协议,可以把上述地址改为:
registry = "https://mirrors.ustc.edu.cn/crates.io-index"