当前 golang
各个版本还是有些许不兼容,最近遇到 go-micro 框架只能运行在 go 1.13 ~ 1.14 版本,而我Windows 下安装的又是 1.15
,所以这时就需要安装 其他版本的golang,那么多版本 golang
如何在 Windows
上共存呢。
如果你在以下操作过程中,发现命令不生效,可以新开一个命令行窗口进行重试。
接下来会给大家介绍我尝试过的 4 种方案。 最好的方案是第四个,第一、三个方案失败了。
在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的办法是行不通的。
这个是官方建议!
# 还能 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
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
就是个笑话了,大家图个乐。