如何使用Cargo更新Crate Registry(索引)

7

使用 cargo(版本 1.46.0(04488afe3 2020-08-24))或任何其他 Rust 工具链,官方的方法是如何在不手动删除 ~/.cargo/registry/index 的情况下强制更新 crate 注册表(crate.io 索引)?


2
在一个箱子内执行,cargo update将在更新锁定文件中的依赖版本之前获取最新的注册表索引。如果这不令人满意,则可能使用--dry-run--frozen选项仍会更新注册表索引而不修改箱子的依赖关系;或者在箱子外运行cargo update仍会在失败之前更新注册表索引——我不知道,我没有调查过。 - eggyal
我正在使用 cargo update,但由于它不支持按需更新注册表,所以我在 StackOverflow 上发布了问题。 - Mr.
2个回答

2

我通过创建一个临时的货物项目并向其中添加一个小依赖项来完成这个操作。就像这样:

mkdir /tmp/deleteme \
    && cd /tmp/deleteme \
    && cargo init \
    && cargo add serde \
    && rm -rf /tmp/deleteme

你应该立即看到消息:

Updating crates.io index

error: no such subcommand: add - Akito
@Akito,你需要将cargo更新到最新版本。 cargo add是去年添加的 https://github.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-162-2022-06-30 - Juan Campa

1

您可以使用 cargo update --dry-run 命令来刷新索引和 git 依赖。

cargo 代码库中有一个跟踪问题,标题为 Please provide a subcommand to refresh the crates.io index,请求添加专用命令以及其他建议,例如运行 cargo install lazy_static 命令,该命令也会更新索引,但不做任何事情,因为 lazy_static crate 不提供二进制文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接