Go 语言版本管理器(GVM)是管理 Go 语言环境的开源工具。GVM 「pkgsets」 支持安装多个版本的农何 Go 并管理每个项目的模块。它最初由 Josh Bussdieker 开发,使用GVM 与 Ruby RVM 类似,老码允许你为每个项目或一组项目创建一个开发环境,农何分离不同的使用 Go 版本和包依赖关系,来提供更大的老码灵活性,以防不同版本造成的农何问题。GVM 主要有以下几个特性: GVM 本质上就是一个 SHELL 脚本,它背后做的农何事情是先把源码下载下来,再用 C 做编译。使用所以,安装 GVM 前你需要先安装一些依赖包。源码库 安装好依赖环境后, GVM 的安装也很简单。官方提供了一键安装脚本,你只需直接运行就行了。 如果你使用的是 zsh 的话将前面的 bash 改为 zsh 即可,这条命令主要是检查相关依赖环境并下载 GVM 相关的文件,然后创建所需目录,并且在 .bashrc 或者 .zshrc 中加入: 使每次登录 Shell 时都可以自动生效。 一旦安装了 GVM,就可以开始使用它来安装和管理不同版本的 Go。首先,你可以用 gvm listall 命令显示可以下载和编译可用的 Go 版本。 安装特定的 Go 版本只需运行 gvm install 命令,其中 是表示要安装的版本。假设你正在处理一个使用 Go 1.12.8 版本的项目,你就可以使用 gvm install go1.12.8 命令来安装这个版本。 安装完成后,输入 gvm list 命令后,你会看到 Go 1.12.8 版本与系统自带的 Go 版本(使用操作系统的云服务器软件包管理器打包的版本)都同时存在。 不过,这时 GVM 仍然默认使用系统的 Go 版本,通过它旁边的 => 符号来表示。你可以使用 gvm use 命令来切换到新安装的 go 1.12.8 版本。 如果不想每次敲 gvm use 指令来切换版本,你可以加上 --default 参数来指定默认使用这个版本。 是不是,很容易呢!GVM 使管理已安装的 Go 版本变得极其简单,但它不止如此! 由于 Go 1.5 使用了自举(用 Go 编译 Go),如果在系统环境完全没有 Go 命令的情况下,直接使用 gvm install go 会报错。所以,你必须先安装 Go 1.4。 默认情况下,如果你通过 go get 获取一个包,它会被下载到 $GOPATH 目录中的 src 和 pkg 目录下。然后你可以使用 import 将其引入到你的 Go 程序中。然而,香港云服务器在不同的项目中管理相同包的不同版本就会变得困难。 GVM 通过使用「pkgsets」将项目的新目录附加到 Go 安装版本的默认 $GOPATH,类似 Linux 系统上的 $PATH,这样就可以很好地完成了项目之间包的管理和隔离。我们来看一个实例,安装一个新版本的 Go 1.12.9。 当 GVM 被告知使用一个新版本时,它将会更换一个新的 $GOPATH,gloabl pkgset 将默认使用该版本。 尽管默认情况下没有安装额外的包,但是 global pkgset 中的包对于使用这个特定版本 Go 的任何项目都是可用的。 现在,假设你正在启动一个新项目,它需要一个特定的包。首先,使用 GVM 创建一个名为 introToGvm 的新的 pkgset。 如上所述,一个与 pkgset 同名的新目录 introToGvm 被添加到 $GOPATH。 接下来,验证下新目录 introToGvm 中的目录结构。 注意:新目录看起来很像普通的 $GOPATH,新的 Go 包会被 Go get 命令下载并且被添加到 pkgset 中。 gorilla/mux 按照预期添加到了 pkgset 的 $GOPATH 目录,现在你就可以与使用该 pkgset 的项目一起使用该模块了。 如果你只是想卸载某个安装好的 Go 版本,可以使用以下指令。 如果你想完全卸载掉 GVM 和 所有安装的 Go 版本,可以使用以下指令。 总结 GVM 是以一种直观的、非侵入性的方式来管理 Go 版本和包的工具。它可以单独使用,也可以使用 GVM 的 Go 版本管理功能与其他 Go 模块管理技术结合使用。GVM 通过对 Go 版本和包依赖关系的隔离使项目开发更加容易,并减少了管理版本冲突的复杂性。什么是老码 GVM
安装 GVM
使用 GVM 安装和管理 Go 版本
使用 GVM pkgset
卸载 GVM 或指定版本 Go 语言