为什么Golang说我之前直接设置命令时没有设置我的GOPATH?

时间:2016-04-23 16:24:02

标签: go

这变得非常令人沮丧。我在我的~/.bash_profile中设置了我的GOPATH,但Go仍然说它没有设置。所以我手动设置它,它仍然说。

computer:~ doug$ export GOPATH=~/Dropbox/golang
computer:~ doug$ sudo go get -u golang.org/x/tools/cmd/...
package golang.org/x/tools/cmd/...: cannot download, $GOPATH not set. For more details see: go help gopath

我在这里做错了什么?如果我输入goenv,它甚至会将其列为设置为正确的路径。

2 个答案:

答案 0 :(得分:2)

默认情况下,

sudo会删除环境变量,因此以root运行的命令无法将环境变量设置为doug。一般情况下,您不应该sudo运行go get,尽管某些golang.org/x/tools包有些特殊。尝试安装您需要的(不使用sudo),而不是使用...

答案 1 :(得分:1)

我特别喜欢,只需使用wgettar以及就可以轻松设置整个环境,而无需任何特殊权限

这就是我通常在任何系统上安装(和更新)的方式:

$ wget https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz
$ tar -xzvf go1.6.2.linux-amd64.tar.gz
$ export GOROOT=$PWD/go
$ export PATH=$PWD/go/bin:$PATH
$ which go
/tmp/example/go/bin/go
$ go version
go version go1.6.2 linux/amd64

您可以在此处找到指向tar档案的链接:https://golang.org/dl/

我喜欢将我使用的每个版本下载并提取到$HOME/Programs,然后设置一个符号链接指向我实际想要使用的版本:

ls -la /home/fgrosse/Programs | grep go
lrwxrwxrwx   1 fgrosse fgrosse    6 Mar  9 20:52 go -> go1.6.1
drwxr-xr-x  11 fgrosse fgrosse 4.0K Feb 17 21:47 go1.5.4
drwxr-xr-x  11 fgrosse fgrosse 4.0K Feb 17 21:47 go1.6
drwxrwxr-x  11 fgrosse fgrosse 4.0K Apr 23 19:58 go1.6.1
drwxrwxr-x  11 fgrosse fgrosse 4.0K Apr 23 19:58 go1.6.2
$ echo $GOROOT
/home/fgrosse/Programs/go