我有一个使用 go 模块的项目。在那里我需要指定我依赖于一个特定的库分支(称为它),因为它有一个重要的补丁。当我运行 go get -u <my_project>
,我得到一个编译错误,这显然意味着 go 采用了主 repo,而不是 fork。
之后切换到go下载的目录,运行go build
.然后,go 获取正确的版本,编译成功。
你能告诉我这可能是什么原因以及如何解决它吗?
这是获取的特定命令:
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
最佳答案
我有一个类似的问题,我通过分离 fork 本身并制作一个单独的 repo 解决了这个问题。取决于您的用例,这也是一个更简洁的解决方案,因为您无需添加太多编辑即可使其正常工作。你可以这样做:
但是如果你仍然想使用 fork here 让它工作是一个很好的引用。
关于运行 get vs build 时的 Go 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59319100/