golang中的模块缓存在哪里?

当我启用 gomodules 并构建我的 go 程序时,就会下载所需的包。


$GOPATH/src/但我无法在或 中找到它们$GOPATH/src/mod。


它们存放在哪里?


export GO111MODULE=on

go mod init

go build main.go 

go: finding github.com/sirupsen/logrus v1.0.6

go: downloading github.com/sirupsen/logrus v1.0.6

...


潇潇雨雨
浏览 364回答 6
6回答

人到中年有点甜

对于 Go 1.11,它们存储在$GOPATH/pkg/mod

明月笑刀无情

要确定缓存位置,您可以使用 go env:go env|grep CACHE要清除缓存,请使用go clean -modcache或go clean -cache取决于要清除的缓存类型。

米脂

我在 Macos 10.13.6 上,使用go1.11 darwin/amd64并且echo $GOPATH是空的。我在中找到了我的模块$HOME/go/pkg/mod

千巷猫影

在终端中运行go env GOMODCACHEgo env - 打印所有 Go 环境信息go env NAME - 打印特定的环境变量。

莫回无

模块缓存存储在 中$GOPATH/pkg/mod,或者$HOME/go/pkg/mod如果$GOPATH未设置。注意:一般来说,模块缓存是只读的,并且是一个不可变的缓存。因此,你不应该尝试在那里编辑东西,也不应该go从缓存内部运行命令。模块缓存包含 zip 文件、解压缩的模块源代码以及 VCS 缓存(不使用代理时)。缓存通常包含单个依赖项的多个版本。如果你想检查模块缓存中依赖的代码,一个快捷方式是你可以cd通过以下方式直接找到解压依赖的位置:cd $(go list -f '{{.Dir}}' -m github.com/foo/bar)这要求go list报告github.com/foo/bar模块缓存中模块的目录位置,默认为您当前在当前模块中使用的任何版本。假设缓存是不可变的,一个相关的问题是你如何编辑一个依赖项(例如,如果你想添加一个调试日志,或者可能准备发送一个依赖项的上游修复)。此时一个常见的解决方案是使用gohack,它创建依赖项的可变副本(默认情况下$HOME/gohack,但位置由$GOHACK变量控制)。gohack还将您的当前go.mod文件设置为具有替换指令以指向该可变副本。

跃然一笑

如果你想清理缓存有一个命令go clean --modcache如果您只需要更新一些依赖项,您可能希望从中清除有关此依赖项的信息go.modgo.sum供应商/modules.txt
打开App,查看更多内容
随时随地看视频慕课网APP