国内运行rustup安装脚本常卡在downloading component 'rustc',主因是官方cdn限速或超时;需提前设置rustup_dist_server镜像源、清理残留目录并配置环境变量,否则cargo命令不可见。

rustup 安装脚本执行失败的常见原因
直接运行 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 在国内大概率卡在 downloading component 'rustc',这不是脚本问题,而是 rustup 默认从官方 CDN 下载二进制包时被限速或超时。它不会报错退出,而是长时间无响应,容易误判为“网络不通”或“脚本失效”。
关键点在于:RUSTUP_DIST_SERVER 环境变量必须在运行脚本前设置,且只对当前 shell 有效;RUSTUP_UPDATE_ROOT 是控制 rustup 自身更新地址的,和组件下载无关,设了也没用。
- 如果已中断重试过,先清理残留:
rm -rf $HOME/.rustup $HOME/.cargo - 企业网络或某些校园网会拦截 HTTPS 的 SNI 域名(如 static.rust-lang.org),表现为连接静默超时,此时需换网络或配代理
- 脚本默认安装 stable 工具链,不带 nightly 或 wasm-target,后续需要再单独加装
bash/zsh 用户必须做的三步环境配置
很多人装完发现 cargo 找不到命令,90% 是因为漏掉了这三步中的某一步,不是安装失败。
- 先确保
curl可用:curl --version,没有就补装:sudo apt install curl -y(Ubuntu/Debian)或sudo dnf install curl -y(Fedora/RHEL) - 设置镜像源并写入 shell 配置:
echo 'export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup' >> ~/.bashrc,然后source ~/.bashrc - 安装完成后必须立即生效环境变量:
source "$HOME/.cargo/env",否则新终端里rustc和cargo都不可见
error: linker `cc` not found 怎么办
这个错误出现在首次运行 cargo build 时,不是 Rust 没装好,而是系统缺 C 工具链。rustc 编译器本身不带链接器,依赖系统级的 cc(通常是 gcc 或 clang)。
- Ubuntu/Debian:装
build-essential,它包含gcc、make、libc6-dev等全套头文件和工具,只装gcc不够 - CentOS/RHEL/Fedora:
sudo dnf groupinstall "Development Tools" -y(新版)或sudo yum groupinstall "Development Tools" -y(旧版) - Arch Linux:
sudo pacman -S base-devel - WSL2 用户建议额外装
libssl-dev:sudo apt install libssl-dev -y,否则像reqwest这类 crate 会编译失败
验证是否解决:运行 cc --version 能输出版本号,且 cargo build 不再报该错误。
crates.io 包下载慢要配 config.toml
rustup 脚本只管工具链安装,不影响后续 cargo build 时从 crates.io 下载依赖的速度。国内用户不配镜像,cargo build 第一次拉 tokio 或 serde 就可能卡住几分钟甚至失败。
创建配置文件:mkdir -p ~/.cargo,然后写入:
[source.crates-io] replace-with = "mirror" [source.mirror] registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
这个配置是 cargo 读取的,和 rustup 无关,也不受 RUSTUP_DIST_SERVER 影响。改完后所有新项目都会自动走清华镜像拉 crate。
注意:registry 地址末尾必须是 .git,少一个字符 cargo 就会回退到官方源,而且不报错——这是最容易忽略的拼写细节。











