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

问题描述

新方法:Go 模块

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

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

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

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

从 Go 1.11+ 开始,不再推荐使用 GOPATH,新的方式是使用 Go Modules。

### 假设您正在编写一个名为 的程序simple

  1. 创建目录:

    sh mkdir simple cd simple

  2. 创建一个新模块:

    sh go mod init github.com/username/simple # Here, the module name is: github.com/username/simple. # You're free to choose any module name. # It doesn't matter as long as it's unique. # It's better to be a URL: so it can be go-gettable.

  3. 将所有文件放在该目录中。

  4. 最后,运行:

    sh go run .

  5. 或者,您可以通过构建它来创建一个可执行程序:

    ```sh go build .

    # then: ./simple # if you’re on xnix

    # or, just: simple # if you’re on Windows ```

有关更多信息,您可以阅读

从 1.11 开始,Go 已经包含了对版本模块的支持,正如这里提出的那样。最初的原型 vgo 于 2018 年 2 月发布。 2018 年 7 月,版本化模块登陆 Go 主存储库。在 Go 1.14 中,模块支持被认为可以用于生产,并鼓励所有用户从其他依赖管理系统迁移到模块。

旧方式:GOPATH

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

  • 从 Go 1.8 开始,您不需要设置 GOPATH 或 GOROOT。
  • 默认情况下,GOPATH 位于您的用户/主目录下。

从文档

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

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

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

解决方法

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

当我执行 a 时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 没有设置,我应该如何以及在哪里设置它?

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...