當前 golang
各個版本還是有些許不相容,最近遇到 go-micro 框架只能執行在 go 1.13 ~ 1.14 版本,而我Windows 下安裝的又是 1.15
,所以這時就需要安裝 其他版本的golang,那麼多版本 golang
如何在 Windows
上共存呢。
如果你在以下操作過程中,發現命令不生效,可以新開一個命令列視窗進行重試。
接下來會給大家介紹我嘗試過的 4 種方案。 最好的方案是第四個,第一、三個方案失敗了。
建目錄 改 PATH
在Windows 安裝好 golang,在 cmd 通過執行
$ go verstion
go version go1.15.2 windows/amd64
因為在 PATH 變數中配置了 go
的bin
目錄, 所以在 cmd 能直接執行 go.exe
。
那麼可不可以在不刪除原有golang的情況下,新建立一個資料夾 C:\Go1.13
來存放我們新版本 golang。
執行新下載的安裝程式
選擇 Uninstall
,沒關係,我們已經把 PATH
去掉了,他找不到刪除目錄的。
輸入我們給他配置的新目錄
安裝後,我傻眼了,其他檔案都安裝在 C:\Go1.13
裡,而這個卻安裝在了 C:\Go
目錄裡
而之前安裝的 Go1.15.2
被解除安裝了。我就想建立個目錄 C:\Go1.15.2
,來重新安裝 go 1.13.14, 我都把 PATH 刪除了,它還是找到檔案並刪除了。
所以通過多個目錄安裝不同版本golang的辦法是行不通的。
go get
這個是官方建議!
# 還能 get 其他版本的golang
$ go get golang.org/dl/go1.15.2
# 下載這一步不能少
$ go1.15.2 download
# 檢查下吧
$ go1.15.2 version
go version go1.15.2 windows/amd64
# 預設的 golang 版本
$ go version
go version go1.13.14 windows/amd64
新安裝的 go1.15.2.exe
在 %USERPROFILE%\go\bin
目錄下.
注意以上以上方法需要訪問 google 的服務,所以你懂的。
你不僅要設定 http代理,還需要設定 git 的全域性代理!
gvm
以下命令均在 git bash 環境執行,不是 windows cmd 環境!
本文地址
安裝
$ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
# 代理訪問
$ bash < <(curl -x socks5://james:cats@myproxy.com:8080 -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
Cloning from https://github.com/moovweb/gvm.git to /c/Users/wojia/.gvm
Created profile for existing install of Go at C:\Users\wojia\.g\go
Installed GVM v1.0.22
Please restart your terminal session or to get started right away run
`source /c/Users/w/.gvm/scripts/gvm`
最後一行提示我們新開一個 terminal, 並執行命令 source /c/Users/w/.gvm/scripts/gvm
, 我們來看看裡面有什麼動作。
$ cat /c/Users/w/.gvm/scripts/gvm
export GVM_ROOT=/c/Users/w/.gvm
. $GVM_ROOT/scripts/gvm-default
這顯然是一個配置指令碼。
配置
在 Windows 新增 GVM_ROOT 環境變數後,看看這個配置指令碼。
cat $GVM_ROOT/scripts/gvm-default
unset GOROOT
unset GOARCH
unset GOOS
unset GOPATH
unset GOBIN
unset gvm_go_name
unset gvm_pkgset_name
mkdir -p "$GVM_ROOT/logs" > /dev/null 2>&1
mkdir -p "$GVM_ROOT/gos" > /dev/null 2>&1
mkdir -p "$GVM_ROOT/archive" > /dev/null 2>&1
mkdir -p "$GVM_ROOT/archive/package" > /dev/null 2>&1
mkdir -p "$GVM_ROOT/environments" > /dev/null 2>&1
export GVM_VERSION=$(cat "$GVM_ROOT/VERSION")
export PATH="$GVM_ROOT/bin:$PATH"
export GVM_PATH_BACKUP="$PATH"
[ -f "$GVM_ROOT/environments/default" ] && . "$GVM_ROOT/environments/default"
. "$GVM_ROOT/scripts/env/gvm"
也就是說需要配置 環境變數: GVM_VERSION
, GVM_PATH_BACKUP
, PATH
。
使用
配置好後,試一下。
$ gvm install go1.4
C:\Users\w\.gvm/scripts/functions: line 3: C:\Users\w\.gvm/scripts/function/*: No such file or directory
看來 shell 指令碼沒有針對 Windows 做調整,看來 gvm 沒有對 Windows 做相容。
g
最後來看看 g
安裝
windows 的話,就直接上 github release 頁面下載目標檔案:
直接將解壓後的 g.exe
放入 PATH
目錄下即可
$ g -v
g version 1.2.0
# 安裝成功!
配置
針對 Windows 需要 將原有的 C:/Go/bin
從 PATH
中移除,新增 %USERPROFILE%\.g\go\bin
。
如果 Goland import 有報錯,就需要調整下 GOROOT
, GOPATH
配置
這裡需要調整為 C:\Users\w\.g\go
目錄。
使用
查詢當前可供安裝的stable
狀態的go版本
$ g ls-remote stable
1.13.15
1.14.7
安裝目標go版本1.14.7
$ g install 1.14.7
Downloading 100% |███████████████| (119/119 MB, 9.939 MB/s) [12s:0s]
Computing checksum with SHA256
Checksums matched
Now using go1.14.7
查詢已安裝到本地的 go版本
$ g ls
1.7.6
1.11.13
1.12.17
1.13.15
1.14.6
* 1.14.7
查詢可供安裝的所有go版本
$ g ls-remote
1
1.2.2
1.3
1.3.1
... // 省略若干版本
1.14.5
1.14.6
* 1.14.7
1.15rc1
切換到另一個已安裝的go版本
$ g use 1.14.6
go version go1.14.6 darwin/amd64
解除安裝一個已安裝的go版本
$ g uninstall 1.14.7
Uninstalled go1.14.7
總結
就目前(2020年10月)來看,g 是 Windows
上最好的 golang
多版本管理軟體,golang
的官方方案也不錯,不過執行go
命令需要加版本號,容易和 shell
指令碼耦合。
gvm
還未適配 Windows
。 而多開資料夾,改PATH
就是個笑話了,大家圖個樂。
參考
本作品採用《CC 協議》,轉載必須註明作者和本文連結