设定:
看一下我的配置:
$ echo $GOPATH && ls -r $GOPATH
/home/cyrus/.go
src pkg bin
$ echo $GOROOT && ls $GOROOT
/usr/local/go
api AUTHORS bin CONTRIBUTORS doc favicon.ico include lib LICENSE misc PATENTS pkg README robots.txt src test VERSION
您可以看到我为$GOPATH
设置了路径。另外,我创建了我可能不需要的子目录。
问题:
为什么以下命令会生成此错误消息?
$ go get code.google.com/p/go-tour/gotour
package code.google.com/p/go-tour/gotour: cannot download, $GOPATH not set. For more details see: go help gopath
答案 0 :(得分:29)
如果设置如下变量:
GOPATH=$HOME/go
它不会导出到任何子进程。它仅适用于该流程。如果要将其导出到子流程,请使用export
:
export GOPATH
您还可以组合分配和导出:
export GOPATH=$HOME/go
答案 1 :(得分:1)
我的$ GOROOT目录是使用owner: root
和group: wheel
创建的,而不是让我作为所有者和管理员作为群组。我猜我不应该使用sudo(或者某些工具为我做过)。因此go get
无法将包写入$ GOROOT,从而导致$GOPATH not set
和permission denied
错误。
在我的$ GOROOT上使用chown
和chgrp
(使用-R获取子文件夹)'go get ...'工作。在我的情况下,VS Code现在能够安装我所追求的Go组件。
答案 2 :(得分:1)
当你运行go env时,你应该能够看到你的GOPATH是否已被设置。 在我的情况下,当我在终端上运行时,这个命令解决了它。
export GOPATH=/usr/local/bin
答案 3 :(得分:0)
我设置了GOPATH
,并且使用命令go env
正确显示。我必须使用chmod
向go目录授予正确的权限,并在gb
之前安装go get github.com/constabulary/gb/...
。
答案 4 :(得分:0)
首先做一个`go env'并检查路径GOROOT。据此设置GOPATH。 在我的例子中,它必须将GOPATH设置为/ usr / lib / go。早些时候我用/ usr / share / go和/ usr / bin / go尝试了它,但它没有用。
答案 5 :(得分:0)
$ GOPATH应该是您当前的工作空间,即项目所在的文件夹。 或只是cd〜/ go并尝试运行这些命令。 或者,您可以在ubuntu上的〜/ .bashrc或〜/ .bashrc_profile中更新$ GOPATH