当前位置: 首页>>技术教程>>正文


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

, ,

问题描述

我正在尝试做一个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+答案:

Check out this answer.

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7868.html,未经允许,请勿转载。