我的笔记本电脑配有可以访问互联网的OS X系统,以及因某些安全原因无法访问互联网的Linux服务器。
我想构建一个依赖于Linux服务器的Rust项目。由于Linux服务器无法访问Internet,因此我在OSX笔记本电脑上运行cargo build
命令并将依赖关系源文件下载到.cargo
目录,然后将这些文件复制到Linux服务器并将其放入{ {1}}目录。
我使文件结构相同,但是当我在Linux服务器上运行/root/.cargo
时,它仍然尝试连接到this网站,并且构建失败。尽管dep源文件已经在cargo build
目录中,但cargo build
命令始终尝试连接Internet。
如何在脱机环境中构建具有依赖项的Rust项目?为什么复制依赖项的源文件不起作用?
答案 0 :(得分:5)
简短的回答是:现在,这很复杂。
答案很长,cargo
会尝试连接到github
,以便检查Cargo.toml
文件引用的包的索引。
我建议你检查cargo-vendor原型来解决这个问题(由aturon,Rust工具子团队的成员),否则你可以看看有些人created a mirror如何处理crates.io为了避免依赖互联网。
需要Rust版本不需要互联网,而且人们正在努力,但目前还没有幸福的解决方案。
答案 1 :(得分:0)
查看新发布的romt
- Rust Offline Mirror Tool。
Romt(Rust脱机镜像工具)有助于在脱机环境中使用Rust编程语言。提供以下说明和工具:
答案 2 :(得分:0)
好消息!从rust 1.37开始,您可以使用货物自己的vendor command下载并捆绑您的板条箱相关性到板条箱中:
首先,运行cargo vendor
。这将在板条箱的根目录中建立一个名为vendor
的新目录。然后它将从crates.io和git下载依赖项,并将它们存储在此处。
完成cargo vendor
后,它将打印您需要遵循的指示。当前,它将指示您将一些配置文本复制到项目的.cargo/config.toml
(相对于板条箱的根目录,而不是主目录)。
完成后,就货物而言,您的板条箱将完全独立。如果将其与offline installers结合使用,则可以完全安装rust并离线构建rust程序。
答案 3 :(得分:0)
我可以通过添加这个来替换官方 crates.io 注册表的使用 我的项目中的 .cargo/config 文件(在 windows %USERPROFILE%\.cargo\config 下似乎被忽略了):
[source]
[source.mirror]
registry = "http://localhost:8185/auser/crates.io-index.git"
[source.crates-io]
replace-with = "mirror"
也可以使用基于文件的 git 注册表克隆:
registry = "file://c:/github/crates.io-index.git"
使用 git clone --bare 或 --mirror 下载
货物建造现在打印
Updating 'c:\github\crates.io-index.git' index
而不是 Updating crates.io index
答案 4 :(得分:0)
我可以通过添加这个来替换官方 crates.io 注册表的使用 我的项目中的 .cargo/config 文件(或在 $CARGO_HOME%\.cargo 下):
[source]
[source.mirror]
registry = "http://localhost:8185/auser/crates.io-index.git"
[source.crates-io]
replace-with = "mirror"
也可以使用基于文件的 git 注册表克隆:
registry = "file://c:/github/crates.io-index.git"
使用 git clone --bare 或 --mirror 下载