如何防止“go build”更新模块的最新版本

E23*_*235 2 go go-build

我在一个大型项目中使用一个名为“ yaegi ”的开源项目。

\n

我需要使用旧版本的“yaegi”:,v.0.8.11所以我修改了go.mod文件并将:
\n替换github.com/traefik/yaegi v0.9.2 // indirectgithub.com/containous/yaegi v0.8.11
\n但是当我构建项目时,它开始更新所有模块并将其替换回最新版本:

\n
root@ubuntu:~/myproj1# go build main.go\ngo: finding module for package github.com/traefik/yaegi/stdlib/unsafe\ngo: finding module for package github.com/traefik/yaegi/stdlib\ngo: finding module for package github.com/traefik/yaegi/interp\ngo: found github.com/traefik/yaegi/interp in github.com/traefik/yaegi v0.9.2\n\n
Run Code Online (Sandbox Code Playgroud)\n

如何防止它并保留使用旧版本v.0.8.11
\n我根据https://tip.golang.org/cmd/go/#hdr-Maintaining_module_requirements读到

\n
\n

go命令本身会自动更新go.mod文件以保持标准格式和语句的准确性require

\n

任何找到不熟悉的导入的 go 命令都会查找包含该导入的模块,并自动将该模块的最新版本添加到 go.mod 中。[\xe2\x80\xa6]

\n

任何 go 命令都可以确定缺少模块要求,必须添加 [\xe2\x80\xa6]。

\n
\n

也许有办法绕过它?

\n

Coc*_*nut 5

//indirectingo.mod意味着您导入的至少一个其他模块\xe2\x80\x99 依赖于该版本的模块,因此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签出模块的特定版本之类的操作。

\n