为什么cargo vendor无法为Git仓库来源的Rust crate写入校验和?
问题原因
- 你的
.cargo/config.toml只配置了crates.io源的替换规则,没有补充git来源依赖对应的vendor源映射。当项目引入git依赖后,cargo无法识别这类依赖也需要从本地vendor目录读取,同步校验逻辑冲突导致校验文件写入失败。 - 本地
vendor目录下已有symphonia-0.3.0残留目录,该目录为只读权限或者存在不完整的临时文件,导致cargo无法覆盖写入.cargo-checksum.json校验文件。
修复方法
- 先删除本地残留的vendor目录,消除文件冲突:
rm -rf vendor
- 如果你需要同时vendor git来源的依赖:
重新执行cargo vendor --versioned-dirs --quiet命令,命令执行完成后会输出一段完整的配置片段,包含所有crates.io、git依赖对应的源替换规则,将这段配置完整覆盖到.cargo/config.toml中即可。 - 如果你只需要vendor crates.io的依赖,不需要处理git来源的依赖:
执行命令时添加--no-git参数即可规避报错:
cargo vendor --versioned-dirs --quiet --no-git
内容的提问来源于stack exchange,提问作者James Mishra
相关产品推荐
相关产品推荐

