Rust crates私有化部署指南(private alternative registry)

原文链接:https://zhuanlan.zhihu.com/p/163940004在Rust中,一般使用外部依赖的库部署在https://crates.io/。我们直接在Cargo....
摘要由CSDN通过智能技术生成

原文链接:https://zhuanlan.zhihu.com/p/163940004

Rust中,一般使用外部依赖的库部署在https://crates.io/。我们直接在Cargo.tomldependencies配置即可,列如下配置:

...[dependencies]rand = "0.7.3"serde = "1.0"serde_derive = "1.0"serde_json = "1.0"lazy_static = "1.4.0"...

如果细心的同学会发现,如果rand库更新到rand = "0.7.4"时,我们执行cargo updateCargo.lock会自动更新rand到最新的0.7.4版本。这主要是Rust采用了语义化版本。

但是这样的依赖对于Rust提供的crates.io是没问题的,面对私有化的项目,即不能共享到公开的crates上,又想做到私有依赖,问题就暴露了。

2.cargo私有化git依赖

一般来说,企业的私有代码,都依赖于私有git仓库。翻过cargo的文档时,这里就提到了一个关于git私有化依赖的问题,详见链接:

  • https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-git-repositories

这里的git私有化不外乎这几种依赖:branch依赖,tag依赖,commit-id依赖,列如下配置:

[dependencies]
rand = { git = "https://github.com/rust-lang-nursery/rand", branch = "master" }
rand = { git = "https://github.com/rust-lang-nursery/rand", tag = "0.2.2" }
rand = { git = "https://github.com/rust-lang-nursery/rand", rev = "e2112c4" }


看到这里,我们就想到了才有私有化git方式依赖,我们也这样做了。接下来问题便发生了。

  • 2.1 在项目中,我们定义了一些公共依赖的结构:hula_common私有仓库。

  • 2.2 A项目(lib)使用了hula_common的仓库,依赖tag="0.1.5"如下

hula_common = { package = "hula_common", git = "ssh://git@git.baoyachi.com/hula/hula_common.git" , tag = "0.1.5" }

  • 2.3. B项目(lib)也使用了hula_common的仓库,依赖tag="0.1.4"如下

hula_common  = { package = "hula_common", git   = "ssh://git@git.baoyachi.com/hula/hula_common.git" , tag = "0.1.4" }

  • 2.4 Alib和Blib都同时依赖了hula_common,两者区别就是引用的git的tag版本不同。

  • 2.5 在主程序的project名称是fuzz中,fuzz同时依赖了A,B,hula_common等私有lib,大致如下:

...[dependencies]serde_derive = "1.0.111"serde = "1.0.111"serde_json = "1.0.53"...
hula_common = { package = "hula_common", git = "ssh://git@git.baoyachi.com/hula/hula_common.git" , tag = "0.1.5" }B = { package = "B", git = "ssh://git@git.baoyachi.com/hula/B.git" , tag = "0.3.2" }A = { package = "A", git = "ssh://git@git.baoyachi.com/hula/A.git" , tag = "0.5.7" }...


  • 2.6 当我们编译fuzz时,居然编译报错?

error[E0308]: mismatched types
   --> src/common/query.rs:196:23
    |
196 |         let items = self.query(pos, key)?;
    |                                ^^^^^ expected str
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值