启用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
...
答案 0 :(得分:16)
对于Go 1.11,它们存储在
$GOPATH/pkg/mod
答案 1 :(得分:3)
模块缓存存储在$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
文件设置为具有replace指令以指向该可变副本。
答案 2 :(得分:1)
我在Macos 10.13.6上,使用go1.11 darwin/amd64
并且echo $GOPATH
为空。
我在$HOME/go/pkg/mod
答案 3 :(得分:1)
如果您要清理缓存,请使用命令go clean --modcache
如果您只需要更新某些依赖项,则可能要从中清除有关此依赖项的信息
答案 4 :(得分:1)
答案 5 :(得分:0)
要确定缓存位置,可以使用 go env:
go env|grep CACHE
要清除缓存,请根据要清除的缓存类型使用 go clean -modcache
或 go clean -cache
。