我如何禁用 cargo update 要么 cargo build 从尝试访问github.com;但仍然从中下载相应的包 crates.io
我的cargo.toml有一个依赖
[dependencies]
chrono = "0.2.14"
运行 cargo build
E:\>cargo build
Updating registry `https://github.com/rust-lang/crates.io-index`
Unable to update registry https://github.com/rust-lang/crates.io-index
我们是 受阻 来自github.com的工作但不是crates.io。有没有选项,货物仍然可以下载所需的包,而无需更新它的注册表?
如果你看一下文档 配置货物,你会注意到有一个 index 关键在于 [registry] 部分。这可以是Git存储库的任何路径。
因此,您可以创建crates.io索引的本地克隆。我通过克隆它来证实这一点:
git clone --bare https://github.com/rust-lang/crates.io-index.git
然后编辑我的货物配置(具体来说,我改变了 ~/.cargo/config,但这应该适用于文档描述的任何地方):
[registry]
index = "file:///F:/Data/Repositories/crates.io-index.git"
有几点需要注意:
这个 才不是 镜像包的实际内容。那些来自不同的主人。然而,我不知道如何反映这些:货物在本地缓存这些货物要好得多。它 应该 足够了 cargo fetch 包,然后复制缓存 *.crate 文件 $HOME/.cargo/registry/cache/*。
这会导致您的包标识符 Cargo.lock 要更改的文件。这不是开发库的问题,而是它 不 成为一个问题 二进制。标准做法是检查你的 Cargo.lock 进入二进制文件的源代码控制,以便下游的每个人都使用完全相同的软件包版本。但是,修改后的索引意味着没有其他人能够使用该锁定文件构建包。
我通过放置来解决这个问题 另一个 在二进制包中配置覆盖,将索引重置为“官方”索引,但在您的情况下甚至可能无法实现。在这种情况下,您可能需要排除 Cargo.lock 从源代码控制,或只是有一个“不使用官方索引”分支。