ChatGPT解决这个技术问题 Extra ChatGPT

如何在 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 没有设置,我如何以及在哪里设置它?

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

你用的是什么外壳?
除了关于将其设置为什么的答案之外,请参阅 this SO answer,它阐明了 GOPATH 是什么,以及一般应该如何使用它
使用 GVM:github.com/moovweb/gvm
注意:Go 1.8+(2017 年第二季度)将为您设置 GOPATH:请参阅 my answer below

g
ggorlen

新的方法:

Check out this answer.

旧方式:

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

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

我的 Ubuntu 13.10 上的路径是 /usr/share/go
不要使用 /usr/share/go。 GOPATH 是 go 的“工作区”,它下载包等。创建一个新目录并使用它。我推荐 ~/.go
如 user2128535 的回答所述,GOROOT 应设置为 /usr/lib/go
记得$ source ~/.bashrc ;)
I
Inanc Gumus

新方式:Go 模块

从 Go 1.11 开始,您不再需要使用 GOPATH。只需转到您的项目目录并执行一次:

go mod init github.com/youruser/yourrepo

这样,Go 在该目录中创建了一个模块根目录。

您可以根据需要创建任意数量的模块。

有关分步说明,另请参阅此答案。

旧方式:GOPATH

如果您坚持使用 GOPATH,请注意:

从 Go 1.8 开始,您不需要设置 GOPATH 或 GOROOT。

默认情况下,GOPATH 位于您的用户/主目录下。

From the documentation

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


N
Neil

Ubuntu 14.04

export GOPATH=$HOME/go

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

$HOME/.bashrc

您的评论令人困惑,因为它指的是原始答案中现已删除的一行。
mkdir -p ~/go/bin 导出 GOPATH=~/go 导出 PATH=$PATH:$GOPATH/bin:
B
Bryan Larsen

GOPATH 应设置为新创建的空目录。这是去“工作区”,它下载包等。我使用 ~/.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/


非常感谢
f
firebitsbr

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

$sudo apt install golang -y

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

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

谢谢,我刚刚卸载了我以前的安装(当时没有使用 apt)并做了你提供的。效果很好,谢谢:>
k
k0pernikus
export GOPATH=/path/desired/here

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


不过,这不是持久的。如果您希望保留此选项 - 您可能会这样做 - 您必须将其添加到登录时加载的某个文件中。
谢谢!大多数用户从未想过有人从 linux 开始,如果没有文档说明您所说的(因为每个人都认为这是一个众所周知的事实)我们将如何学习/查找信息?
I
Inanc Gumus

在终端中编写此代码。

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

V
Vytautas Šaltenis

稍后您也将需要 GOPATH。因此将其添加到 ~/.bashrc


是的,我有这个想法,但排除了一个人拥有一个带有自定义外壳的 Ubuntu 盒子并且不知道它极不可能的可能性:-)
M
Mustapha-Belkacim

对于 Go 1.13+:

go env -w GOPATH=$HOME/go

要设置 GOPATH 而不管 GO 版本如何,将以下行添加到您的 ~/.bashrc

export GOPATH=$HOME/go

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

source ~/.bashrc

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


y
ymg

如果您设置了任何需要修改环境变量的东西,例如 Java、Go 等,这将非常熟悉。

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

\---[folder name]
    +---bin
    +---pkg
    \---src

打开一个新的终端

输入 sudo nano /etc/environment

找到 PATH=... 并在它的末尾添加一个冒号 : 在最后一个路径之后然后粘贴到您的完整路径中,例如 /home/user/gocode

你就完成了,这应该使它在系统中持久化。


如果 go 为 David 工作,我不明白为什么要更改 $PATH。他需要设置 $GOPATH(见 Daniel Lin 的回答)。 David 可以合并这两种方法(或将其设置在 /etc/profile 或 $HOME/.profile 中)。顺便说一句,我建议 David 阅读以下链接:golang.org/doc/installgolang.org/doc/code.html#GOPATH
@zk82 $GOPATH 是一个环境变量,我不明白为什么编辑你的环境变量来添加这个变量是个问题。 $JAVA_HOME 和其他需要此类配置的框架也是如此。
好的我明白了。谢谢你的评论。
A
Ashwin Patil

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

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

我正在使用带有 golang 版本 1.17.6 的 mac pro 16 (Intel) Big Sur,对我来说运行良好,在 .bashrc.bash_profile 中更新,然后在 source .bashrc
T
Tom

这就是使用 fish shellUbuntu 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

J
Jeyem

go path 可以是您想要创建一个目录并以 GOPATH 的名称将全局路径变量设置为您的环境的每个位置。

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

E
Esmaeil MIRZAEE

GOPATH 是您工作空间位置的环境变量。 GOROOT 是安装目录的环境变量。虽然 GOROOTGOPATH 在安装过程中会自动设置(如果没有错误的话),要手动指定它,您可以按照以下过程进行。此外,有关详细信息,您可以参考GO's wiki page

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

这是一个解决方案 mac,在 macOS Sierra 上进行了测试,版本。 10.12,以及 Gogland-EAP,它已被 JetBrains 作为 Go 编程的 IDE 引入。

