使用 cargo(版本 1.46.0(04488afe3 2020-08-24))或任何其他 Rust 工具链,官方的方法是如何在不手动删除 ~/.cargo/registry/index
的情况下强制更新 crate 注册表(crate.io 索引)?
使用 cargo(版本 1.46.0(04488afe3 2020-08-24))或任何其他 Rust 工具链,官方的方法是如何在不手动删除 ~/.cargo/registry/index
的情况下强制更新 crate 注册表(crate.io 索引)?
我通过创建一个临时的货物项目并向其中添加一个小依赖项来完成这个操作。就像这样:
mkdir /tmp/deleteme \
&& cd /tmp/deleteme \
&& cargo init \
&& cargo add serde \
&& rm -rf /tmp/deleteme
你应该立即看到消息:
Updating crates.io index
error: no such subcommand: add
- Akitocargo
更新到最新版本。 cargo add
是去年添加的 https://github.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-162-2022-06-30 - Juan Campa您可以使用 cargo update --dry-run
命令来刷新索引和 git 依赖。
cargo 代码库中有一个跟踪问题,标题为 Please provide a subcommand to refresh the crates.io index,请求添加专用命令以及其他建议,例如运行 cargo install lazy_static
命令,该命令也会更新索引,但不做任何事情,因为 lazy_static
crate 不提供二进制文件。
cargo update
将在更新锁定文件中的依赖版本之前获取最新的注册表索引。如果这不令人满意,则可能使用--dry-run
或--frozen
选项仍会更新注册表索引而不修改箱子的依赖关系;或者在箱子外运行cargo update
仍会在失败之前更新注册表索引——我不知道,我没有调查过。 - eggyal