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

时间:2018-12-07 12:08:01

标签: go

我必须将GO创建的所有文件放入GO结构中,而不是分散放置。在更改GOPATH和GOROOT时,我注意到〜/ .cache / go-build上的build文件夹。

这个SO thread根本没有帮助,the article it links都没有。似乎并不能直接解决这个问题。我该如何更改?

编辑:问题不在于如何找到go env GOCACHE可以查看的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

2 个答案:

答案 0 :(得分:3)

显示的错误

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元字符

关于设置路径,请参见https://github.com/golang/go/blob/master/src/cmd/go/internal/cache/default.gohttps://golang.org/pkg/os/#UserCacheDir

如果设置了GOCACHE env变量,则它将使用该变量。如果不是,则使用os.UserCacheDir(通常为$ HOME / .cache,但可以覆盖),请参阅文档

简单的答案是将GOCACHE env变量设置为Go围堵区域内

仅作澄清。 Go编译器和工具可以在另一个环境中运行。

另一个环境中设置了变量,Go会兑现

在Linux系统上,此环境通常是bash shell。在bash shell中设置GOPATH时,经常使用命令“ export GOPATH = $ HOME / go”,以将GOPATH设置到当前用户主目录中名为go的文件夹中。要设置GOCACHE,请在您使用的环境中设置变量,然后Go会选择它

答案 1 :(得分:0)

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

对我有用。