登录
首页 >  Golang >  Go问答

执行 Go 模块的获取与构建

来源:stackoverflow

时间:2024-03-20 09:09:41 407浏览 收藏

当使用 Go 模块获取特定分支上的依赖项时,可能会遇到编译错误,这是因为 Go 获取了主存储库而不是分支。为了解决这个问题,可以将分支存储库克隆到本地,并创建一个单独的存储库,将内容推送到其中。或者,可以修改 go.mod 文件,将依赖项替换为分支存储库的 URL。

问题内容

我有一个使用 go 模块的项目。在那里,我需要指定我依赖于库的特定分支(称为 ),因为它有一个重要的补丁。当我运行 go get -u 时,我收到一个编译错误,这显然意味着 go 获取了 的主存储库,而不是 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

解决方案


我遇到了类似的问题,我通过分离分叉本身并制作一个单独的存储库来解决这个问题。根据您的用例,这也是一个更干净的解决方案,因为您不需要添加太多编辑即可使其工作。您可以通过以下方式执行此操作:

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

但如果您仍然想使用 fork 使其工作,here 是一个很好的参考。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>