如何在 Ubuntu 上设置 GOPATH 环境变量?我必须编辑什么文件?
技术问答
348 人阅读
|
0 人回复
|
2023-09-12
|
我试着做一个go get:
" B$ W5 z+ r* }' `# W. fgo get github.com/go-sql-driver/mysql8 n+ X5 g/ M. A% {' Z
失败并犯以下错误:+ T0 W5 X# L$ k& o: L
package github.com/go-sql-driver/mysql: cannot download,$GOPATH not set. For more details see: go help gopath: Y+ r" ^% q8 H" p0 ?# ~! I- l2 y& R3 i
当我执行 a 时go env,Go 值列表如下:6 W7 ?. @; i- s' I0 X$ H5 A! y
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"
$ M/ y: x- t z7 A4 N. y. C 显然 GOPATH 没有设置,我该怎么设置呢?2 N/ _$ _) v4 u' q& ~2 o
我看到很多线程都提到了这个错误,但是没有一个线程能回答我的问题。需要编辑哪个文件才能为路径提供值?
" Y( k( E& ^8 X- D8 F7 f' h
$ j2 h# W D- n0 G. {) U4 n 解决方案:
( @, ^" U" T4 l# `9 G$ ~+ E 新方法:Go 模块从 Go 1.从11 开始,你不必再使用 GOPATH。只需转到您的项目目录并执行一次:
% S& Z, s; t; {5 k+ k3 M9 P3 Wgo mod init github.com/youruser/yourrepo9 p- W; S4 z, t) d$ ^! @
有了这个,Go 在目录中创建模块根。
, J7 w1 J% }% Q8 f- L4 K0 z% Z2 Z) N您可以根据需要创建任何数量的模块。* t. R' T2 D8 S0 O" ]* k# m5 i2 N
有关分步说明,请参考此答案:
, B3 o- u: l! A9 W从 Go 1.从11 开始,不建议使用 GOPATH,使用 的新方法Go Modules。. x2 ]+ W0 i5 K" C# t& `0 b) I
### 假设你正在编写一个叫 的程序simple:
: L8 J2 [; {& S( T& p3 x8 c% n& c$ z[ol]创建目录:2 Z, P. M3 K; m2 D+ [* e4 o( u' i; S
sh mkdir simple cd simple创建新模块:
8 a& G% c6 ^0 t5 p, f0 zsh 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.将所有文件放入目录。
) |- H+ n6 Q# l4 ~7 x: v: v最后,操作:8 i( [+ h1 E" z, F
sh go run .或者,您可以通过构建它来创建可执行程序:! t6 A1 v4 o; R
```sh
) n2 A9 w. }& w, r6 R' q4 i; v7 S/ r go build .
" a: V) M4 T2 @# q& G7 m) V& ~% m# then:
$ [) A' S* K$ a ./simple # if you’re on xnix
% ?, v: R2 Z& [! f* ]; G/ t# F# or,just:7 a; }& }& m- n
simple # if you’re on Windows% t$ L+ ]' G4 [$ Q
```4 k- c: O" I& m o9 K+ P2 y
[/ol]有关更多信息,您可以阅读此。" n' T+ Z4 T% B
从 1.11 开始,Go 已经包含了对版本模块的支持,正如这里提出的。vgo 2018年 2 月发布。2018年 7 月,版本化模块登陆 Go 主仓库Go 1.在14 中,模块支持被认为并鼓励所有用户从其他依赖管理系统转移到模块。& E2 |1 ^. {7 U( j
旧方式:GOPATH若坚持使用 GOPATH,请注意以下几点:: z$ K' |+ |4 l) \3 f6 d& o
从 Go 1.8 开始,你不需要设置 GOPATH 或 GOROOT。
) [& ~0 b" z) a# x. B$ w2 Z默认情况下,GOPATH 位于用户/主目录下。从文档:
+ Q1 @. v6 r( Y8 \; r( _1 q3 a如果没有设置 GOPATH,则在 Unix 假设在系统上是 $HOME/go,在 Windows 上假定为 %USERPROFILE%\go。如果使用自定义位置作为工作区,可以设置 GOPATH 环境变量。. l! v+ ^& _' ^7 W
旧方式:+ }* S. C; I$ k) u4 Y' R
只需添加以下行~/.bashrc,这将继续存在。但是,您可以使用您喜欢的其他路径作为 GOPATH,而不是$HOME/go在我的例子中。
2 K8 |% `3 N' [! x ^5 r }# eexport GOPATH=$HOME/goexport PATH=$PATH GOROOT/bin GOPATH/bin+ c. {' n4 Z I3 g, c- [9 K
|
|
|
|
|
|