坦率地说,使用 rustup 安装 Rust 是官方推荐的最佳方案。如果贪图省事选择 apt install rustc 或手动编译,十有八九会遇到 cargo 命令无法识别或 linker 报错的问题。之所以这么说,是因为超过 99% 的安装失败案例,根源都在于这一步选择错误。
安装过程中再次卡住?别着急,接下来我们将逐一解决最典型的 Rust 环境配置问题。
为什么 cargo 命令会提示未找到?
实际上并非没有安装成功,而是二进制文件所在的路径没有被加入系统的 PATH 搜索目录。rustup 默认将所有可执行文件安装在 $HOME/.cargo/bin 目录,但系统并不会自动识别这个“隐藏路径”。路径未配置就像买了房子却没有入户门——工具确实存在,但无法直接调用。
- 立刻生效:执行
source "$HOME/.cargo/env"。注意引号不可省略,以防止用户名包含空格导致路径被分割。 - 永久生效:将该命令追加到
~/.bashrc或~/.zshrc文件末尾,再执行source ~/.bashrc使其立即生效。 - 验证一下:执行
which cargo应返回类似/home/xxx/.cargo/bin/cargo的路径。如果报错或显示/usr/bin/cargo,说明配置尚未生效。
cargo build 报 linker `cc` not found,怎么办?
这个错误其实冤枉了 Rust 本身——根源在于系统中缺失 C 编译工具链。Rust 编译器并不自带链接器,而是默认调用系统的 cc(通常是 gcc 或 clang)。许多最小化安装的 Linux 发行版,如 Ubuntu Server、Docker 镜像或 WSL2,默认并未安装该组件。
- Ubuntu/Debian:执行
sudo apt install build-essential。仅安装gcc不足,build-essential还包含了make、libc6-dev等完整开发套件。 - CentOS/RHEL/Fedora:执行
sudo dnf groupinstall "Development Tools"。旧版本使用yum命令。 - WSL2 用户:额外建议安装
sudo apt install libssl-dev,否则像reqwest这类 crate 会在编译时失败。 - 验证:执行
cc --version若能显示版本信息,且cargo build不再报错,则说明环境已就绪。
国内安装卡在 downloading component 'rustc'?
这并非网络连接中断,而是因为 static.rust-lang.org 在国内访问速度受限,或 DNS 解析被污染。中断后残留的缓存文件若未清理,即使设置了镜像源也无法正常下载。
- 第一步,清干净:执行
rm -rf $HOME/.rustup $HOME/.cargo彻底清除缓存和残留配置。 - 第二步,设镜像(仅当前 shell 生效):执行
export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup临时设置国内镜像源。 - 第三步,跑安装命令:执行
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh。注意--proto '=https'和--tlsv1.2参数不可省略,特别是在 CentOS 7 或老旧 OpenSSL 环境,否则会导致 TLS 握手失败。
实际上,最容易遗漏的三项操作包括:未执行 source 刷新环境变量、未安装 C 编译工具链、安装前未配置国内镜像源。只要其中一项缺失,就会导致安装过程在看似意想不到的位置卡住。
