我想做一个go get:

go get github.com/go-sql-driver/mysql

它失败,并出现以下错误:

package github.com/go-sql-driver/mysql: cannot download, $GOPATH not set. For more details see: go help gopath

当我做一个go env,一个go值列表如下所示:

ubuntu@ip-xxx-x-xx-x:~$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"

显然GOPATH没有设置,我该如何设置,在哪里设置?

我看到许多线程提到了这个错误,但没有一个线程提供了我的问题的答案,需要编辑哪个文件来为这个路径提供一个值?


当前回答

在我的Fedora 20机器上,我在~/.bashrc中添加了以下行:

export GOROOT=/usr/lib/golang
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

其他回答

编辑~/。Bash_profile添加以下行:

$ export GOPATH=$HOME/work

保存并退出编辑器。然后,源~/.bash_profile

$ source ~/.bash_profile

注意:设置GOBIN路径以在运行go install时生成二进制文件

$ export GOBIN=$HOME/work/bin

如官方指示所示:

GOPATH环境变量指定工作空间的位置。它默认在你的主目录中有一个名为go的目录,在Unix上是$home/go,在Plan 9上是$home/go,在Windows上是%USERPROFILE%\go(通常是C:\Users\YourName\go)。如果您希望在不同的位置工作,则需要将GOPATH设置为该目录的路径。(另一个常见的设置是设置GOPATH=$HOME。)注意,GOPATH不能与Go安装的路径相同。

例如,如果你在Jetbrains Webstorm中编码(使用Go插件),你可能想要将GOPATH设置为/Users/<user>/WebstormProjects。

简单地说,将其设置为您希望Go项目驻留的任何地方。

你可以使用“导出”解决方案,就像其他人建议的那样。我想为您提供另一个永久方便的解决方案:您可以在运行Go命令时使用任何路径作为GOPATH。

首先,你需要下载一个名为gost的小工具:https://github.com/byte16/gost/releases。如果你使用ubuntu,你可以下载linux版本(https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz)。

然后你需要运行下面的命令来解压它:

$ cd /path/to/your/download/directory 
$ tar -xvf gost_linux_amd64.tar.gz

你会得到一个可执行的gost。您可以移动到/usr/local/bin方便使用:

$ sudo mv gost /usr/local/bin

运行下面的命令,将想要用作GOPATH的路径添加到gost维护的路径空间中。需要为路径指定一个稍后使用的名称。

$ gost add foo /home/foobar/bar     # 'foo' is the name and '/home/foobar/bar' is the path

运行任何你想要的Go命令,格式如下:

gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]

例如,你想运行去github.com/go-sql-driver/mysql以/home/foobar/bar作为GOPATH,只需如下所示:

$ gost get -p foo -- github.com/go-sql-driver/mysql  # 'foo' is the name you give to the path above.

它将帮助您设置GOPATH并运行命令。但是请记住,您已经将路径添加到gost的路径空间中。如果你在/home/foobar/bar的任何级别的子目录下,你甚至可以只运行下面的命令,它会做同样的事情:

$ gost get -- github.com/go-sql-driver/mysql

gost是一个简单的Go工具,可以帮助你管理gopathths和运行Go命令。有关如何使用它来运行其他Go命令的详细信息,您可以运行gost help goCmdName。例如,你想了解更多关于安装的信息,只需输入下面的单词:

$ gost help install

您还可以在项目的README中找到更多详细信息:https://github.com/byte16/gost/blob/master/README.md

如果您正在使用ZSH:

nano ~/.zshrc

然后在文件末尾添加:

export PATH=$PATH:/usr/local/go/bin

最后:

source ~/.zshrc

并打开一个新的终端

go version

这是最烦人的事情。希望能节省你的时间。

IF go是以root用户安装的。您系统的bash_profile文本文件~/的根用户。bash_profile需要将$GOROOT分配到go安装目录,$GOPATH需要分配到go /src目录。

  ...$# sudo su
  ...$# vi ~/.bash_profile

    ***Story continues in vi editor***

    GOROOT=$GOROOT:/usr/local/go
    GOPATH=$GOPATH:/usr/local/go/src
    ...
    [your regular PATH stuff here]
    ...

确保进入二进制的路径在.bash_profile上的路径中

= $ PATH: $ HOME / bin: / usr /地方/ bin: / usr /地方/去/ bin

这个PATH可以是它需要的长度的字符串..以添加新项,只需用冒号分隔:

退出vi编辑器并保存bash配置文件(:wq代表write and quit)

  [esc] 
  [shift] + [:] 
  :wq

你必须注销终端,然后重新登录配置文件重新启动..或者你可以通过使用导出启动它。

...$# export GOPATH=/usr/local/go/src

你可以验证go env:

...$# go env

Yay!

GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/usr/local/go/src"
GORACE=""
GOROOT="/usr/local/go"

现在你可以sudo和go可以在go/src中下载和创建目录你可以找到你想要做的。

例子

# sudo go get github.com/..

现在你会遇到另一个问题,你可能没有安装git。这是另一次冒险…:)