如何基于上个月crates.io?

时间:2017-03-23 14:33:44

标签: rust rust-cargo

我想根据2017年2月22日提供的内容,在Cargo.toml的Rust项目中创建一个Cargo.lock文件。我需要让版本选择与特定日期发生的版本兼容。 (不,不要在某处控制Cargo.lock版本。)

我试过这个无济于事:

  1. 将crates.io索引克隆到本地目录中,并查看与所需日期匹配的旧提交。
  2. 在.cargo / config中使用以下行:

    [source.mycrates]
    registry = "file:///path/to/crates.io-index"  # contains old checkout
    
    [source.crates-io]
    replace-with = "mycrates"
    
  3. 尽管如此,货物将Cargo.toml中的依赖关系解析为可用的最新版本,而不是指定结帐中的最新版本。

    我怎样才能及时扭转Cargo的版本选择?

1 个答案:

答案 0 :(得分:1)

既然你说你已经尝试过克隆索引,我会假设你仍然躺在那里。为了其他读者的利益,存储库似乎在Git中维护,可以在https://github.com/rust-lang/crates.io-index获得。

您需要告诉cargo--frozen一起运行,以便它不会触及网络q.v. Cargo FAQ,如果它认为需要,它会爆炸。如果它已经下载了东西,你也需要cargo clean,或者以其他方式核对缓存。

如果您还没有结帐时需要的所有软件包,则还需要下载您感兴趣的特定版本。Dissecting Crates.io: Bare Minimum Mirror有一个解释,我将在此总结如果链接爆炸。

  Crates repo根目录中的

config.json有下载包的URL,这些URL被官方认为不稳定,但现在可以使用。

     

“gmjosack”使用的libc包中的示例根据/api/v1/crates/libc/0.1.10/downloaddl的{​​{1}}键显示了https://crates.io/api/v1/crates下载它的路径1}}以及帖子发布时的版本。

您可能需要编写下载脚本以构建镜像。另请参阅:stackoverflow上的Downloading Rust crates using a web browser