Go 語言多版本安裝及管理利器 - GVM
Go 的環境安裝和配置並不複雜,首先推薦看看官網的安裝教程,介紹的非常全面詳細。
如果想看中文,並擴充這方面的知識,推薦看《Go Web 程式設計》這邊開源書籍中的第一章:Go 環境配置,作者 astaxie 已經講解的非常全面直觀。
但如果你有 Go 多版本的需求(比如新老版本共存),如果你想更簡化 Go 環境配置(省去GOPATH、GOROOT等的配置),你還希望它支援跨平臺(支援Mac和Linux),那麼我特別推薦這款 Go 第三方工具:GVM—— Go 語言多版本安裝及管理利器。
GVM,類似於ruby 中的 RVM,java 中的 jenv(國產),可用於方便管理 Go 的版本,它有如下幾個主要特性:
-
管理 Go 的多個版本,包括安裝、解除安裝和指定使用 Go 的某個版本
-
檢視官方所有可用的 Go 版本,同時可以檢視本地已安裝和預設使用的 Go 版本
-
管理多個 GOPATH,並可編輯 Go 的環境變數
-
可將當前目錄關聯到 GOPATH
- 可以檢視 GOROOT 下的檔案差異
尤其是前三個特性,非常實用,接下來就詳細的介紹一下這款工具的安裝和常用方式。
安裝 GVM
一行指令碼的事情:
bash < <(curl -s -S -L https://raw.githubusercontent. ... taller)
需要注意的是,如果本地用的是 zsh,直接替換 bash 即可。
使用 GVM
直接輸入 gvm
,檢視使用幫助
☁ ~ gvm
Usage: gvm [command]
Description:
GVM is the Go Version Manager
Commands:
version - print the gvm version number
get - gets the latest code (for debugging)
use - select a go version to use (--default to set permanently)
diff - view changes to Go root
help - display this usage text
implode - completely remove gvm
install - install go versions
uninstall - uninstall go versions
cross - install go cross compilers
linkthis - link this directory into GOPATH
list - list installed go versions
listall - list available versions
alias - manage go version aliases
pkgset - manage go packages sets
pkgenv - edit the environment for a package set
幫助簡單易懂,這裡介紹其中其中幾個常用的命令。
展示 Go 版本
展示當前所有可以安裝的 Go 版本,最新的是 go1.7.3
☁ ~ gvm listall
gvm gos (available)
go1
go1.0.1
go1.0.2
go1.0.3
...
go1.7.3
展示本地安裝好的 Go 版本,箭頭表示預設使用的版本,我這裡是 go1.7.3
☁ ~ gvm list
gvm gos (installed)
go1.4
go1.5
go1.6.2
go1.6.3
go1.7
go1.7.1
=> go1.7.3
對比本地沒有的版本,我們就可以線上安裝你需要的版本了。
安裝指定的 Go 版本
如果是 go 1.5-
的版本,直接安裝:
gvm install go1.4
gvm use go1.4 [--default]
它背後做的事情是先把原始碼下載下來,再用 C 做編譯。
所以如果是 go 1.5+
的版本,因為至此 Go 實現了自舉(用 Go 編譯 Go),就需要用到 Go 1.4 來做編譯
# -B 表示只安裝二進位制包
gvm install go1.4 -B
gvm use go1.4
export GOROOT_BOOTSTRAP=$GOROOT
gvm install go1.7.3
安裝好之後,指定預設使用這個版本,加上 --default
即可,省去每次敲 gvm use
gvm use go1.7.3 --default
這個時候檢視 go 環境變數:
☁ ~ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/bingo/.gvm/pkgsets/go1.7.3/global"
GORACE=""
GOROOT="/Users/bingo/.gvm/gos/go1.7.3"
GOTOOLDIR="/Users/bingo/.gvm/gos/go1.7.3/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/g_/tjrlnbjd4sl56gp0p2nk3j5h0000gn/T/go-build385345518=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
全部幫你配置好了,看起來非常贊!
管理多個 GOPATH
GVM 還一個很實用的功能,可以管理多個 GOPATH
(Go package),是通過 gvm pkgset
命令
☁ ~ gvm pkgset
= gvm pkgset
* http://github.com/moovweb/gvm
== DESCRIPTION:
GVM pkgset is used to manage various Go packages
== Usage
gvm pkgset Command
== Command
create - create a new package set
delete - delete a package set
use - select where gb and goinstall target and link
empty - remove all code and compiled binaries from package set
list - list installed go packages
說明的很詳細,使用方法和 gvm 也類似,就不贅述
解除安裝
如果只是想解除安裝某個安裝好的 Go 版本:
gvm uninstall go1.7.3
如果你想完全解除安裝掉 GVM 和 所有安裝的 Go 版本(需謹慎):
gvm implode
注意和不足
- 在 Linux 下安裝 GVM,需要安裝相關依賴,詳情見官網說明
- GVM 官方顯示沒對 Windows 做支援,考慮到 Windows 不是程式設計師的標配吧(有同學回覆用 git-windows客戶端,自帶bash功能,可以自行嘗試安裝下)。
- GVM 安裝新版本之後,Go 環境變數會重新設定,為了節約磁碟空間和時間,建議把之前版本的 GOPATH 內容移動到新版本對應的 GOPATH 目錄下,相關路徑可以通過
go env
獲取 - 在同一版本下,用
gvm pkgset
建立多個 GOPATH,可能會佔用你比較大的磁碟空間 - 使用
gvm implode
需謹慎 - GVM 是用
shell
編寫
相關文章
- 使用 GVM 工具管理 Go 版本Go
- R語言安裝多個版本和多版本Rstudio管理R語言
- Ubuntu使用gvm安裝goUbuntuGo
- ubuntu14.04通過 gvm 安裝 go語言開發環境UbuntuGo開發環境
- go語言安裝Go
- GO語言————2、GO語言環境安裝Go
- windows下安裝go語言WindowsGo
- 【go】【gvm】Go
- Go語言快速安裝手冊Go
- Go語言版本的forgeryGo
- go語言學習-安裝和配置Go
- plsq安裝教程及語言更改
- Mac 安裝 GO語言開發環境MacGo開發環境
- Linux 核心網路包路徑追蹤利器 skbtracer,Go 語言版本LinuxGo
- 系統框架及內容如何支援多語言版本框架
- 開心檔之Go 語言環境安裝Go
- VSCODE安裝GO語言並配置go module啟動VSCodeGo
- 多語言網站利器 rel=”alternate” hreflang=”x”網站
- Swift多語言版本的建立Swift
- Go語言封裝、繼承、介面、多型和斷言的案例Go封裝繼承多型
- mac下安裝多個版本PHP及切換MacPHP
- Mac OS X 下 Python 多版本管理器 pyenv 的安裝及使用MacPython
- Go語言 安裝、Notepad++配置Go 開發環境Go開發環境
- 阿里雲ECS伺服器雲監控(cloudmonitor)Go語言版本外掛安裝解除安裝與維護阿里伺服器CloudGo
- GO語言安裝air框架時遇到go: inconsistent vendoring問題GoAI框架
- go語言錯題及答案整理Go
- Go語言反射(reflect)及應用Go反射
- Ubuntu安裝golang多版本UbuntuGolang
- 在一臺機器上安裝並使用多版本的 Go ?Go
- [Go語言整合開發環境之GoLand安裝使用]開發環境GoLand
- Go語言基於go module方式管理包(package)GoPackage
- Go語言————1、初識GO語言Go
- Eclipse 多國語言包的安裝以及外掛的安裝方法Eclipse
- Anaconda管理多Python版本下安裝庫檔案Python
- [分享] Go 語言開源專案 Drone 搭配 GitLab 安裝GoGitlab
- mysql多版本例項安裝MySql
- Go語言:包管理基礎知識Go
- Go 語言的手工記憶體管理Go記憶體