【发布时间】:2020-01-23 19:02:01
【问题描述】:
我对 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工具在模块“内部”的大多数调用都会检查、更新 go.{mod,sum},这对于build、test、get和大部分mod来说是显而易见的。现在想想go install <modulename>/path/to/modulepackage做了什么:它从当前模块构建一个包并安装它;正在更新 go.*。您从不相关的包中安装了一些命令的事实在这里是次要的。只是来自 /tmp 的go install东西,而不是来自模块“内部”的东西。
标签: go go-modules