rust 使用國內鏡像,快速安裝方法

rust 使用國內鏡像,快速安裝方法

文檔: https://www.rust-lang.org/zh-CN/tools/install
Rust, 替換 crates.io 爲國內鏡像站 crates.cn
清華
https://mirror.tuna.tsinghua.edu.cn/help/crates.io-index.git/

由於rustup官方服務器在國外
如果直接按照rust官網的安裝方式安裝非常容易失敗,即使不失敗也非常非常慢

我們需要指定 RUSTUP_DIST_SERVER(默認指向 https://static.rust-lang.org)和 RUSTUP_UPDATE_ROOT (默認指向https://static.rust-lang.org/rustup),這兩個網站均在中國大陸境外,因此在中國大陸訪問會很慢,需要配置成境內的鏡像。

方式一:
設置環境變量 RUSTUP_DIST_SERVER(用於更新 toolchain)
以及 RUSTUP_UPDATE_ROOT(用於更新 rustup)

vi /etc/profile

# 清華大學
RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup

# 中國科學技術大學
RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup

# 上海交通大學
RUSTUP_DIST_SERVER=https://mirrors.sjtug.sjtu.edu.cn/rust-static/

source /etc/profile

使用國內鏡像的方法

  1. 首先修改一下上面的命令,將安裝腳本導出
    curl --proto ‘=https’ --tlsv1.2 -sSf https://sh.rustup.rs > rust.sh

  2. 打開 rust.sh 腳本
    將 RUSTUP_UPDATE_ROOT 修改爲
    RUSTUP_UPDATE_ROOT=“https://mirrors.ustc.edu.cn/rust-static/rustup”

  3. 修改環境變量
    export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup

  4. 執行腳本
    bash rust.sh

  5. 測試是否安裝成功
    rustc --version

方式二:
將如下配置寫入 $HOME/.cargo/config 文件:

# 放到 `$HOME/.cargo/config` 文件中
[source.crates-io]
replace-with = 'ustc'

[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"

經過測試,方式一的優先級比較高!

使用國內源 (ustc) 之後依然無法下載最新包

中國科大的鏡像不穩定,有單個 ip 的併發限制, 官方說添加 CARGO_HTTP_MULTIPLEXING=false 參考鏈接: mirrors.ustc.edu.cn/help/crates.io-…
Rust dependencies依賴管理crates.io原理梳理
原文鏈接:https://blog.csdn.net/mutourend/article/details/106415130

這個是說在使用 nightly 版本的時候可能會報錯,我直接用的是官方的穩定版… 不過似乎半夜是可以下載的,可能是和國內用戶訪問的頻率流量有關

rm /root/.cargo/config -f #刪掉本地 中科大配置,使用默認官網下載

使用 nightly 版本時,Crates 源可能會出現 Couldn’t resolve host name (Could not resolve host: crates) 錯誤(見 https://github.com/ustclug/discussions/issues/294)。一個臨時的解決方法是在運行 cargo 的時候加入環境變量 CARGO_HTTP_MULTIPLEXING=false。

還因各種原因,即使切換爲國內鏡像源,仍然無法從crates.io中下載各依賴包的情況。

經驗證,無法下載是因爲局域網內https://crates-io.proxy.ustclug.org/api/v1/crates被屏蔽無法連接,而https://crates.io/api/v1/crates 可連接成功。

最簡單的方法就是切換爲默認源,哪怕慢點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章