运行get vs build时的Go模块

时间:2019-12-13 08:56:04

标签: go build go-modules

我有一个使用go模块的项目。在这里,我需要指定我依赖于库的特定派生类(称为),因为它具有重要的补丁。运行go get -u <my_project>时,出现编译错误,这显然意味着go接受了主存储库,而不是fork。

然后,我切换到要下载的目录并运行go build。然后,转到使用的正确版本,编译成功。

您能否告诉我原因是什么以及如何解决?

这是获取的特定命令:

go get -u github.com/planetA/konk

依赖项为“ github.com/opencontainers/runc”。对于这种依赖性,go.mod包含以下内容:

replace (
   github.com/opencontainers/runc => github.com/planeta/runc v1.0.0-rc9.0.20191206160324-51eabe724369
)

require (
   github.com/opencontainers/runc v1.0.0-rc9.0.20191206223258-201b06374548
)

有趣的是,在以下命令序列中,第二个go get不会产生错误

go get -u github.com/planetA/konk
cd ~/go/src/github.com/planetA/konk
go build -tags seccomp
go get -u github.com/planetA/konk

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题,我通过拆下叉子本身并制作了一个单独的仓库来解决了这个问题。根据您的用例,这也是一种更干净的解决方案,因为您无需添加太多编辑即可使其工作。您可以通过以下方式实现:

  • 在您的本地计算机上克隆fork库。
  • 从github / gitlab等站点删除fork库,如果希望软件包名称与fork相同,则可以重命名您创建的新存储库。
  • 创建一个新的仓库,并将您的内容推送到其中
  • 现在去获取github.com/myusername/mynewrepo

但是,如果您仍然想使用叉子here使之正常工作,那将是很好的参考。