运行 get vs build 时的 Go 模块

标签 go build go-modules

我有一个使用 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 存储库。
  • 如果您希望包名称与 fork 相同,请从 github/gitlab 等中删除 fork 存储库,否则您可以重命名您创建的新存储库。
  • 创建一个新的存储库并将您的内容推送到它
  • 现在去获取 github.com/myusername/mynewrepo

  • 但是如果你仍然想使用 fork here 让它工作是一个很好的引用。

    关于运行 get vs build 时的 Go 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59319100/

    相关文章:

    c# - 从构建输出中省略程序集的本地化版本

    javascript - NextJS API |应用程序在部署和开发模式下工作,但在我运行下一次构建时却不行 |被拒绝

    go - 替换go.sum中的字符串

    go - 将库更新为特定版本

    go - 尝试使用 go 模块在 Go 1.11 中部署 Google 云功能时出错

    pointers - Go结构指针不是唯一的

    go - 从 html.Node 中检索原始数据

    go - 如何从一个字节中解压缩 2、2 和 3 位

    go - 为什么 calibre 无法读取重新创建的 .epub 文件上的元数据?

    java - 您可以在位于 jar 中的构建文件上运行 Ant 吗?