当 GVM 被告知使用新版本时,它会更改为新的 $GOPATH ,默认 gloabl pkgset 应用于该版本:
[chris@marvin]$ echo $GOPATH /home/chris/.gvm/pkgsets/go1.12.9/global -
[chris@marvin]$ gvm pkgset list -
gvm go package sets (go1.12.9) -
=> global
尽管默认情况下没有安装额外的包,但是全局 pkgset 中的包对于使用该特定版本的 Go 的任何项目都是可用的。
现在,假设你正在启用一个新项目,它需要一个特定的包。首先,使用 GVM 创建一个新的 pkgset,名为 introToGvm :
[chris@marvin]$ gvm pkgset create introToGvm -
[chris@marvin]$ gvm pkgset use introToGvm Now using version go1.12.9@introToGvm -
[chris@marvin]$ gvm pkgset list -
gvm go package sets (go1.12.9) -
global => introToGvm
如上所述,pkgset 的一个新目录被添加到 $GOPATH :
[chris@marvin]$ echo $GOPATH /home/chris/.gvm/pkgsets/go1.12.9/introToGvm:/home/chris/.gvm/pkgsets/go1.12.9/global
将目录更改为预先设置的 introToGvm 路径,检查目录结构,这里使用 awk 和 bash 完成。
[chris@marvin]$ cd $( awk -F':' '{print $1}' <<< $GOPATH ) [chris@marvin]$ pwd /home/chris/.gvm/pkgsets/go1.12.9/introToGvm -
[chris@marvin]$ ls overlay pkg src
请注意,新目录看起来很像普通的 $GOPATH 。新的 Go 包使用同样的 go get 命令下载并正常使用,且添加到 pkgset 中。
例如,使用以下命令获取 gorilla/mux 包,然后检查 pkgset 的目录结构:
[chris@marvin]$ go get github.com/gorilla/mux [chris@marvin]$ tree [chris@marvin introToGvm ]$ tree . ├── overlay │ ├── bin │ └── lib │ └── pkgconfig ├── pkg │ └── linux_amd64 │ └── github.com │ └── gorilla │ └── mux.a src/ └── github.com └── gorilla └── mux ├── AUTHORS ├── bench_test.go ├── context.go ├── context_test.go ├── doc.go ├── example_authentication_middleware_test.go ├── example_cors_method_middleware_test.go ├── example_route_test.go ├── go.mod ├── LICENSE ├── middleware.go ├── middleware_test.go ├── mux.go ├── mux_test.go ├── old_test.go ├── README.md ├── regexp.go ├── route.go └── test_helpers.go
如你所见,gorilla/mux 已按预期添加到 pkgset $GOPATH 目录中,现在可用于使用此 pkgset 项目了。
GVM 让 Go 管理变得轻而易举
(编辑:ASP站长网)
|