如何在Ubuntu上设置GOPATH环境变量?我必须编辑哪个文件?

Dav*_*oth 243 linux ubuntu go

我想做一个go get:

go get github.com/go-sql-driver/mysql
Run Code Online (Sandbox Code Playgroud)

它失败并出现以下错误:

package github.com/go-sql-driver/mysql: cannot download, $GOPATH not set. For more details see: go help gopath
Run Code Online (Sandbox Code Playgroud)

当我这样做时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"
Run Code Online (Sandbox Code Playgroud)

显然没有设置GOPATH,我如何设置它?

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

小智 270

只需将以下行添加到〜/ .bashrc中,这将保持不变.但是,您可以在我的示例中使用您喜欢的其他路径作为GOPATH而不是$ HOME/go.

export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Run Code Online (Sandbox Code Playgroud)

  • 不要使用/ usr/share/go.GOPATH是"工作区",它下载包等等.创建一个新目录并使用它.我推荐〜/ .go (33认同)
  • 如user2128535的回答所述,GOROOT应设置为/ usr/lib/go (16认同)
  • 我的Ubuntu 13.10上的路径是`/ usr/share/go`. (14认同)
  • 记得`$ source~/.bashrc`;) (10认同)
  • 不要设置GOROOT!http://dave.cheney.net/2013/06/14/you-dont-need-to-set-goroot-really (9认同)
  • 我的Ubuntu 14.04上的路径是`/ usr/share/go` (3认同)

小智 63

Ubuntu 14.04

export GOPATH=$HOME/go
Run Code Online (Sandbox Code Playgroud)

此外,您可以将此字符串添加到文件

$HOME/.bashrc
Run Code Online (Sandbox Code Playgroud)


Bry*_*sen 58

应将GOPATH设置为新创建的空目录.这是go"工作区",它下载包等等.我用〜/ .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
Run Code Online (Sandbox Code Playgroud)

来源:http: //www.larry-price.com/blog/2013/12/15/setting-up-a-go-environment-in-ubuntu-12-dot-04/


小智 27

例如,如果它是Ubuntu,则在安装软件包之后:

$sudo apt install golang -y
Run Code Online (Sandbox Code Playgroud)

只需将以下行添加到〜/ .bashrc(您的用户)

export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Run Code Online (Sandbox Code Playgroud)


Ina*_*mus 17

转到模块[新方法]

从Go 1.11开始:现在有了Go Modules支持(以前称为vgo),因此您不再需要使用GOPATH。但是,这仍然是实验功能。

例如,您可以转到系统中的任何目录($ GOPATH之外的目录),并可以在此处初始化一个新的Go模块,然后可以在其中工作。不需要GOPATH。

您需要执行一次(在目录中):

go mod init github.com/youruser/yourrepo
Run Code Online (Sandbox Code Playgroud)

此后,Go将把该目录假定为模块根目录。您可以根据需要创建任意数量的模块。GOPATH即将成为历史


如果您坚持使用GOPATH,请注意以下几点:

从Go 1.8开始:您无需设置GOPATH或GOROOT。默认情况下,GOPATH在用户/主目录下。

如果未设置GOPATH,则在Unix系统上假定为$ HOME / go,在Windows上假定为%USERPROFILE%\ go。如果要将自定义位置用作工作区,则可以设置GOPATH环境变量。

更多信息,请查看出来。


Dav*_*oth 15

export GOPATH=/path/desired/here
Run Code Online (Sandbox Code Playgroud)

无需编辑任何文件,我们只需使用上面的命令直接编辑Go环境变量即可.

  • 但这不是持久的.如果您希望保留此选项 - 您可能会这样做 - 您必须将其添加到登录时加载的某个文件中. (8认同)

ati*_*kan 11

最短最新的解决方案.

在终端中写下此代码.

export GOPATH=path/to/your/gopath/directory
Run Code Online (Sandbox Code Playgroud)

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

具有持久性,在粘贴下面的代码.zshrc.bashrc根据您的shell文件.主目录中的那些文件.它将如下所示.

export PATH=path/to/some/other/place/composer/for/example
export GOPATH=path/to/your/gopath/directory
export PATH=$PATH:$GOPATH/bin
Run Code Online (Sandbox Code Playgroud)


Vyt*_*nis 10

你以后也需要GOPATH.所以添加它~/.bashrc.

  • ... _iff_你正在使用bash.这对你来说可能听起来很疯狂,但不是每个人都这样. (8认同)
  • 是的,我考虑到了这一点,但驳回了一个人有一个带有自定义shell的Ubuntu盒的可能性并且不太可能知道它:-) (8认同)

ymg*_*ymg 9

如果您已经设置了需要修改环境变量的任何内容,例如Java,Go等,那将非常熟悉.

我将假设您在Go路径的某处具有以下目录结构:

\---[folder name]
    +---bin
    +---pkg
    \---src
Run Code Online (Sandbox Code Playgroud)
  • 打开一个新的终端
  • 类型 sudo nano /etc/environment
  • 找到PATH=...并结束它并:在最后一条路径后添加冒号然后粘贴到您的完整go path例如/home/user/gocode

并且你已经完成了,这应该使它在系统中持久化.

  • @ zk82 $ GOPATH是一个环境变量,我不明白为什么编辑环境变量来将此变量添加到它是一个问题.对于$ JAVA_HOME和其他需要这种配置的框架也是如此. (2认同)

Mus*_*cim 6

对于Go 1.13+

go env -w GOPATH=$HOME/go
Run Code Online (Sandbox Code Playgroud)

无论 GO 版本如何,都要设置 GOPATH,请将以下行添加到您的~/.bashrc

export GOPATH=$HOME/go
Run Code Online (Sandbox Code Playgroud)

并且不要忘记获取您的.bashrc文件:

source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

golang官方wiki更多选项:https : //github.com/golang/go/wiki/SettingGOPATH


Ash*_*til 5

只需将以下行添加到~/.bashrc

export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Run Code Online (Sandbox Code Playgroud)