首页 > 其他分享 >Go每日一库之160:gvm(Go版本管理)

Go每日一库之160:gvm(Go版本管理)

时间:2023-10-01 09:03:25浏览次数:44  
标签:版本 gvm go1.16 go1.17 一库 go Go

**gvm **用于go版本的管理,主要的功能为go版本的查看,下载安装和切换。

安装

$bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
Cloning from https://github.com/moovweb/gvm.git to /Users/admin/.gvm
Created profile for existing install of Go at "/opt/homebrew/Cellar/go/1.18.1/libexec"
Installed GVM v1.0.22

Please restart your terminal session or to get started right away run
 `source /Users/admin/.gvm/scripts/gvm`

接下来为了使gvm生效,需要执行一下上面提示的source /Users/admin/.gvm/scripts/gvm命令即可,执行结束就可以在新终端使用gvm来切换控制go的版本了。

使用

安装好了,咱们就可以来简单了解一下gvm的支持的一些功能。这下可以呼唤gvm的help选项了。

$gvm help
Usage: gvm [command]

Description:
  GVM is the Go Version Manager

Commands:
  version    - print the gvm version number # 查看gvm的版本
  get        - gets the latest code (for debugging) # 获取最新的代码(一般为了调试)
  use        - select a go version to use (--default to set permanently) # 选择使用的Go版本 (--default 可以永久设置)
  diff       - view changes to Go root # 查看Go root中的变更
  help       - display this usage text
  implode    - completely remove gvm # 完全删除 gvm 和所有已安装的 Go 版本和包
  install    - install go versions # 安装某个版本的Go
  uninstall  - uninstall go versions # 卸载某个版本的Go
  cross      - install go cross compilers # 安装跨平台Go编译器
  linkthis   - link this directory into GOPATH # 将项目路径链接到GOPATH中
  list       - list installed go versions # 罗列已经安装的Go版本列表
  listall    - list available versions # 罗列可用的Go版本
  alias      - manage go version aliases # 管理Go版本别名
  pkgset     - manage go packages sets # 管理Go包的设置
  pkgenv     - edit the environment for a package set # 编辑Go包集合的环境

简单使用

先通过gvm listall命令来看下目前的Go版本列表,如下,列表太长了,这里Go1-15的版本列表省略了,可以看出最新的是Go1.19的beta和几个rc版本了。那么咱们接下来通过下载Go1.19的rc版本来做示例。

$gvm listall

gvm gos (available)

go1
   ...
   go1.16
   go1.16beta1
   go1.16rc1
   go1.16.1
   go1.16.2
   go1.16.3
   go1.16.4
   go1.16.5
   go1.16.6
   go1.16.7
   go1.16.8
   go1.16.9
   go1.16.10
   go1.16.11
   go1.16.12
   go1.16.13
   go1.16.14
   go1.16.15
   go1.17
   go1.17beta1
   go1.17rc1
   go1.17rc2
   go1.17.1
   go1.17.2
   go1.17.3
   go1.17.4
   go1.17.5
   go1.17.6
   go1.17.7
   go1.17.8
   go1.17.9
   go1.17.10
   go1.17.11
   go1.17.12
   go1.18
   go1.18beta1
   go1.18beta2
   go1.18rc1
   go1.18.1
   go1.18.2
   go1.18.3
   go1.18.4
   go1.19beta1
   go1.19rc1
   go1.19rc2
   release.r56
   release.r57
   release.r58
   release.r59
   release.r60
   release.r57.1
   release.r57.2
   release.r58.1
   release.r58.2
   release.r60.1
   release.r60.2
   release.r60.3

安装一个Go版本

先看下目前使用的Go版本,小土这里使用的是go1.18.1的版本。

$go version
go version go1.18.1 darwin/arm64

安装一个最新Go1.19的rc1版本。

$gvm install go1.19rc1 
Installing go1.19rc1...  * Compiling... go1.19rc1 successfully installed!

版本切换

接下来,咱们切换一下下载好的go版本,这里使用gvm use version即可切换。

$gvm use go1.19rc1 
Now using version go1.19rc1

如何永久切换呢?加上--default即可永久设置,可以通过新建终端执行go version,验证查看Go版本是否完全切换。

$gvm use go1.19rc1 --default 
Now using version go1.19rc1

然后我们使用go version查看当前使用的Go版本,看来是切换成功了。那么你就可以来去自如地切换Go版本了。尤其是在调试不同Go版本带来的问题代码时候特别有用。

$go version 
go version go1.19rc1 darwin/arm64

升级问题排查

若在升级Go过程中,gvm文件的状态发生错乱或者其他问题,可以通过执行rm -rf ~/.gvm来删除gvm进行问题的fix。

小结

