缘起

最近编译 kubernetes 遇到了点坑,编译各种报错,经搜索调研发现 k8s 的编译对 go 的版本有很严格的要求。比如我的 go1.13.4 就无法编译 kubernetes v1.16.3,必须得 go1.12.xx 版本才能编译。为了解决这种尴尬的场景只能再在主机安装个 go1.12.xx 版本,那么有没有什么优雅的方式来实现本机多版本 Golang 版本的管理呢,能很方便的进行不同版本的切换,这也是本文的目的,推荐一款 Go多版本管理神器 gvm,用法类似 Python 的多版本管理工具 pyenv。

简介

gvm,即 Go Version Manager,Go 版本管理器,使用 shell 脚本开发,它可以非常轻量的切换 Go 版本。对比其他语言,通常也有类似的工具,如 NodeJS 的 NVM,Python 的 pyenv 等。在使用方法上和 Python 的多版本管理工具 pyenv 非常类似。

其实不借助类似的版本管理工具安装多个版本 Go 也是可以自己手动实现的,做法很简单,就是下载不同的 Golang 安装包,然后放置到独立的目录,使用时将 GOROOT 和 GOPATH 指向对应版本的目录即可完成版本切换。其实 gvm 原理上就是这么做的,只不过通过工具的形式将这些繁杂的手工操作封装起来,使得开发起来更加优雅,不必再为 Go 的安装、版本管理花费更多的心思。下面为 gvm 的工作原理:

安装

bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

安装可能遇到的坑:

$ gvm  install go1.12.10
Downloading Go source...
ERROR: Couldn't download Go source. Check the logs /Users/jim/.gvm/logs/go-download.log

根据提示看 log 报错

Cloning into '/Users/jim/.gvm/archive/go'...
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

解决问题:vim ~/.gvm/scripts/install
修改 GO_SOURCE_URL 变量地址为: GO_SOURCE_URL=git://github.com/golang/go

使用速记

1.列出当前已安装的 Go 版本

gvm list

2.列出当前可以安装的 Go 版本

gvm listall

3.安装指定版本的 Go

gvm install go1.12.10

4.切换到指定的 Go 版本
临时切换

gvm use go1.12

永久切换

gvm use go1.12 --default

参考资料

https://juejin.im/post/5d848b66f265da03a7160e89

Golang 多版本管理神器 gvm相关推荐

  1. windows安装golang多版本管理工具gvm/g

    一.安装包下载地址(随便选一个能访问的下载,区别在于命令行中使用gvm,还是g): 1.gitee上的gvm:gvm 发行版 - Gitee.com 2.github上的g:Releases · vo ...

  2. GoLang语言多版本管理工具--GVM入门介绍

    GoLang语言多版本管理工具--GVM入门介绍 GVM 由Josh Bussdieker(jbuss,jaja,jbussdieker)在Moovweb工作期间 GVM提供了一个管理Go版本的界面. ...

  3. 二进制包如何知道go 版本_你有同时使用多版本 Go 语言的需求吗,那就快使用多版本管理利器 GVM 吧!...

    公众号关注 「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux ! Golang 发展迅速,代码迭代非常快,想要在同一环境调试和梳理不同项目进程就成了一件相对棘手的事情.二进制文件的管 ...

  4. Golang 多版本管理

    如果你是一个 Golang 的用户,那么你大概率会遇到管理和维护 Golang 版本的诉求,如果你恰好同时需要开发调试两个不同版本的项目,在不考虑强制跳版本的情况下,你或许就需要使用"Gol ...

  5. 一步到位——Node版本管理神器nvm安装教程(2023最新)

    Node.js版本管理神器--nvm安装/避坑/使用全教程(2023年最新) 前言 Node的安装是许多学习前端的小伙伴的必经之路,我们可能会遇到需要切换node版本的情况,卸载node再安装另一个显 ...

  6. golang多版本管理工具g(gvm)使用(windows)

    文章目录 前言 1.下载地址 2.设置环境变量 1)设置镜像 2)设置g的工作目录 3)配置GOROOT 3.配置 5.配置 go 全局变量 4.使用 前言 gvm与g有什么区别? 同一个项目.只不过 ...

  7. golang开发的准备 - gvm(go版本管理软件)的安装

    0 系统环境 ubuntu18.04 1 前置条件 sudo apt-get install bison 2 安装步骤 1 . 从github下载安装包文件: git clone https://gi ...

  8. php版本管理工具,GVM - Go 的多版本管理工具,使用介绍

    基本介绍 项目地址 本机环境 设备 MacBook Pro 系统 macOS High Sierra 10.13.6 多版本管理使用场景 在 Mac 上使用 brew install go 真的很简单 ...

  9. go多版本管理之gvm

    背景 Go 的版本管理可以实现版本的切换,实现不同版本间环境的完全隔离 谈到环境隔离,有很多方案可供选择,如多主机.虚拟机.容器等技术.这些听起来都挺不错,都能实现需求. 多版本切换,主要是不同版本环 ...

最新文章

  1. 某女产品经理吐槽:男朋友家里出450万做婚房首付,自己想出40万加上名字,男朋友却不同意!网友:心机女!...
  2. ECSHOP在打印订单时打印出商品序号
  3. 下采样downsample代码
  4. leetcode910. 最小差值 II(贪心)
  5. 聚合 aggregate
  6. 小D课堂 - 新版本微服务springcloud+Docker教程_6-03 高级篇幅之zuul常用问题分析
  7. 本程序是三菱FX3U PLC编写的铝材过秤包装平台
  8. 如何解决Flash “此Flash Player 与您的地区不相容,请重新安装Flash”的提示?
  9. 怎么样锁定计算机时间,电脑屏幕锁屏设置时间还是锁不了怎么办
  10. apq用linux镜像,apq模拟器如何使用 apq模拟器使用方法教程
  11. 人像柯达金胶片效果调色
  12. CodeForces - 140C New Year Snowmen
  13. 弘玑Cyclone代表中国RPA进入Gartner魔力象限:迄今国内厂商最佳排名,迈入全球一线阵营
  14. c语言中int和void,关于指针:void(*)void和int(*)int在C中的含义是什么?
  15. 顶层const和底层const
  16. 一定要学会的vsCode格式化整理代码的快捷键,再也不用手动调格式了
  17. Oracle 性能优化总结
  18. 计算机64和32位的区别是什么意思,Windows7 32位和64位的区别是什么?
  19. yarn的三种调度器
  20. oracle操作题——试卷题

热门文章

  1. 电影数据库开发设计——基于jsp(使用eclipse-jee,mysql-front)
  2. 台州农商行计算机专业能力测试,银行/农商行笔试!刷题要刷到点子上,来这里专业老师给你出题...
  3. 第10章第10节:使用iSlide的幻灯片诊断工具优化幻灯片中的图片 [PowerPoint精美幻灯片实战教程]
  4. 小米计算机无法清除,小米蓝牙怎么删除不常用设备
  5. 高德地图marker屏蔽Label
  6. DAMO-YOLO全流程代码解读
  7. 刷新页面,js实现文章浏览量自动更新
  8. Python制作牛奶冻
  9. SQLite 命令行客户端 sqlite3 使用指南
  10. P8195 [传智杯 #4 决赛] 小智的疑惑