如何在 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=$PATH GOROOT/bin GOPATH/bin
; l0 ^% h( [2 t |
|
|
|
|
|