成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go 版本管理器 gvm 怎么使用?

開發(fā) 前端
本文我們介紹怎么使用 Go 版本管理器 gvm 在同一臺機器上維護多個版本的 Go 和多個版本的工具。讀者朋友們?nèi)绻灿性撔枨螅扑]大家試用一下 gvm。

1.介紹

在使用 Go 開發(fā)項目時,通常我們會遇到關于 Go 版本的一些問題,比如:公司的舊項目使用的低版本 Go 開發(fā),新項目使用的高版本 Go 開發(fā)。

或者,公司的 Go 項目使用的低版本 Go 開發(fā),我們想要學習 Go 新版本的一些新特性。

總之,我們就是有使用不同 Go 版本開發(fā)項目的需求。

本文給讀者朋友們推薦的是 Go 版本管理器 gvm[1],使用 gvm 可以非常方便切換 Go 開發(fā)環(huán)境的 Go 版本。

2.安裝

我的本地開發(fā)環(huán)境是 macOS 系統(tǒng),以 macOS 為例,安裝 gvm 的步驟如下:

  • 安裝解析生成器 Bison[2]。

執(zhí)行命令:

brew install bison

需要注意的是,通常在 macOS 中,已存在 bison,可以執(zhí)行命令 which bison 檢查,如果不存在,再使用 macOS 軟件包管理器 Homebrew[3] 安裝。

  • 安裝 gvm。

執(zhí)行命令:

bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

需要注意的是,如果你使用的不是 bash,請更改為你使用的 shell,比如你使用的 zsh,只需把 bash 改為 zsh。

安裝完之后,在你的 ~/.bashrc 或 ~/.zshrc 中添加以下命令:

[[ -s "$HOME/.gvm/scripts/gvm" ]] && source "$HOME/.gvm/scripts/gvm"

然后,執(zhí)行命令 source ~/.bashrc 或 source ~/.zshrc。

  • 輸出 gvm 版本號。

執(zhí)行命令:

gvm version

輸出結(jié)果:

Go Version Manager v1.0.22 installed at /Users/frank/.gvm

如果可以輸出 gvm 的版本號,說明已成功安裝 gvm。

需要注意的是,如果你使用的不是 macOS,而是 Linux 發(fā)行版 Ubuntu 或者 Centos 等,請參考官方文檔,安裝所需的依賴。

3.基礎使用方式

在安裝 gvm 之后,我們可以執(zhí)行 gvm 查看 gvm 支持的命令。

安裝 go:

首先,我們可以執(zhí)行命令 gvm listall 查看 gvm 收錄的 Go 版本,然后,我們可以執(zhí)行命令 gvm install go1.24.4 安裝指定 Go 版本。

選擇 go:

安裝多個 Go 版本之后,我們可以執(zhí)行命令 go use go1.24.4 選擇使用的 Go 版本。

卸載 go:

如果我們想要卸載某個不再需要的 Go 版本,我們可以執(zhí)行命令 go uninatll go1.24.1,但是,需要注意的是,我們需要先執(zhí)行命令 gvm use go1.24.1 && go clean -modcache,然后,再執(zhí)行命令 gvm uninstall go1.24.1 刪除 Go 版本。

4.進階使用方式 - pkgset

在掌握了基礎使用方式之后,我們再聊聊進階使用方式 - 包集(pkgset)機制。

當我們使用 gvm use go1.24.4 選擇 Go 版本之后,執(zhí)行命令 echo $GOPATH,輸出結(jié)果是 /Users/frank/.gvm/pkgsets/go1.24.4/global。

進入 GOPATH 目錄 cd $GOPATH,執(zhí)行命令 ls -l,輸出 overly,該目錄包含 2 個子目錄,分別是 bin 和 lib。

cd $GOPATH
tree
.
└── overlay
    ├── bin
    └── lib
        └── pkgconfig

實際上,這就是 gvm 的包集(pkgset)機制,默認創(chuàng)建全局包集 global,作為默認包集,該路徑作為環(huán)境變量 GOPATH。

我們在該路徑下創(chuàng)建 src 目錄,用于存放 Go 代碼。

其中,包集路徑下的子目錄 overlay 的作用是作為環(huán)境變量 GOBIN,比如執(zhí)行命令 go install 或 go build -o 生成二進制文件時,gvm 會將路徑 /Users/frank/.gvm/pkgsets/go1.24.4/global/overlay/bin 作為環(huán)境變量 GOBIN。

另外一個作用是存放我們安裝的自定義工具,比如 easyjson。

比如,當我們需要使用不同版本的工具(比如 easyjson)時,我們可以使用 gvm 的包集(pkgset)機制,創(chuàng)建不同的包集,安裝不同版本的自定義工具。

我們可以使用 gvm 的子命令 pkgset 管理 Go 包。

gvm 創(chuàng)建包集(pkgset):

gvm pkgset create mypkg

gvm 選擇包集(pkgset):

gvm pkgset use mypkg
Now using pkgset go1.24.4@mypkg

列出所有包集(pkgset):

gvm pkgset list

gvm go package sets (go1.24.4)

    global
=>  mypkg

通過 gvm 的包集機制,使我們在同一臺機器上,可以維護多個版本的 Go 和多個版本的工具。使不同版本的 Go 完全隔離它們的包和依賴。

5.進階使用方式 - .gvmrc

我們前面講的都是執(zhí)行 gvm 命令的方式,使用 gvm 管理 Go 版本和包集,實際上還可以使用 .gvmrc 配置文件的方式。

GOPATH 模式

以 GOPATH 模式的項目為例,Go 項目的目錄結(jié)構(gòu):

