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

2024-10-22 08:28:00
admin
原创
61
摘要:问题描述:我正在尝试做一个go get:go get github.com/go-sql-driver/mysql 并出现以下错误:package github.com/go-sql-driver/mysql: cannot download, $GOPATH not set. For more detail...

问题描述:

我正在尝试做一个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,我该如何以及在哪里设置它?

我看到许多线程提到这个错误,但没有一个能够回答我的问题,需要编辑哪个文件来为该路径提供值?


解决方案 1:

新方法:

看看这个答案。

注意:不要使用在主机上试用 go 应用程序/二进制文件go install [repo url],在这种情况下您仍然必须使用旧的方式。

旧方法:

只需添加以下几行,~/.bashrc它就会保留下来。但是,您可以使用您喜欢的其他路径作为 GOPATH,而不是$HOME/go我示例中的路径。

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

解决方案 2:

新方法:Go Modules

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

go mod init github.com/youruser/yourrepo
  • 这样,Go 就会在该目录创建一个模块根。

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

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


旧方法:GOPATH

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

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

  • GOPATH 默认位于您的用户/主目录下。

来自文档:

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

解决方案 3:

Ubuntu 14.04

export GOPATH=$HOME/go

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

$HOME/.bashrc

解决方案 4:

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

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

解决方案 5:

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

$sudo apt install golang -y

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

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

解决方案 6:

在终端中写入此代码。

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

解决方案 7:

export GOPATH=/path/desired/here

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

解决方案 8:

对于Go 1.13+

go env -w GOPATH=$HOME/go

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

export GOPATH=$HOME/go

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

source ~/.bashrc

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

解决方案 9:

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

解决方案 10:

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

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

---[folder name]
    +---bin
    +---pkg
    ---src
  • 打开一个新终端

  • 类型sudo nano /etc/environment

  • 找到PATH=...并结束它并:在最后一条路径后添加冒号然后粘贴你的完整go path例如/home/user/gocode

你就完成了,这应该会使它在整个系统中持久存在。

解决方案 11:

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

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

解决方案 12:

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

你可能想通过 $ go env 进行检查

解决方案 13:

这是我在Ubuntu 15.10上使用以下命令使其工作的fish shell

# ~/.config/fish/config.fish

set -g -x PATH /usr/local/bin $PATH
set -g -x GOPATH /usr/share/go

然后我必须更改文件夹的权限go(它被设置为根)

sudo chown <name>:<name> -R /usr/share/go

解决方案 14:

go path 可以是您想要的任何地方,只需创建一个目录并以 GOPATH 名称将全局路径变量设置为您的环境即可。

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

解决方案 15:

GOPATH是指向您工作空间位置的环境变量。GOROOT
是指向您安装目录的环境变量。虽然GOROOTGOPATH是在安装时自动设置的(如果没有错误),您可以按照以下步骤手动指定。此外,有关更多信息,您可以参考GO 的 wiki 页面。

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

  1. 这是 mac 解决方案,已在 macOS Sierra 版本 10.12 上进行了测试,并且已在 JetBrains 推出的作为 Go 编程 IDE 的 Gogland-EAP 中进行了测试。

在终端类型上

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。最后,你应该重新启动(关闭打开)你的终端或注销并再次登录

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

注意不要将GOROOTGOPATH设置为同一目录,否则您将收到警告。

解决方案 16:

(Ubuntu)

如果您未设置 GOPATH,则将使用默认值。

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

export PATH=$GOPATH/bin:$PATH

当前 GOPATH 命令:

go env GOPATH

更改 GOPATH 命令:

export GOPATH=$HOME/your-desired-path

解决方案 17:

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

$HOME/go

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

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

$ go get github.com/foo/bar

将把github.com/foo/barrepo 签入$HOME/go/src/github.com/foo/bar

我们不需要分散新手的注意力去设置环境变量,我们需要做的就是在页面底部放一个小括号注释

$HOME/go是您的 go 工作区的默认路径。

如果您想更改此路径,请将GOPATH变量设置为您选择的内容。

解决方案 18:

我的 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

解决方案 19:

如果你使用 zsh:

nano ~/.zshrc

然后在文件末尾添加:

export PATH=$PATH:/usr/local/go/bin

最后 :

source ~/.zshrc

并打开一个新终端

go version

解决方案 20:

在 ~.profile 文件末尾添加:

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

解决方案 21:

这是最令人烦恼的事情。希望可以节省你的时间。

如果 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]
    ...

确保二进制文件的路径位于 .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/src 内下载和创建目录,然后您就可以开始尝试完成的操作了。

例子

# sudo go get github.com/..

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

解决方案 22:

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

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

解决方案 23:

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

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

解决方案 24:

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

$ export GOPATH=$HOME/work

保存并退出编辑器。然后,source 你的~/.bash_profile

$ source ~/.bash_profile

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

$ export GOBIN=$HOME/work/bin

解决方案 25:

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

解决方案 26:

您可以像其他人建议的那样使用“导出”解决方案。我想为您提供另一种解决方案,以永久方便:在运行 Go 命令时,您可以使用任何路径作为 GOPATH。

首先需要下载一个小工具gosthttps://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 的路径添加到路径空间 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...]

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

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

它将帮助您设置 GOPATH 并运行命令。但请记住,您已将路径添加到gost路径空间中。如果您在 的任何子目录级别下/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

解决方案 27:

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

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

   vi ~/.zshrc
      (or)
   code ~/.zshrc
  1. 如果已经找到,请更新下面的 GOPATH 或添加下面的行。

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

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

在我的例子中,我添加了 2 个路径,如上所示,一个来自根目录$HOME/go,另一个来自项目目录:/$HOME/projects/go

解决方案 28:

正如官方说明中所写:

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

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

简单来说,将其设置为您希望 Go 项目驻留的任何位置。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用