MIRROR HANDBOOK

Cargo / crates.io 镜像

使用稀疏索引替换 crates.io,区分索引与包文件下载。

配置前请确认服务与版本适用性,并备份原有软件源配置。

前提

crates.io-index 是 Cargo 索引。以下配置要求 Cargo 1.68 或更新版本,采用 sparse 协议,不需要完整克隆 Git 索引。

索引中的 config.json 决定包文件下载地址。CERNET 当前调度得到的索引可能仍指向 static.crates.io,因此更换索引不保证包文件也通过高校镜像下载。

配置 source replacement

备份并编辑 ~/.cargo/config.toml,Windows 对应 %USERPROFILE%\.cargo\config.toml。设置了 CARGO_HOME 时使用该目录。

[source.crates-io]
replace-with = "cernet"

[source.cernet]
registry = "sparse+https://mirrors.cernet.edu.cn/crates.io-index/"

末尾斜杠和 sparse+ 都不能省略。已有同名 TOML 节时应合并,不要重复追加。项目自己的 .cargo/config.toml 也可能影响最终设置。

验证

在含 Cargo.toml 与锁文件的项目中执行:

cargo fetch --locked -v

检查输出中的索引更新与下载情况。cargo search 涉及 registry API,不等同于依赖下载,不应仅靠搜索命令判断替换是否生效。

恢复与排错

删除本次增加的 replace-with 和 [source.cernet],或恢复原配置即可。不要为了换源删除 Cargo.lock。

索引能访问但 crate 下载失败时检查实际下载域名。如果需要固定高校的完整包镜像,应采用该站公布的整套配置,不混拼索引与任意包下载目录。工具链本身的镜像见 Rustup。

参考资料

← 全部指南反馈文档问题 ↗