go version manager
Features
- Install/Uninstall Go versions with
gvm install [tag]
where tag is "60.3", "go1", "weekly.2011-11-08", or "tip" - List added/removed files in GOROOT with
gvm diff
- Manage GOPATHs with
gvm pkgset [create/use/delete] [name]
. Use--local
asname
to manage repository under local path (/path/to/repo/.gvm_local
). - List latest release tags with
gvm listall
. Use--all
to list weekly as well. - Cache a clean copy of the latest Go source for multiple version installs.
- Link project directories into GOPATH
Background
Installing
curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer | bash
bash
with zsh
Installing Go
gvm install go1.4
gvm use go1.4 [--default]
Usage: gvm install [version] [options]
-s, --source=SOURCE Install Go from specified source.
-n, --name=NAME Override the default name for this version.
-pb, --with-protobuf Install Go protocol buffers.
-b, --with-build-tools Install package build tools.
-B, --binary Only install from binary.
--prefer-binary Attempt a binary install, falling back to source.
-h, --help Display this message.
A Note on Compiling Go 1.5
gvm install go1.4 -B
gvm use go1.4
export GOROOT_BOOTSTRAP=$GOROOT
gvm install go1.5
List Go Versions
gvm list
gvm listall
Uninstalling
gvm implode
Mac OS X Requirements
- Install Mercurial from https://www.mercurial-scm.org/downloads
- Install Xcode Command Line Tools from the App Store.
xcode-select --install
brew update
brew install mercurial
Linux Requirements
Debian/Ubuntu
sudo apt-get install curl git mercurial make binutils bison gcc build-essential
Redhat/Centos
sudo yum install curl
sudo yum install git
sudo yum install make
sudo yum install bison
sudo yum install gcc
sudo yum install glibc-devel
- Install Mercurial from http://pkgs.repoforge.org/mercurial/
FreeBSD Requirements
sudo pkg_add -r bash
sudo pkg_add -r git
sudo pkg_add -r mercurial
Vendoring Native Code and Dependencies
${GVM_OVERLAY_PREFIX}
functions in a manner akin to a root directory hierarchy suitable for auto{conf,make,tools} where it could be passed in to./configure --prefix=${GVM_OVERLAY_PREFIX}
and not conflict with any existing operating system artifacts and hermetically be used by your workspace. This is suitable to use withC{PP,XX}FLAGS and LDFLAGS
, but you will have to manage these yourself, since each tool that uses them is different.${PATH}
includes${GVM_OVERLAY_PREFIX}/bin
so that any tools you manually install will reside there, available for you.${LD_LIBRARY_PATH}
includes${GVM_OVERLAY_PREFIX}/lib
so that any runtime library searching can be fulfilled there on FreeBSD and Linux.${DYLD_LIBRARY_PATH}
includes${GVM_OVERLAY_PREFIX}/lib
so that any runtime library searching can be fulfilled there on Mac OS X.${PKG_CONFIG_PATH}
includes${GVM_OVERLAY_PREFIX}/lib/pkgconfig
so thatpkg-config
can automatically resolve any vendored dependencies.
gvm use go1.1
gvm pkgset use current-known-good
# Let's assume that this includes some C headers and native libraries, which
# Go's CGO facility wraps for us. Let's assume that these native
# dependencies are at version V.
gvm pkgset create trial-next-version
# Let's assume that V+1 has come along and you want to safely trial it in
# your workspace.
gvm pkgset use trial-next-version
# Do your work here replicating current-known-good from above, but install
# V+1 into ${GVM_OVERLAY_PREFIX}.
Troubleshooting
rm -rf ~/.gvm
will always remove gvm. Stay tuned!参考:
https://www.moovweb.com/gvm-the-go-version-manager/
https://gocn.io/article/107
http://chen-tao.github.io/2017/09/14/Use-gvm-manage-golang-version/
------------
还有其他方案:https://github.com/syndbg/goenv(这个更简单)
https://github.com/kaneshin/goenv
--------------
树莓派通过GVM管理多版本的Golang
关于gvm
GVM,类似于ruby 中的RVM,java 中的jenv(国产),可用于方便管理 Go 的版本,它有如下几个特性:- 管理 Go 的多个版本,包括安装、卸载和指定使用 Go 的某个版本
- 查看官方所有可用的 Go 版本,同时可以查看本地已安装和默认使用的 Go 版本
- 管理多个 GOPATH,并可编辑 Go 的环境变量
- 可将当前目录关联到 GOPATH
- 可以查看 GOROOT 下的文件差异
Go 版本切换
二进制文件的管理比较简单,通过链接使用不同版本的程序即可,实际上主要是一些环境变量和标准库的设置问题,环境变量主要是 GOPATH 以及 GOROOT,标准库的话需要在切换 go 版本时也能跟着切换。gvm 实际上就是帮助完成这些配置工作。安装
按照官方文档操作即可
|
|
使用
|
|
|
|
|
|
几点注意
- 在 Linux 下安装 GVM,需要安装相关依赖,详情见官网说明,或者执行以下命令
- ``` Debian/Ubuntu
Redhat/Centos
sudo yum install curl sudo yum install git sudo yum install make sudo yum install bison sudo yum install gcc sudo yum install glibc-devel
FreeBSD Requirements
sudo pkg_add -r bash sudo pkg_add -r git sudo pkg_add -r mercurial ```
- GVM 官方显示没对 Windows 做支持,考虑到 Windows 不是程序员的标配吧(有同学回复用 git-windows客户端,自带bash功能,可以自行尝试安装下)。
- GVM 安装新版本之后,Go 环境变量会重新设置,为了节约磁盘空间和时间,建议把之前版本的 GOPATH 内容移动到新版本对应的 GOPATH 目录下,相关路径可以通过 go env 获取
- 在同一版本下,用 gvm pkgset 创建多个 GOPATH,可能会占用你比较大的磁盘空间
- 使用 gvm implode 需谨慎
- GVM 是用 shell 编写的。
GVM(Go Version Manager)是一个用于管理 Go 语言版本的工具,可以让你方便地在多个 Go 版本之间切换。本文将介绍如何在你的系统上安装 GVM。
前期准备
在 macOS
xcode-select --install brew update brew install mercurial
debian 或 ubuntu
sudo apt-get install curl git mercurial make binutils bison gcc build-essential
其他 linux 发行版本
安装 GVM
打开终端。
输入以下命令下载并安装 GVM:
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
激活 GVM:
安装后,你需要将 GVM 的初始化脚本添加到你的 Shell 配置文件中。根据使用的 shell 类型,选择相应的配置文件:
对于 bash 用户:
bashsource /Users/silon/.gvm/scripts/gvm
source ~/.bashrc
对于 zsh 用户:
bashsource /Users/silon/.gvm/scripts/gvm
source ~/.zshrc
验证安装:
你可以通过运行以下命令来验证 GVM 是否已正确安装:
bashgvm version
如果安装成功,你将看到 GVM 的版本信息。
使用 GVM 管理 Go 版本
安装后,你可以使用以下命令来管理 Go 语言版本:
列出可用的 Go 版本:
bashgvm listall
安装指定版本的 Go:
例如,要安装 Go 1.17:
bashgvm install go1.17
使用指定的 Go 版本:
使用以下命令激活已安装的 Go 版本:
bashgvm use go1.17
查看当前使用的 Go 版本:
可以通过以下命令查看当前激活的 Go 版本:
bashgo version
示例
假设你想安装并使用 Go 的最新稳定版 1.20。可以按照以下步骤操作:
使用 GVM 安装 Go 1.20:
bashgvm install go1.20
使用 Go 1.20:
bashgvm use go1.20
验证当前版本:
bashgo version
以上步骤应该能顺利地让你在 macOS 上使用 Homebrew 安装和使用 GVM 以及管理 Go 版本。
卸载 GVM
如果你需要卸载 GVM,可以使用以下命令:
bashrm -rf $HOME/.gvm
并记得从你的 shell 配置文件中删除 GVM 的初始化脚本。