【问题标题】:different package versions from same github source using golang dep使用 golang dep 来自同一 github 源的不同包版本
【发布时间】:2018-08-16 16:28:06
【问题描述】:

我正在尝试将项目从 govendor 转换为 dep。但是,我在 dep 中发现了一个限制,使这成为不可能。在 govendor 中,在 vendor.json 文件中,我可以让来自同一来源的不同包具有不同的修订哈希。比如这样:

{
    "checksumSHA1": "iYT7abLMy0Vfyy8nwoDZYirLrI4=",
    "path": "github.com/docker/docker/api/types",
    "revision": "deed26f7f0f9a9d279b8ac99389f204d9063d1a4",
    "revisionTime": "2018-03-29T10:06:29Z"
},
{
    "checksumSHA1": "jVJDbe0IcyjoKc2xbohwzQr+FF0=",
    "path": "github.com/docker/docker/api/types/blkiodev",
    "revision": "88c0317e23449d6ff730a1073f240586cbdfd4ba",
    "revisionTime": "2017-08-23T07:13:08Z"
},

但是,当我使用 dep init 解决这个问题时,最终的 .lock 文件似乎选择了最新版本:

[[projects]]
digest = "1:3101683c3a63814ac8fe12a61fa01b728340f647c484d71573a31f041a68e7bc"
name = "github.com/docker/docker"
packages = [
    "api/types",
    "api/types/blkiodev",
]
pruneopts = "UT"
revision = "deed26f7f0f9a9d279b8ac99389f204d9063d1a4"

不幸的是,将 github.com/docker/docker 下的每个包都放在同一个版本对我们来说根本不起作用。试图使它们全部成为一个修订版会导致对其他可传递包的一连串修订版更改,这是我们目前无法容忍的。 (这个例子被删减了,我们在 github.com/docker/docker 下有很多包,这些包被混成三四个不同的版本)。

所以问题是,dep 可以处理来自相同“名称”的不同版本的包吗?如果是这样,我们会永远和州长呆在一起吗?那会让我个人不高兴,因为 govendor 是……呃……具有挑战性……(这可能是我们进入这个糟糕地方的原因)

提前感谢所有帮助!

【问题讨论】:

  • 在同一个库中拥有不同版本的不同包似乎充其量是危险的。 docker 是否真的为这种使用提供了任何兼容性保证?这似乎是我会竭尽全力避免的事情,至少在 Go 1.11 中最终确定模块支持之前。
  • 告诉我。在我看来,这绝对是愚蠢的。但这就是我所在的地方。由于这个限制,我无法迁移到 dep,因为当我尝试对所有内容使用相同的包修订版时,所有的地狱都会崩溃

标签: go golang-migrate


【解决方案1】:

所以问题是,dep 是否可以处理来自相同“名称”但版本不同的包?

没有。

【讨论】:

  • 所以...所以我们被 govendor 困住了,直到我们的包裹达成一致?并跟进问题,新的依赖系统(vgo:github.com/golang/go/wiki/vgo)是否能够处理这种情况?
  • Go 1.11 将允许在一个构建中拥有一个包的多个主要 (!!) 版本。
猜你喜欢
  • 2021-03-18
  • 2015-11-11
  • 1970-01-01
  • 2021-01-29
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
  • 2023-01-01
相关资源
最近更新 更多