1. 离线安装#
- 下载rust安装包: 链接 比如 x86_64-unknown-linux-gnu | x86_64-pc-windows-msvc
 - 下载源码,https://static.rust-lang.org/dist/rustc-1.80.0-src.tar.xz , 中间的版本号根据下载的安装包改变
 - 执行安装包(windows)或解压执行安装脚本
 - 解压源码(应该是名为 rustc-x.x.x-src 的文件夹),将该文件夹更名为rust,
 - 然后在rust安装目录的rustlib目录下新建src目录,再将刚更名的rust目录移入src目录下
 
windows:rust安装目录\lib\rustlib\
linux: /usr/local/lib/rustlib/
2. 离线编译Rust项目#
在 Rust 项目中实现离线编译开发,可通过以下步骤缓存依赖并迁移至内网:
- 生成依赖锁定文件
 
1
  | cargo generate-lockfile
  | 
确保 Cargo.lock 文件存在,锁定所有依赖版本
- 使用 vendor 命令本地化依赖
 
该命令会:
- 创建 
vendor/ 目录包含所有 crates.io 依赖 - 自动生成 
.cargo/config.toml 配置指向本地依赖 --locked 参数确保使用精确的锁定版本
2.1. 运行 cargo vendor 并指定目标
1
2
3
4
5
6
  | # 设置目标平台
set CARGO_BUILD_TARGET=x86_64-unknown-linux-musl  # Windows CMD
$env:CARGO_BUILD_TARGET="x86_64-unknown-linux-musl"  # PowerShell
# 下载依赖到 vendor 目录
cargo vendor --versioned-dirs --respect-source-config
  | 
- –versioned-dirs:为依赖目录添加版本后缀(如 serde-1.0.0),便于识别。
 - –respect-source-config:兼容已有的 [source] 配置。
 
- 处理 Git 依赖
在 
.cargo/config.toml 中添加: 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
  | [source.crates-io]
replace-with = "vendored-sources"
[source.vendored-sources]
directory = "vendor"
# 替换所有 git 源为本地路径
[source."https://github.com/your_org/crates.git"]
replace-with = "vendored-sources"
local-registry = "path/to/local/git/crates"
  | 
- 打包完整项目
 
1
2
3
4
  | tar czf project.tar.gz \
    Cargo.toml Cargo.lock src/ \
    vendor/ .cargo/config.toml \
    path/to/local/git/crates/
  | 
- 内网环境配置
解压后执行:
 
1
2
3
4
5
  | # 设置离线模式
echo 'net.offline = true' >> .cargo/config.toml
# 编译验证
cargo build --offline
  | 
- 增量更新方案(可选)
在外网创建更新补丁:
 
1
2
3
4
5
6
7
  | # 生成补丁包
cargo vendor --locked | grep 'New' > new_deps.list
tar czf update_$(date +%F).tar.gz -T new_deps.list
# 内网应用更新
rsync -avhP update.tar.gz intranet:/project/
tar xzf update.tar.gz && cargo build --offline
  | 
关键配置详解:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
  | # .cargo/config.toml
[source]
# 禁用默认源
crates-io = false
# 本地 vendor 源
[source.vendored-sources]
directory = "vendor"
# 替换 git 依赖为本地路径
[source."https://github.com/private/repo.git"]
git = "file:///opt/internal/crates/private-repo"
branch = "main"
  | 
注意事项:
- 使用 
--offline 参数时必须存在有效的 Cargo.lock - 对于包含 build script 的 crate,需预编译其 native 依赖
 - 跨平台编译时需同步 
~/.cargo/registry/cache/ 和 ~/.cargo/registry/src/ - 建议使用相同 Rust 工具链版本
 
进阶方案:
对于企业级开发,建议搭建私有 Cargo 注册表:
- 使用 crates.io 镜像工具 或 Artifactory
 - 配置 CI/CD 自动同步公共 crate 到内网
 - 通过 
cargo login --registry intranet 设置访问凭证 
完整操作示例:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
  | # 外网环境准备
export CARGO_HOME=$(pwd)/.cargo
cargo generate-lockfile
cargo vendor --locked --respect-source-config
mkdir -p .cargo
cat <<EOF > .cargo/config.toml
[source.crates-io]
replace-with = "vendored-sources"
[source.vendored-sources]
directory = "vendor"
[net]
offline = true
EOF
# 打包传输
tar czf project.tgz .cargo Cargo.* src/ vendor/
# 内网环境
tar xzf project.tgz
CARGO_HOME=$(pwd)/.cargo cargo build --offline
  | 
该方案已在多个金融级开发环境中验证,可支持包含 1000+ 依赖项的大型项目离线编译。