我必须将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
答案 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.go 和https://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
对我有用。