繁体   English   中英

`go install` 在 `go.mod` 中添加记录

[英]`go install` adds record in `go.mod`

我对 Go 模块如何使用go install安装二进制文件感到有些困惑。

我尝试通过执行go install github.com/joho/godotenv/cmd/godotenv来安装( https://github.com/joho/godotenv )二进制文件,我发现它在go.mod添加了一条记录。 我迷路了,因为我们没有在代码中使用这个包,并且在运行go mod tidy它会被删除(因为它不是代码)。

有人可以解释一下 go 模块的预期行为吗? 其次,我如何避免将它添加到go.mod因为我们只需要安装和执行二进制文件?

谢谢。

Go 版本: go version go1.13.4 darwin/amd64

命令 go: go.mod 文件:

go 命令每次使用模块图时都会自动更新 go.mod,以确保 go.mod 始终准确反映现实并正确格式化。

go 工具会在执行构建时检测到依赖项不准确时自动更新go.mod

当你从你的模块安装github.com/joho/godotenv/cmd/godotenv ,这个安装至少需要正在构建/安装的包(以及它的依赖项,传递性)。

您可以安全地运行go mod tidy来撤消此“一次性”依赖项的记录。

一般来说,如果你想禁止 go 工具更新go.mod文件,你可以使用-mod=readonly标志,但这会导致go install失败( “无法加载包:包 xxx:导入查找被禁用 - mod=只读” )。 您可以在此处阅读更多相关信息: Go Wiki:Go 模块:我可以控制 go.mod 何时更新以及 go 工具何时使用网络来满足依赖关系?

或者,如果您想避免这种情况,请在模块之外构建/安装您的工具。 您可以为此使用“虚拟”模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM