如何在 Ubuntu 上设置 GOPATH 环境变量?我必须编辑什么文件?
技术问答
259 人阅读
|
0 人回复
|
2023-09-12
|
我试着做一个go get:
1 _7 o( }3 j) mgo get github.com/go-sql-driver/mysql9 r+ y% V [ y+ ~$ j/ a9 W
失败并犯以下错误:8 o3 {3 k6 c" H
package github.com/go-sql-driver/mysql: cannot download,$GOPATH not set. For more details see: go help gopath
! V& E8 A4 s) p0 i3 Q2 v* |6 g0 b5 T 当我执行 a 时go env,Go 值列表如下:; x( U' y* p) a6 J1 Q; {
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"" x' ^! V7 Y) \- [- c: D
显然 GOPATH 没有设置,我该怎么设置呢?
' n- [1 Q5 i6 b" ]% A) L: i0 B1 _我看到很多线程都提到了这个错误,但是没有一个线程能回答我的问题。需要编辑哪个文件才能为路径提供值?
- V, Y$ P7 u. q. {- [3 J# Z2 l' ~
/ u# g( q5 i3 i7 y9 s+ Y) W 解决方案: # J+ m, x% R6 G' F; }5 Z
新方法:Go 模块从 Go 1.从11 开始,你不必再使用 GOPATH。只需转到您的项目目录并执行一次:
7 {9 C1 ?5 K: Z' R+ R/ ^ J2 vgo mod init github.com/youruser/yourrepo9 w( A0 Y: h) V2 g8 ?2 l9 t( L
有了这个,Go 在目录中创建模块根。
: T, ]2 m- B3 |) ?, X您可以根据需要创建任何数量的模块。: Y+ r D t8 z9 n9 ?7 k1 u
有关分步说明,请参考此答案:% s4 `2 x! |8 S
从 Go 1.从11 开始,不建议使用 GOPATH,使用 的新方法Go Modules。6 d7 t) `8 {7 M/ E* h
### 假设你正在编写一个叫 的程序simple:
) n2 ]8 n, i; @7 Z1 J, s5 t[ol]创建目录:
$ |& W0 u- ~+ Dsh mkdir simple cd simple创建新模块:
4 q0 N$ M1 ]! h9 d4 E6 rsh 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.将所有文件放入目录。
# F" W8 v! p. R/ w最后,操作:" c/ Q# k. ^% s* F
sh go run .或者,您可以通过构建它来创建可执行程序:
/ x9 i6 T, D1 V; X2 R; |```sh" D- b9 R4 n4 e/ [& R; o4 O: K
go build .
3 p! n( t* D, t# then:
. ^# V0 D1 F# A. x- n8 X ./simple # if you’re on xnix
# E& v' c d! o) q) x' K) g& L9 N! e# or,just: \) N6 a/ |2 k A
simple # if you’re on Windows! B2 h, a4 f9 ?: M# _1 Q1 r. x
```; v' R$ W7 Z5 E" \0 V5 I
[/ol]有关更多信息,您可以阅读此。3 F4 L4 e0 o) M
从 1.11 开始,Go 已经包含了对版本模块的支持,正如这里提出的。vgo 2018年 2 月发布。2018年 7 月,版本化模块登陆 Go 主仓库Go 1.在14 中,模块支持被认为并鼓励所有用户从其他依赖管理系统转移到模块。
' j! I# J% C% \4 e, o: \旧方式:GOPATH若坚持使用 GOPATH,请注意以下几点:
! K Z. w& n+ R从 Go 1.8 开始,你不需要设置 GOPATH 或 GOROOT。
7 M. C) p' J( M7 a+ }, o, P: G) r! \3 M默认情况下,GOPATH 位于用户/主目录下。从文档:
$ w8 N& c- h7 w) L' E4 J( y如果没有设置 GOPATH,则在 Unix 假设在系统上是 $HOME/go,在 Windows 上假定为 %USERPROFILE%\go。如果使用自定义位置作为工作区,可以设置 GOPATH 环境变量。
+ x) q# K, d4 v( V旧方式:- [: ?9 ~3 M9 {; B. P
只需添加以下行~/.bashrc,这将继续存在。但是,您可以使用您喜欢的其他路径作为 GOPATH,而不是$HOME/go在我的例子中。! o4 F& F! i, b% ?1 M
export GOPATH=$HOME/goexport PATH=$PATHGOROOT/binGOPATH/bin
* X0 r/ L" r/ Z6 ~: q, ~ A |
|
|
|
|
|