如何在Ubuntu上设置GOPATH环境variables? 我必须编辑什么文件?

我正在努力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没有设置,我怎么设置它?

我看到很多提到这个错误的线程,但是没有提供我的问题的答案,哪个文件需要被编辑以提供这个path的值?

只需将以下几行添加到〜/ .bashrc中即可。 但是,您可以使用其他path作为GOPATH而不是$ HOME / go在我的示例中。

 export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin 

Ubuntu 14.04

 export GOPATH=$HOME/go 

另外你可以把这个string添加到文件中

 $HOME/.bashrc 

GOPATH应该被设置为一个新创build的空目录。 这是去“工作区”,在那里下载软件包,等等。 我使用〜/ .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 

最短当前的解决scheme。

在terminal写这个代码。

 export GOPATH=path/to/your/gopath/directory 

注意 :这将在每个新的terminal窗口或系统重新启动时重置。

要持久化,请根据您的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 
 export GOPATH=/path/desired/here 

不需要编辑任何文件,我们可以使用上面的命令直接编辑Go环境variables。

如果你已经设置了任何需要修改环境variables的东西,例如Java,Go等,这个将会非常熟悉。

我将假设你的Gopath有以下目录结构:

 \---[folder name] +---bin +---pkg \---src 
  • 开一个新的terminal
  • 键入sudo nano /etc/environment
  • findPATH=...并结束它,并添加一个冒号:在最后一个path后,然后粘贴你的完整go path例如/home/user/gocode

你完成了,这应该通过这个系统来持久化。

之后你也需要GOPATH。 所以把它添加到~/.bashrc

这就是使用鱼壳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 

去path可以在你想要的每一个地方创build一个目录,并将GOPATH的全局pathvariables设置为你的环境。

 mkdir ~/go export GOPATH=~/go go get github.com/go-sql-driver/mysql 

我的环境看起来和你的相似。

 $go env GOARCH="amd64" GOBIN="" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="" GORACE="" GOROOT="/usr/lib/go-1.6" GOTOOLDIR="/usr/lib/go-1.6/pkg/tool/linux_amd64" GO15VENDOREXPERIMENT="1" CC="gcc" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0" CXX="g++" CGO_ENABLED="1" 

我将GOPATH设置为/ usr / lib / go来解决这个问题。 试试看。

 export GOPATH=/usr/lib/go export PATH=$PATH:$GOPATH/bin 

使用Go 1.8(2017年第2季度),如果您接受默认的GOPATH值(您GOPATH设置),则无需编辑任何文件,

 $HOME/go 

您可以看到关于问题17262的评论和相关的推特投票 :

通过select一个默认的GOPATH ,我们可以使我们的文档更容易,因为我们可以这样说

 $ go get github.com/foo/bar 

将检查出$HOME/go/src/github.com/foo/bar

我们不需要分散新来者,而必须设置一个env var,我们所需要做的就是在页面的底部放一点小括号

$HOME/go是您去工作区的默认path。
如果您想更改此path,请将GOPATHvariables设置为您所select的值。

GOPATH是您的工作空间位置的环境variables。 GOROOT是安装目录的环境variables。 虽然GOROOTGOPATH在安装过程中会自动设置(如果没有错误),要手动指定它,您可以按照以下过程进行操作。 此外,有关更多信息,请参阅GO的wiki页面 。

最好将GOPATH设置为您的主目录中的一个目录,例如$ HOME / go,%USERPROFILE%\ go(Windows)。

  1. 这是一个解决scheme的mac,它在macOS Sierra,ver。上testing。 10.12,还有Gogland-EAP,它已被JetBrains用作Go编程的IDE。

在您的terminaltypes

 vim ~/.profile 

在terminal上打开的文档中按i,然后添加以下path

 GOPATH=/path/to/a/directory/inside/home/directory GOROOT=/path/to/you/go/library PATH=$PATH:$GOPATH:$GOROOT:$GOROOT/bin 

ESC并键入:x 。 最后,您应该重新启动( closures打开 )您的terminal或注销并重新login

  1. 有关Windows和Linux的configuration,请参阅设置GOPATH-Golang上Githab的 Go wiki页面。

小心不要将GOROOTGOPATH都设置在同一目录下,否则会收到警告。

这是处理最烦人的事情。 希望节省您的时间。

如果go是以root用户身份安装的。 系统的bash_profile文本文件〜/ .bash_profile的root用户需要将$ 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] ... 

请确保二进制文件的path位于.bash_profile的path中

PATH = $ PATH:$ HOME /斌:在/ usr / local / bin目录:在/ usr /本地/去/箱

这个PATH可以是一个string,它需要是..添加新的项目,只是冒号分开:

退出vi编辑器并保存bashconfiguration文件(:wq代表写入和退出)

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

你必须注销terminal并重新login才能重新启动configuration文件。或者您可以使用导出来启动它。

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

你可以validation去env:

 ...$# go env 

好极了!

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

现在你可以sudo然后去go / src里面下载和创build目录,然后你就可以完成你想要完成的任务了。

 # sudo go get github.com/.. 

现在你会遇到另一个问题..你可能没有安装git ..这是另一个冒险.. 🙂

在我的Fedora 20机器上,我在〜/ .bashrc中添加了以下内容:

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

正如在官方指示中写的:

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

例如,如果您在Jetbrains Webstorm(使用Go插件 )中进行编码,则可能需要将GOPATH设置为/Users/<user>/WebstormProjects

简而言之,将其设置为您希望Go项目驻留的任何位置。

又一个解决scheme:从go env导出每个GO*环境variables

.bashrc中:

 eval $(go env | grep '^GO[A-Z0-9_]*=' | while read setenv; do echo "export $setenv; " done 2> /dev/null) [[ -n $GOPATH ]] || export GOPATH="$HOME/go/bin" [[ -n $GOROOT ]] || export GOROOT=/usr/bin/go export PATH="$PATH:$GOPATH/bin:$GOROOT/bin" 

编辑你的~/.bash_profile来添加下面一行:

 $ export GOPATH=$HOME/work 

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

 $ source ~/.bash_profile 

注:设置GOBINpath以在安装运行时生成二进制文件

 $ export GOBIN=$HOME/work/bin 

这个脚本将帮助你切换Gopaths。 https://github.com/buffonomics/goswitch