【问题标题】:I have set my $GOPATH, but it doesn't work我已经设置了我的 $GOPATH,但它不起作用
【发布时间】:2015-05-05 15:14:47
【问题描述】:
$ 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) 导出 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"

有什么问题?

【问题讨论】:

标签: go


【解决方案1】:

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

你不应该使用sudo,正如我在“How to set GOPATH in Mac OS X 10.10”中提到的:

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

现在,这应该足够了:

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

OP 在 cmets 中添加了一个不同的 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 -s 然后go get 命令应该可以工作。

【讨论】:

  • go install golang.org/x/tools/cmd/cover: open /usr/local/go/pkg/tool/darwin_amd64/cover: permission denied我怎样才能执行这样的命令?
  • @WildCat: cmd/cover 是该规则的一个例外。您可以使用 sudo,或者在 osx 上,我更喜欢让我的 go 安装可以由我的本地用户帐户写入。
  • # go get -u github.com/golang/lint/golint ......我运行这个没有错误但仍然找不到 golint 命令
  • @AshishKarpe 也许是因为$GOPATH/bin 不在您的$PATH 中?
【解决方案2】:

sudo 根据人:

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

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

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 2023-01-19
    • 2021-08-18
    • 1970-01-01
    • 2013-07-20
    • 2013-08-18
    • 2018-08-11
    • 2021-12-18
    • 2021-12-02
    相关资源
    最近更新 更多