运行 cargo install 是否可以使用特定日期而不是版本号?

Is it possible to run cargo install with a specific date instead of version numbers?

我想安装一个包及其所有依赖项,因为它们在过去的特定日期和时间。

我需要使用稍旧的 rustc-nightly 版本,因此我需要确保 cargo install 提取的所有依赖项都针对旧版本的编译器进行编译。

目前,当我指定要安装的顶级包的版本时,它似乎仍然拉取了一些依赖项的最新版本,这些依赖项不使用旧编译器构建。

不,这不可能。

您的最佳选择是:

  1. 升级编译器。如果您 "can't" 这样做,请评估您为什么不能这样做并决定您从中获得了多少好处。

  2. 将依赖项添加到您自己的 Cargo.toml 固定到确实有效的旧版本。

  3. 您可以尝试 forking the crate index 并将其回滚,但不能保证一定会成功。

seems to pull the latest version of some dependencies

是的,大多数库指定具有 semver 兼容范围的依赖项,例如 my-library = "1.0"。这将允许从 1.0.0 到 1.x.y.

的任何版本

不幸的是,对于需要新版本的 Rust 是否构成 semver 破坏性更改尚未达成共识。

另请参阅:

  • How to generate Cargo.lock based on last month's crates.io?