

Windows 下 Golang 多版本管理
source link: https://studygolang.com/articles/31072
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Windows 下 golang 多版本管理
当前 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:[email protected]: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
就是个笑话了,大家图个乐。
参考
有疑问加站长微信联系

Recommend
-
43
使用gvm管理golang版本遇到一个问题,就是我在.zshrc中设置了GOPATH,但是使用gvm切换后GOPATH又被gvm重新设置了,默认是$GVM_ROOT/pkgsets/go1.12.5/global。而我希望切换不同的GOROOT而GOPATH不变,因为我的项目代码都在原来的GOPATH中...
-
30
我的Mac上已经有一个JDK8的版本了,这不 JDK13 刚发布(2019-09-17),想快速的尝一尝鲜,就得安装多个版本的JD...
-
38
我们都知道在一些Golang写的程序中,默认会有 version 或 -v 相关的参数来输出软件版本信息,这些版本信息里可能包含软件版本,git中的commit记录,构建时间、构建环境等信息,那么这些信息都是如何在Golang程...
-
23
友情提示:此篇文章大约需要阅读 5分钟5秒,不足之处请多指教,感谢你的阅读。 订阅本站 在 Go 项目开发中,团队要保持开发版本一致,怎么能够快速的安装及部...
-
27
作者: HelloGitHub-追梦人物 API 不可能一成不变,无论是新增或者删除已有 API,都会对调...
-
21
重要提示 请始终升级到所发布系列的最新稳定版本。 MongoDB的版本...
-
11
1月,谷歌工程师修复了Go语言(Golang)中的一个远程代码执行漏洞。该漏洞CVE编号为CVE-2021-3115,漏洞主要影响使用go get命令的Windows Go用户。
-
7
如果你是一个 Golang 的用户,那么你大概率会遇到管理和维护 Golang 版本的诉求,如果你恰好同时需要开发调试两个不同版本的项目,在不考虑强制跳版本的情况下,你或许就需要使用“Golang 版本管理工具”来帮助你减轻负担了。 本篇文章将介绍最近几个月,...
-
10
一直用golang写业务代码,最近改动升级项把common module的version升级的v2,结果尴尬了,于是查了下文档,随手记录下v2.x及以后得版本的使用方法。 golang中module的版本管理分路径和版本号两部分,路径是go.mod中开始module
-
3
使用gvm管理多版本golang ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK