我在一个大型项目中使用一个名为"雅基“的开源项目。
我需要使用"yaegi":v.0.8.11的旧版本,所以我修改了go.mod文件并替换了:
github.com/traefik/yaegi v0.9.2 // indirect与github.com/containous/yaegi v0.8.11
但是,当我构建项目时,它开始更新所有模块并将其替换回最新版本:
root@ubuntu:~/myproj1# go build main.go
go: finding module for package github.com/traefik/yaegi/stdlib/unsafe
go: finding module for package github.com/traefik/yaegi/stdlib
go: finding module for package github.com/traefik/yaegi/interp
go: found github.com/traefik/yaegi/interp in github.com/traefik/yaegi v0.9.2如何防止它,并使用旧版本的v.0.8.11保持它
go命令本身自动更新go.mod文件,以维护标准格式和require语句的准确性。 任何找到陌生导入的go命令都将查找包含该导入的模块,并自动将该模块的最新版本添加到go.mod中。… 任何go命令都可以确定缺少模块需求,必须添加…。。
也许有办法绕过它?
发布于 2020-10-14 17:07:36
//indirect in go.mod意味着您要导入的其他模块中至少有一个依赖于该版本的模块,因此go build将自动更新该模块,无论您如何更改go.mod中的该行。在您的情况下,如果您不想使用yaegi模块的v0.9.2,您必须首先从您的项目中消除依赖于该模块的其他依赖项,然后修复您的go.mod以使您的项目需要yaegi v0.8.11。您可以通过使用它们的旧版本或编辑它们的源代码来删除它们,或者使它们需要更早版本的yaegi。另外,我不会直接编辑go.mod,而是运行类似于go get -v github.com/containous/yaegi@0.8.11的代码来签出某个特定版本的模块。
https://stackoverflow.com/questions/64352451
复制相似问题