我必须把GO创建的所有文件都放在GO的结构中,而不是分散的。在修改GOPATH和GOROOT时,我注意到了~/.cache/go-build上的build文件夹。
这个SO thread一点帮助都没有,它链接的文章也没有。它似乎没有直接处理这个问题。我该如何修改它呢?
编辑:问题不是如何找到GOCACHE,我已经知道它可以被go env GOCACHE
查看,而是***我如何改变那个文件夹***。
我试着添加到~/ .bashrc:export GOCACHE=$HOME/path/to/folder
,而现在当我使用go env GOCACHE
时,它指向新文件夹,但仍然尝试将文件发送到~/.cache/go-build
。日志文件现在返回以下错误:go: disabling cache (/home/<me>/.cache/go-build) due to initialization failure: mkdir /home/<me>/.cache/go-build: permission denied
3条答案
按热度按时间s5a0g9ez1#
显示的错误
是因为目录
/home/<me>/.cache/go-build
不存在,并且没有创建新目录的权限。这不应该发生,看起来像是构建过程中的某个未知因素正在破坏GOCACHE设置你真的有一个叫
<me>
的用户吗?这是很不寻常的,也是不明智的,因为<>
是shell meta字符关于路径设置,请参见https://github.com/golang/go/blob/master/src/cmd/go/internal/cache/default.go和https://golang.org/pkg/os/#UserCacheDir
如果设置了GOCACHE环境变量,则使用该变量。如果没有设置,则使用os.UserCacheDir,通常为$HOME/.cache,但可以覆盖,请参阅文档
简单的答案是将GOCACHEenv变量设置在Go语言的包含区域中
澄清一下,Go语言的编译器和工具运行在另一个环境中。
另一个环境中有变量集,Go语言会尊重这些变量集
在Linux系统中,这个环境通常是bash shell。在bash shell中,设置GOPATH的命令“export GOPATH=$HOME/go”经常被使用,它将GOPATH设置到当前用户主目录中名为go的文件夹中。要设置GOCACHE,请在您正在使用的环境中设置变量,Go将拾取它
lb3vh1jj2#
对我很有效。
ljo96ir53#
我也遇到了同样的问题,使用Mac。
我通过解锁文件夹解决了这个问题,见下面的打印
第一个是在Finder中显示文件夹被锁定的标志,第二个是在哪里解锁文件夹