为了账号安全,请及时绑定邮箱和手机立即绑定

golang中的模块缓存在哪里?

golang中的模块缓存在哪里?

Go
潇潇雨雨 2023-03-29 15:37:30
当我启用 gomodules 并构建我的 go 程序时,就会下载所需的包。$GOPATH/src/但我无法在或 中找到它们$GOPATH/src/mod。它们存放在哪里?export GO111MODULE=ongo mod initgo build main.go go: finding github.com/sirupsen/logrus v1.0.6go: downloading github.com/sirupsen/logrus v1.0.6...
查看完整描述

6 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

对于 Go 1.11,它们存储在

$GOPATH/pkg/mod


查看完整回答
反对 回复 2023-03-29
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

要确定缓存位置,您可以使用 go env:

go env|grep CACHE

要清除缓存,请使用go clean -modcachego clean -cache取决于要清除的缓存类型。


查看完整回答
反对 回复 2023-03-29
?
米脂

TA贡献1836条经验 获得超3个赞

我在 Macos 10.13.6 上,使用go1.11 darwin/amd64并且echo $GOPATH是空的。

我在中找到了我的模块$HOME/go/pkg/mod


查看完整回答
反对 回复 2023-03-29
?
千巷猫影

TA贡献1829条经验 获得超7个赞

在终端中运行

go env GOMODCACHE

go env - 打印所有 Go 环境信息

go env NAME - 打印特定的环境变量。


查看完整回答
反对 回复 2023-03-29
?
莫回无

TA贡献1865条经验 获得超7个赞

模块缓存存储在 中$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文件设置为具有替换指令以指向该可变副本。


查看完整回答
反对 回复 2023-03-29
?
跃然一笑

TA贡献1826条经验 获得超6个赞

如果你想清理缓存有一个命令go clean --modcache

如果您只需要更新一些依赖项,您可能希望从中清除有关此依赖项的信息

  • go.mod

  • go.sum

  • 供应商/modules.txt


查看完整回答
反对 回复 2023-03-29
  • 6 回答
  • 0 关注
  • 345 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信