问题描述
我正在尝试做一个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,如何以及在哪里设置?
我看到许多线程都提到了此错误,但是没有一个线程提供了我的问题的答案,需要编辑哪个文件才能为此路径提供值?
最佳办法
2018+答案:
2018年之前的答案:
只需将以下行添加到〜/.bashrc中,这将继续存在。但是,您可以在示例中将其他路径用作GOPATH而不是$ HOME /go。
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
次佳办法
Ubuntu 14.04
export GOPATH=$HOME/go
另外,您可以将此字符串添加到文件中
$HOME/.bashrc
第三种办法
GOPATH应该设置为新创建的空目录。这是go “workspace”,它在其中下载软件包等。我使用〜/.go。
例如:
mkdir ~/.go
echo "GOPATH=$HOME/.go" >> ~/.bashrc
echo "export GOPATH" >> ~/.bashrc
echo "PATH=\$PATH:\$GOPATH/bin # Add GOPATH/bin to PATH for scripting" >> ~/.bashrc
source ~/.bashrc
资料来源:http://www.larry-price.com/blog/2013/12/15/setting-up-a-go-environment-in-ubuntu-12-dot-04/
第四种办法
例如,如果是Ubuntu,则在安装软件包后:
$sudo apt install golang -y
只需将以下行添加到〜/.bashrc(针对您的用户)
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
第五种办法
export GOPATH=/path/desired/here
无需编辑任何文件,我们只需使用上面的命令即可直接编辑Go环境变量。
第六种办法
转到模块[新方法]
从Go 1.11开始:现在有了Go Modules支持(以前称为vgo),因此您不再需要使用GOPATH。但是,这仍然是实验功能。
例如,您可以转到系统中的任何目录($ GOPATH以外的目录),并且可以在此处初始化一个新的Go模块,然后可以在其中工作。不需要GOPATH。
您需要执行一次(在目录中):
go mod init github.com/youruser/yourrepo
此后,Go将把该目录假定为模块根目录。您可以根据需要创建任意数量的模块。 GOPATH将很快成为历史。
如果您坚持使用GOPATH,请注意以下几点:
从Go 1.8开始:您无需设置GOPATH或GOROOT。默认情况下,GOPATH在用户/主目录下。
If no GOPATH is set, it is assumed to be $HOME/go on Unix systems and %USERPROFILE%\go on Windows. If you want to use a custom location as your workspace, you can set the GOPATH environment variable.
有关更多信息,请检查this。
第七种办法
最短和最新的解决方案。
在终端中编写此代码。
export GOPATH=path/to/your/gopath/directory
注意:这将在每个新的“终端”窗口或系统重新启动时重置。
为了保持持久性,请根据您的 shell 将以下代码粘贴到.zshrc
或.bashrc
文件中。这些文件在您的主目录中。如下所示。
export PATH=path/to/some/other/place/composer/for/example
export GOPATH=path/to/your/gopath/directory
export PATH=$PATH:$GOPATH/bin
第八种办法
您稍后也将需要GOPATH。因此,将其添加到~/.bashrc
。
第九种办法
如果您设置了任何需要修改环境变量的内容,例如Java,Go等将非常熟悉。
我将假定您在Go路径中的某处具有以下目录结构:
\---[folder name]
+---bin
+---pkg
\---src
-
打开一个新的终端
-
类型
sudo nano /etc/environment
-
找到
PATH=...
,然后在末尾添加一个冒号:
,然后粘贴到完整的go path
中,例如/home/user/gocode
并且您完成了,这应该使它在系统中具有持久性。
第十种办法
这就是使用fish shell
在Ubuntu 15.10上为我工作的原因:
# ~/.config/fish/config.fish
set -g -x PATH /usr/local/bin $PATH
set -g -x GOPATH /usr/share/go
然后,我不得不更改go
文件夹的权限(该文件夹设置为root)
sudo chown <name>:<name> -R /usr/share/go