我设置了我的$ GOPATH,但它不起作用

时间:2015-03-04 15:03:14

标签: go

$ sudo go get -u github.com/golang/lint/golint
package github.com/golang/lint/golint: cannot download, $GOPATH not set. For more details see: go help gopath

我设置了我的$ GOPATH: (在我的Mac上~/.bash_profile) export GOPATH = $ HOME / gocode

我的go env

$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/wildcat/gocode"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fno-common"
CXX="g++"
CGO_ENABLED="1"

问题是什么?

2 个答案:

答案 0 :(得分:8)

问题是您使用的是sudo:它将使用根环境变量而不是您的帐户。

您不应该像我在“How to set GOPATH in Mac OS X 10.10”中提到的那样使用sudo

  • sudo具有重置环境和设置安全路径的默认策略
  • 除非您使用更复杂的sudo -E bash -c 'go get github.com/golang/lint/golint'):

目前,这应该足够了:

go get -u github.com/golang/lint/golint

OP在评论中添加不同的 go get命令:

go install golang.org/x/tools/cmd/cover: 
  open /usr/local/go/pkg/tool/darwin_amd64/cover: permission denied 

那个人会使用$GOTOOLDIR(在你的情况下设置为“/ usr / local / go / pkg / tool / darwin_amd64”)

如“Permission denied error for 'go.tools'”中所述,运行sudo -sgo get命令应该有效。

答案 1 :(得分:1)

根据男人说:sudo:

  

sudo允许允许的用户以超级用户或者执行命令        另一个用户,由安全策略指定。

使用sudo时,您以root身份执行。我建议您删除sudo并尝试执行它。