更改Ubuntu Linux上的GOCACHE默认文件夹

nsc4cvqm  于 2022-12-20  发布在  Go
关注(0)|答案(3)|浏览(397)

我必须把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

s5a0g9ez

s5a0g9ez1#

显示的错误

go: disabling cache (/home/<me>/.cache/go-build) due to initialization failure: mkdir /home/<me>/.cache/go-build: permission denied

是因为目录/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将拾取它

lb3vh1jj

lb3vh1jj2#

cd $HOME    
sudo chown -R <yourname>.<yourname> .cache/go-build

对我很有效。

ljo96ir5

ljo96ir53#

我也遇到了同样的问题,使用Mac。
我通过解锁文件夹解决了这个问题,见下面的打印
第一个是在Finder中显示文件夹被锁定的标志,第二个是在哪里解锁文件夹

相关问题