乐趣区

关于golang:Windows-下-Golang-多版本管理

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 变量中配置了 gobin 目录, 所以在 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

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_VERSIONGVM_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/binPATH 中移除,新增 %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 就是个笑话了,大家图个乐。

参考

  • https://golang.org/doc/manage…
退出移动版