错误“无法下载,$ GOPATH未设置。”

时间:2013-07-26 03:06:40

标签: go

设定:

看一下我的配置:

$ 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

6 个答案:

答案 0 :(得分:29)

如果设置如下变量:

GOPATH=$HOME/go

它不会导出到任何子进程。它仅适用于该流程。如果要将其导出到子流程,请使用export

export GOPATH

您还可以组合分配和导出:

export GOPATH=$HOME/go

答案 1 :(得分:1)

我的$ GOROOT目录是使用owner: rootgroup: wheel创建的,而不是让我作为所有者和管理员作为群组。我猜我不应该使用sudo(或者某些工具为我做过)。因此go get无法将包写入$ GOROOT,从而导致$GOPATH not setpermission denied错误。

在我的$ GOROOT上使用chownchgrp(使用-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