首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止go获取更新go.mod文件

如何防止go获取更新go.mod文件
EN

Stack Overflow用户
提问于 2021-04-19 10:53:20
回答 1查看 4.3K关注 0票数 2

TL;DR:有什么办法可以强制阻止go get修改go.mod文件吗?

当我对某些包做go get时,例如:

代码语言:javascript
运行
复制
$ go get github.com/AsynkronIT/protoactor-go/protobuf/protoc-gen-gograin

它将打印出它有更新的依赖项(在我的go.mod文件中定义):

代码语言:javascript
运行
复制
go get: upgraded github.com/AsynkronIT/protoactor-go v0.0.0-20200815184336-b225d28383f2 => v0.0.0-20210405044454-10bc19881ad6
# (...) Note, this happens for other packages, not just `AsynkronIT/protoactor-go`.

这会导致CI构建期间更改go.mod文件,并影响后续构建阶段,在构建某些内容时,它将尝试使用依赖项的更新版本,这可能会导致中断更改,而不是最初在go.mod文件上定义的版本。

我尝试过使用-mod=readonly或确保没有使用-u标志,但它仍然会更新go.mod文件,例如:

代码语言:javascript
运行
复制
$ GOFLAGS=-mod=readonly go get github.com/AsynkronIT/protoactor-go/protobuf/protoc-gen-gograin

go get: upgraded github.com/AsynkronIT/protoactor-go v0.0.0-20200815184336-b225d28383f2 => v0.0.0-20210405044454-10bc19881ad6
# (...)

我还试图找到类似的问题,如this onethis other one,但还没有找到其他方法来防止go get命令更改go.mod

我现在用来停止这种行为的解决方法是,在某些git checkout -- go.mod步骤之后立即执行go get …,以重置go get所做的任何更改,从而避免使用某些依赖项更新版本进行更改。

我使用的是go版本的1.16.3

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-19 14:22:52

对于Go 1.16和之后,可以使用go install安装二进制文件,而不影响go.mod

代码语言:javascript
运行
复制
go install github.com/AsynkronIT/protoactor-go/protobuf/protoc-gen-gograin
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67160629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档