~/.gvm/
└── pkgsets/
    └── go1.24.4/
        └── myproject/                  <-- gvm 的 pkgset: GOPATH 根目錄
            ├── overlay/                <-- go install 安裝的工具
            ├── pkg/                    <-- 編譯后緩存包
            └── src/                    <-- GOPATH 模式項目代碼都放這里
                └── github.com/
                    └── yourname/
                        └── yourproject/
                            ├── .gvmrc
                            ├── main.go
                            └── util/
                                └── helper.go

.gvmrc 項目級配置文件:

.gvmrc 配置文件的示例內(nèi)容:

# go1.24.4
go1.24.4@myproject

其中,go1.24.4 表示指定項目使用的 Go 版本;go1.24.4@myproject 表示指定項目使用的 Go 版本和包集。

使用方式:.gvmrc 配置文件并不會自動生效,需要進入項目目錄中,執(zhí)行命令 gvm pkgset use。

需要注意的是,一般我們會把 .gvmrc 文件放在項目目錄的根目錄中,但是,也可以放在其它目錄中,執(zhí)行命令 gvm pkgset use -f path/to/.gvmrc,通過 -f 選項指定 .gvmrc 的路徑。

Go Modules 模式

實際上,在 go v1.11 開始,社區(qū)開始推薦使用 Go Modules 模式,不建議繼續(xù)使用 GOPATH 模式。

以 Go Modules 模式為例,Go 項目的目錄結(jié)構(gòu):

~/code/myapp/                  <-- 項目根目錄
│
├── .gvmrc                     <-- 指定使用的 Go 版本和 pkgset(如 go1.24.4@mypkg)
├── go.mod                     <-- Go modules 項目
├── go.sum
│
├── cmd/                       <-- 程序入口目錄(main.go 通常放在這里)
│   └── myapp/
│       └── main.go
│
├── internal/                  <-- 項目私有代碼
│   └── config/
│       └── config.go
│
├── pkg/                       <-- 可復用的庫代碼
│   └── util/
│       └── string.go
│
├── api/                       <-- 接口定義、protobuf 或 OpenAPI 等
│   └── proto/
│       └── service.proto
│
├── scripts/                   <-- 腳本目錄,比如構(gòu)建/部署腳本
│   └── build.sh
│
├── README.md
└── Makefile                   <-- 推薦添加 Makefile 簡化常用操作

我們可以發(fā)現(xiàn),.gvmrc 配置文件在 Go Modules 模式的 Go 項目的根目錄。

同樣,我們進入項目目錄之后,通過執(zhí)行命令 gvm pkgset use 讀取 .gvmrc 中的配置信息。

6.總結(jié)

本文我們介紹怎么使用 Go 版本管理器 gvm 在同一臺機器上維護多個版本的 Go 和多個版本的工具。

讀者朋友們?nèi)绻灿性撔枨螅扑]大家試用一下 gvm。

需要注意的是,gvm 不支持 Windows,使用 Windows 的讀者朋友們,可以選擇其它版本管理器,比如 g 和 asdf 等。

責任編輯:武曉燕 來源: Golang語言開發(fā)棧
相關推薦

2019-10-11 15:10:09

GVMGoLinux

2020-08-05 12:27:18

Go語言碼農(nóng)

2024-09-29 15:26:01

2023-12-14 08:01:08

事件管理器Go

2023-11-25 09:31:20

Go事件管理器

2013-03-29 12:52:14

Android位置管理

2020-10-12 09:00:00

Firefox任務管理器瀏覽器

2018-03-05 10:18:44

Linux密碼密碼管理器

2011-10-24 09:47:37

RHEL網(wǎng)絡管理器

2010-10-20 16:12:40

SQL Server角

2010-12-28 14:53:29

服務器管理器

2011-06-16 10:52:10

SUSE管理器Linux

2017-03-28 14:30:24

Windows 8Windows計算機管理器

2020-04-07 15:25:22

Fluxbox窗口管理器Linux

2013-11-20 15:32:13

紅帽RedHatYUM包

2009-12-23 08:50:27

Fedora任務管理器

2009-06-30 12:15:09

資源管理器Oracle性能

2022-03-21 21:28:00

Homebrew包管理器Linux

2010-01-05 10:14:09

Ubuntu軟件包

2009-02-01 10:17:22

布局管理器LayoutManagGUI
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 在线91| 久久久www成人免费精品 | 久久亚洲国产精品 | 久久里面有精品 | 日韩在线中文 | 久久国产一区 | 日韩成人av在线 | 精品欧美久久 | a毛片| 欧美精品一区二区免费 | 伊人一区 | 97伦理最新伦理 | 国产福利在线播放 | 欧美一级免费片 | 99re视频在线观看 | 精品视频导航 | 69av片| 黄色大片免费播放 | 久久久精 | 美女视频三区 | 日韩一二三区视频 | www.成人久久 | 一区二区三区高清不卡 | 亚洲精品视频免费看 | 亚洲国产一区二区视频 | 国产精品久久久久久久久久久久午夜片 | 91在线观看视频 | 国产福利在线播放麻豆 | 成年人视频在线免费观看 | 午夜一级做a爰片久久毛片 精品综合 | 国产精品视频一二三区 | 九九热精 | 在线视频 亚洲 | 亚洲一区在线观看视频 | 一区二区三区四区在线播放 | 精品一二| 亚洲精品乱码久久久久久久久久 | 久久er99热精品一区二区 | 午夜丁香视频在线观看 | 欧美久久久久久久 | 精品久久久久久久 |