在您的终端类型上

vim ~/.profile

在终端上打开的文档中按 i 并添加以下路径

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

按 ESC 并输入 :x。最后,您应该重新启动(关闭并打开)您的终端或再次注销并登录。

对于 Windows 和 Linux 配置,请参阅 Githab 上的 Go wiki 页面设置 GOPATH-Golang。

注意 不要将 GOROOT 和 GOPATH 设置为同一个目录,否则会出现警告。


S
Shubham Jaiswal

(Ubuntu)

如果没有设置 GOPATH,将使用默认值。

您必须将 $GOPATH/bin 添加到您的 PATH 以执行安装在 $GOPATH/bin 中的任何二进制文件,或者您需要键入 $GOPATH/bin/the-command。将此添加到您的 ~/.bash_profile

导出 PATH=$GOPATH/bin:$PATH

当前的 GOPATH 命令:

去环境GOPATH

更改 GOPATH 命令:

导出 GOPATH=$HOME/your-desired-path


V
VonC

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

$HOME/go

您可以在 issue 17262associated twitter vote 上看到评论:

通过选择默认的 GOPATH,我们可以使我们的文档更容易,因为我们可以说像

$ go get github.com/foo/bar

将在 $HOME/go/src/github.com/foo/bar 中检出 github.com/foo/bar 存储库。我们不需要设置 env var 来分散新手的注意力,我们需要做的只是在页面底部添加一个小括号注释 $HOME/go 是您的 go 工作区的默认路径。如果您想更改此路径,请将 GOPATH 变量设置为您选择的内容。


N
NSP

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

$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

我在某处读到将 GOPATH 设置为与安装目录相同是一个坏主意。哦
m
mei
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin

你可能想通过 $ go env 检查


I
Isaac Henrique

在 ~.profile 文件的末尾添加::

export GOPATH="$HOME/go"
export PATH="$PATH:/usr/local/go/bin"
export PATH="$PATH:$GOPATH/bin"

u
user3151532

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

如果 go 安装为 root 用户。系统的 bash_profile 文本文件的 root 用户 ~/.bash_profile 需要将 $GOROOT 分配给 go install 目录,并且需要将 $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=$PATH:$HOME/bin:/usr/local/bin:/usr/local/go/bin

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

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

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

您必须退出终端并重新登录才能重新启动配置文件..或者您可以使用导出来启动它。

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

您可以验证 go 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 将能够在 go/src 中下载和创建目录,您可以开始着手完成您想要完成的工作。

例子

# sudo go get github.com/..

现在你会遇到另一个问题..你可能没有安装 git..那是另一种冒险..:)


不要这样做。你确实想以root身份编译东西,你确实希望go get把任何东西放在{ 2}。
在普通用户下如何运行?非常感谢。在安装过程中事情没有解决,我最终使用了一个测试虚拟机来尝试 GO。
R
Raptor

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

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

Don't set GOROOT。 (除非您是极少数使用 Go 二进制发行版但将其安装在非标准位置的人。)
D
DMaster

另一个解决方案:从 go env 导出每个 GO* 环境变量

.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"

在这种情况下,eval 通常是个坏主意,而且是矫枉过正,恕我直言
@PawełPrażak 为什么? (我不是shell脚本专家)
如果正在评估的内容存在错误,后果可能会很痛苦;这里的问题是如何仅导出 GOPATH
v
varun7447

编辑您的 ~/.bash_profile 以添加以下行:

$ export GOPATH=$HOME/work

保存并退出您的编辑器。然后,获取您的 ~/.bash_profile

$ source ~/.bash_profile

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

$ export GOBIN=$HOME/work/bin

G
Glstunna

该脚本将帮助您切换 Gopath。 https://github.com/buffonomics/goswitch


不要盲目共享脚本。列出其用例和场景的提及。
F
Franco

您可以像其他人建议的那样使用“导出”解决方案。为了永久方便,我想为您提供另一种解决方案:在运行 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 的路径添加到 pathspace 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...]

例如,您想以 /home/foobar/bar 作为 GOPATH 运行 go get github.com/go-sql-driver/mysql,只需执行以下操作:

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

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

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

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

$ gost help install

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


S
Sudharshan

您必须根据您使用的终端(bash 或 zsh)更新 PATH。

在编辑器中打开终端的 shell 脚本文件,即 ~/.bashrc 或 ~/.zshrc

vi ~/.zshrc(或)代码 ~/.zshrc

如果已经找到,请更新以下 GOPATH 或添加以下行。

export GOPATH=$HOME/go:/$HOME/projects/go

在这里,您可以将系统上 GO 项目的不同位置以分号 : 分隔的一个或多个路径添加到 GOPATH 环境变量,即 /path/1:path/2:path/3 等。

就我而言,我添加了 2 个路径,如上所示,一个来自根目录 $HOME/go,另一个来自项目目录 :/$HOME/projects/go


A
Abdul Wasae

official instructions 中所述:

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

例如,如果您在 Jetbrains Webstorm 中编码(使用 Go plugin),您可能希望将 GOPATH 设置为 /Users/<user>/WebstormProjects

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


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