我必须把GO创建的所有文件都放在GO的结构里面,不能散乱。在更改 GOPATH 和 GOROOT 时,我注意到 ~/.cache/go-build 上的构建文件夹。
这SO thread根本没有帮助,也没有the article it links .它似乎没有直接处理这个问题。我该如何更改它?
编辑:问题不在于如何找到 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
最佳答案
显示的错误
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 环境变量,那么它会使用它。如果不是,它使用 os.UserCacheDir,通常是 $HOME/.cache 但可以被覆盖,请参阅文档
简单的答案是将 GOCACHE env 变量设置在您的 Go 容器区域内
只是为了澄清。 Go 编译器和工具在另一个环境中运行。
这个其他环境在其中设置了变量,Go 将遵守这些变量
在 Linux 系统上,这个环境通常是 bash shell。在 bash shell 中设置 GOPATH 命令“export GOPATH=$HOME/go”经常被使用,将 GOPATH 设置到当前用户主目录中名为 go 的文件夹中。要设置 GOCACHE,请在您正在使用的环境中设置变量,Go 将获取它
关于go - 在 Ubuntu Linux 上更改 GOCACHE 默认文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53669242/