回答

收藏

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

技术问答 技术问答 317 人阅读 | 0 人回复 | 2023-09-12

我试着做一个go get:/ {; s3 V" A7 A1 l  U1 [, }! ^2 m+ s
    go get github.com/go-sql-driver/mysql4 u1 v- F6 C3 F. Q
失败并犯以下错误:, P: a, a( |* L: [/ I; r5 X
    package github.com/go-sql-driver/mysql: cannot download,$GOPATH not set. For more details see: go help gopath4 q( ?1 R5 D" X* L6 o. g  r) ]7 |
当我执行 a 时go env,Go 值列表如下:; J0 c5 M/ @  ]/ v! D7 _3 n* I6 o
    ubuntu@ip-xxx-x-xx-x:~$ go envGOARCH="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"
    % N( v4 {3 H- @* H
显然 GOPATH 没有设置,我该怎么设置呢?
: l! L' l3 U2 F. |8 R我看到很多线程都提到了这个错误,但是没有一个线程能回答我的问题。需要编辑哪个文件才能为路径提供值?. z% k/ {4 T1 s. h% t
                                                                : @" U: W, }. {% q
    解决方案:                                                                $ h5 B5 [. |" N2 E9 {- z# o
                                                                新方法:Go 模块从 Go 1.从11 开始,你不必再使用 GOPATH。只需转到您的项目目录并执行一次:* q7 j! d5 P6 W6 n& ?  @
    go mod init github.com/youruser/yourrepo
    . {2 n6 b/ f0 i! ]+ p7 x: P$ C
有了这个,Go 在目录中创建模块根。
" f% F  A" r$ d6 j您可以根据需要创建任何数量的模块。
2 g+ L* r- X& z: Z4 Q& s/ |有关分步说明,请参考此答案:: c  ~5 A0 Y. |4 T
从 Go 1.从11  开始,不建议使用 GOPATH,使用 的新方法Go Modules。
8 D  d% F! M& E- R0 K/ D) R0 E### 假设你正在编写一个叫 的程序simple:
! h) I. X: V. ^+ B' q[ol]创建目录:
! x! {3 z, H6 t3 q$ n: Msh mkdir simple cd simple创建新模块:* O9 j$ G" `: [# J, p2 D9 E$ i
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.将所有文件放入目录。1 N. P' {6 `0 @% R7 d: b
最后,操作:$ |5 Z/ T) Y# c0 T9 M5 r
sh go run .或者,您可以通过构建它来创建可执行程序:. B! |* c6 Q! X( S
```sh
: ]' R# y5 l+ W9 }    go build .1 ~4 B- A) s8 S* U
# then:
( T1 a1 F5 g7 X9 j4 ?    ./simple     # if you’re on xnix4 I( b9 d( K  J& E, G
# or,just:
# i# D; b$ M( R. Z' j8 b    simple       # if you’re on Windows2 T% z  v2 E$ q
    ```8 J! U  N: K) t" I+ ^
[/ol]有关更多信息,您可以阅读此。
1 @. W' x0 c% M. a: T1 ?从 1.11 开始,Go 已经包含了对版本模块的支持,正如这里提出的。vgo 2018年 2 月发布。2018年 7 月,版本化模块登陆 Go 主仓库Go 1.在14 中,模块支持被认为并鼓励所有用户从其他依赖管理系统转移到模块。
. C8 b, Q* j, c旧方式:GOPATH若坚持使用 GOPATH,请注意以下几点:
1 S5 Q1 m* {- v; p% z7 D: L从 Go 1.8 开始,你不需要设置 GOPATH 或 GOROOT。
7 e0 M3 y- w3 K+ r默认情况下,GOPATH 位于用户/主目录下。
从文档:
6 ?# j0 m" [7 v" b9 W5 z; v如果没有设置 GOPATH,则在 Unix 假设在系统上是 $HOME/go,在 Windows 上假定为 %USERPROFILE%\go。如果使用自定义位置作为工作区,可以设置 GOPATH 环境变量。! F& A) w$ F6 j7 A9 N  R
旧方式:' b0 d  X& U# y/ ^1 o+ {
只需添加以下行~/.bashrc,这将继续存在。但是,您可以使用您喜欢的其他路径作为 GOPATH,而不是$HOME/go在我的例子中。) c& X- s9 L1 B
    export GOPATH=$HOME/goexport PATH=$PATHGOROOT/binGOPATH/bin
    ; l0 ^% h( [2 t
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则