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

标签 go

我必须把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.gohttps://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/

相关文章:

csv - 将结构转换为字符串片段?

html - 如何处理网页上的 iframe

file - 由于文件权限问题,RemoveAll() 不应工作

go - 列出 Atom 中的函数调用者

sql - 如何在gorm中创建双向多对多关系

postgresql - 无法使用 Golang Gorm 连接到 RDS Postgres

Go 没有安装 gotype 命令?

google-app-engine - 将 Google App Engine 应用程序升级到灵活环境时,如何运行 Google 的 aefix 工具?

Go语言: Using package name inside package scope (for Examples)

file - Golang 检查文件扩展名不起作用