今天的短文主要介绍了一个gvm的使用,希望对大家有所帮助,更多详情可以查看gvm[2],另外站长之前写了一篇关于升级Go版本的文章,主要讲的是使用goup[3]来进行Go版本的管理。小土这里就不介绍了,,感兴趣的同学可以查看终于找到了一款我喜欢的安装和管理 Go 版本的工具

参考资料

gvm-installer: https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer
gvm: https://github.com/moovweb/gvm
goup: https://github.com/owenthereal/goup

标签:版本,gvm,go1.16,go1.17,一库,go,Go
From: https://www.cnblogs.com/arena/p/17738576.html

相关文章

  • Go每日一库之159:bubbletea(控制台界面程序)
    简介[bubbletea](https://github.com/charmbracelet/bubbletea)是一个简单、小巧、可以非常方便地用来编写TUI(terminalUserInterface,控制台界面程序)程序的框架。内置简单的事件处理机制,可以对外部事件做出响应,如键盘按键。一起来看下吧。先看看bubbletea能做出什么效果:感谢k......
  • Go每日一库之158:termtables(表格形式数据输出)
    简介今天学个简单点的,[termtables](https://github.com/scylladb/termtables)处理表格形式数据的输出。适用于随时随地的输出一些状态或统计数据,便于观察和调试。是一个很小巧的工具库。我在学习[dateparse](https://darjun.github.io/2021/06/24/godailylib/dateparse/)库时偶尔......
  • Go每日一库之157:tproxy (TCP连接代理与分析 )
    你有同感吗?当大家在开发服务端代码的时候,会不会经常有如下疑问?纳闷MySQL连接池到底有多少连接?每个连接的生命周期持续多久?连接异常断开的时候到底是服务端主动断的,还是客户端主动断的?当长时间没有请求的时候,底层库是否有KeepAlive请求?复杂网络情况的处理从来都是后端......
  • Go每日一库之155:go-spew(输出 Go 数据结构)
    对于应用的调试,我们经常会使用fmt.Println来输出关键变量的数据。或者使用log库,将数据以log的形式输出。对于基础数据类型,上面两种方法都可以比较方便地满足需求。对于一些结构体类型数据,通常我们可以先将其序列化后再输出。如果结构体中包含不可序列化的字段,比如func类型......
  • Go每日一库之154:eCapture(无需CA证书抓包https)
    eCapture介绍eCapture是一款基于eBPF技术实现的用户态数据捕获工具。不需要CA证书,即可捕获https/tls的通讯明文。项目在2022年3月中旬创建,一经发布,广受大家喜爱,至今不到两周已经1200多个Star。作用不需要CA证书,即可捕获HTTPS/TLS通信数据的明文。在bash审计场景,可以捕获ba......
  • Go每日一库之153:categraf (数据采集 Agent)
    简介Categraf是夜莺监控的默认数据采集Agent,主打开箱即用和all-in-one,同时支持对metrics、log、trace的收集,由夜莺监控核心开发团队开发。Categraf的代码托管在两个地方:中国计算学会确实开源平台:https://www.gitlink.org.cn/flashcat/categrafGithub:https://github.com/......
  • Go每日一库之152:gomacro(终端运行go代码)
    [gomacro](https://github.com/cosmos72/gomacro)是一个近乎完整的Go解释器,用纯Go实现,它同时提供交互式REPL和脚本模式,并且在运行时不需要Go工具链(除了一些非常特殊的场景:在运行时导入第三方包)。它在Go标准库之外有两个依赖项:github.com/peterh/liner和golang.org/x/......
  • Go每日一库之151:aurora(终端输出上色)
    背景介绍今天跟大家推荐一款可以给终端输出上色的工具--aurora。极速上手准备工作初始化项目gomodinitaurora演示项目结构.├──go.mod├──go.sum└──main.go安装aurora包goget-ugithub.com/logrusorgru/aurora代码演示首先引入aurora库import.......
  • Go每日一库之149:PDF处理相关库
    PDF处理场景:pdf渲染pdf校验pdf加水印pdf获取页数pdf合并pdf拆分修复受损pdfpdf转png识别pdf中的字体pdf解密...一、HTML页面渲染PDF根据html页面渲染pdf,我使用过以下两种方案:wkhtmltopdfchromedp1.使用wkhtmltopdf渲染pdfwkhtmltopdf是一个命令行工具,用......
  • Go每日一库之148:base64Captcha(多种形式验证码)
    Base64captcha几行代码就可以定义自己内容的图形验证码库,支持任意unicode字符的内容.1.文档&DemoEnglish中文文档Playground2.快速上手2.1下载base64Captcha包goget-ugithub.com/mojocn/base64Captcha2.2在您的项目中使用base64Captcha2.2.1实现Store......