在Rust应用中使用Debian仓库安装的crates的官方方法?
Debian系发行版使用apt安装的Rust Crates的正确姿势
你遇到的问题是因为Cargo默认只会从crates.io拉取依赖,不会自动识别apt安装的系统级Rust包。要用上apt装的crates,得按下面的方式操作:
确认系统包版本匹配
先用apt show librust-json-dev查看你安装的包版本,比如输出里的Version字段是0.12.0-1,那你Cargo.toml里的版本号就得写0.12.0,必须和系统包的版本完全对应。配置Cargo识别系统crates目录
Debian会把apt安装的Rust crates放在/usr/share/cargo/registry/目录下,你需要告诉Cargo这个位置:- 在项目根目录新建
.cargo/config.toml文件 - 写入以下内容:
[source.debian] directory = "/usr/share/cargo/registry/"
- 在项目根目录新建
选择全局或单个依赖使用系统包
- 如果你想让所有依赖优先用系统包,就在上面的配置里再加一行:
[source.crates-io] replace-with = "debian" - 要是只想让
json依赖用apt安装的版本,就把配置改成这样:[source.debian] directory = "/usr/share/cargo/registry/" [source."registry+https://github.com/rust-lang/crates.io-index"] [source."registry+https://github.com/rust-lang/crates.io-index".dependencies.json] replace-with = "debian"
- 如果你想让所有依赖优先用系统包,就在上面的配置里再加一行:
保持Cargo.toml的依赖写法
你原本写的json = "0.12.0"没问题,只要版本和系统包匹配,加上上面的配置后,Cargo就会从系统目录读取依赖,不会再去crates.io拉取了。
注意:apt里的Rust包版本通常更新较慢,如果项目需要的版本系统仓库里没有,还是得用crates.io的包。
内容的提问来源于stack exchange,提问作者vdudouyt
相关产品推荐
相关产品推荐

