前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >利用gvm管理go版本

利用gvm管理go版本

作者头像
AsiaYe
发布于 2022-12-07 01:07:13
发布于 2022-12-07 01:07:13
88100
代码可运行
举报
文章被收录于专栏:DBA随笔DBA随笔
运行总次数:0
代码可运行

利用gvm管理go版本

现在转行开发之后,使用Go语言的场景变多了,有时候很多github上down下来的工程使用了不同的golang版本,在编译的时候,都会遇到一些依赖包的兼容性问题。这就要求我们在同一台机器上,安装多个golang的版本,多个版本之间如何进行快速切换和管理,就成为了一个问题。

所幸,开源的gvm工具可以比较好地解决同一台服务器上安装多个go版本的问题。

01

gvm的安装

安装分为下面几个命令:

1、wget命令下载gvm的github项目文件。

wget https://github.com/moovweb/gvm/archive/refs/heads/master.zip

下载得到master.zip文件夹。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@yeyz ~]# wget https://github.com/moovweb/gvm/archive/refs/heads/master.zip
--2022-10-23 18:56:37--  https://github.com/moovweb/gvm/archive/refs/heads/master.zip
Resolving github.com (github.com)... 20.205.243.166
Connecting to github.com (github.com)|20.205.243.166|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/moovweb/gvm/zip/refs/heads/master [following]
--2022-10-23 18:56:38--  https://codeload.github.com/moovweb/gvm/zip/refs/heads/master
Resolving codeload.github.com (codeload.github.com)... 20.205.243.165
Connecting to codeload.github.com (codeload.github.com)|20.205.243.165|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/zip]
Saving to: ‘master.zip’

    [     <=>                                                                                                                                                                                        ] 357,461      378KB/s   in 0.9s   

2022-10-23 18:56:40 (378 KB/s) - ‘master.zip’ saved [357461]

[root@yeyz ~]# 
[root@yeyz ~]# ls  -l
total 356
-rw-r--r-- 1 root root    108 Jun 13 23:57 dump.rdb
-rw-r--r-- 1 root root 357461 Oct 23 18:56 master.zip

2、解压master.zip文件,执行其中的install文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
解压master.zip文件
[root@yeyz ~]# unzip master.zip 
Archive:  master.zip
19365a6ab8ac4920234b2612c529eed2373299db

解压出来gvm-master目录
[root@yeyz ~]# ll
total 360
-rw-r--r-- 1 root root    108 Jun 13 23:57 dump.rdb
drwxr-xr-x 9 root root   4096 Feb 17  2020 gvm-master
-rw-r--r-- 1 root root 357461 Oct 23 18:56 master.zip

进入gvm-master/binscripts/目录
[root@yeyz ~]# cd gvm-master/binscripts/
[root@yeyz binscripts]# ll
total 4
-rwxr-xr-x 1 root root 4031 Feb 17  2020 gvm-installer

执行gvm-installer文件
[root@yeyz binscripts]# ./gvm-installer 
Cloning from https://github.com/moovweb/gvm.git to /root/.gvm
which: no go in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql-8.0.22/bin)
No existing Go versions detected
Installed GVM v1.0.22

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

自动安装好了gvm版本,按照提示执行如下命令
[root@yeyz binscripts]# source /root/.gvm/scripts/gvm

至此,gvm安装完毕。下面是常见的一些命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gvm常见命令如下

查看当前机器的Go环境
$ gvm  list

查看所有可安装的Go版本
$ gvm listall

安装Go
$ gvm install go1.17.1

切换Go版本
$ gvm use go1.17.1

查看Go版本
$ go version

02

查看并安装的go

使用gvm listall命令,查看gvm支持安装的golang版本,如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@yeyz binscripts]# gvm listall

gvm gos (available)

   go1
   go1.0.1
   go1.0.2
   go1.0.3
   .......
   go1.6.2
   go1.6.3
   go1.6.4
   go1.7
   go1.7beta1
   go1.7beta2
   go1.7rc1
   go1.7rc2

可以看到,几乎golang发布路径上的所有版本,它都是支持的。

安装指定版本的go语言,例如go17:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@yeyz ~]$ gvm install go1.17.1
Installing go1.17.1...
 * Compiling...
go1.17.1 successfully installed!

当然,你可以在一台服务器上安装go的多个版本,只需要修改一下gvm命令最后面的go版本即可。

查看当前系统所有的go版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@yeyz ~]$ gvm list

gvm gos (installed)

   go1.17.1
=> system

其中,system代表系统上本来就存在的go版本。system旁边的=>符号代表当前使用的是系统上的go版本。

如果我们需要切换go的版本,可以使用下面的go use命令来进行切换,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@yeyz ~]$ gvm use go1.17.1
Now using version go1.17.1

[root@yeyz ~]$ go version
go version go1.17.1 linux/amd64

使用上面的方法,就可以很方便地进行golang版本的切换。

其实除了版本管理之外,还需要进行go的pkgset管理,它主要针对不同的go版本,下载下来的依赖包,将它们放置在不同的路径下面。

修改pkgset常用的命令如下(不再单独演示):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@yeyz ~]$ gvm use go1.17.1


pkgset使用

#自定义新的pkgset比如gopkg17
gvm pkgset create gopkg17

#应用gopkg17
gvm pkgset use gopkg17

#查看pkgset路径
gvm pkgset list
echo $GOPATH

#安装xxx包,此时它被安装到gopkg17的下面
go get github.com/xxx

上述go版本的管理,和gopkg的管理,是gvm最常用的2个功能。除此之外,它还有其他一些常用命令和功能,大家可以使用gvm命令去查看,然后按需去使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@yeyz ~ ]# gvm 
Usage: gvm [command]

Description:
  GVM is the Go Version Manager

Commands:
  version    - print the gvm version number
  get        - gets the latest code (for debugging)
  use        - select a go version to use (--default to set permanently)
  diff       - view changes to Go root
  help       - display this usage text
  implode    - completely remove gvm
  install    - install go versions
  uninstall  - uninstall go versions
  cross      - install go cross compilers
  linkthis   - link this directory into GOPATH
  list       - list installed go versions
  listall    - list available versions
  alias      - manage go version aliases
  pkgset     - manage go packages sets
  pkgenv     - edit the environment for a package set
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Go每日一库之160:gvm(Go版本管理)
接下来为了使gvm生效,需要执行一下上面提示的source /Users/admin/.gvm/scripts/gvm命令即可,执行结束就可以在新终端使用gvm来切换控制go的版本了。
luckpunk
2023/10/02
5700
GVM:Go语言版本和包管理的神器!
在 Go 开发中,不同的项目可能需要不同的 Go 版本。这时候,GVM(Go Version Manager)就像是一个救星,它允许您在同一台机器上轻松切换不同版本的 Go。以下是如何安装和使用 GVM 来管理您的 Go 版本。
南山竹
2024/06/06
2.4K0
GVM:Go语言版本和包管理的神器!
如何灵活地进行 Go 版本管理
本文谈下我对 Go 版本管理的一些思考,并给大家介绍一个小工具,gvm。这个话题说起来也很简单,但如果想用的爽,还是要稍微梳理下。
波罗学
2019/09/23
1.6K0
Go 版本管理器 gvm 怎么使用?
在使用 Go 开发项目时,通常我们会遇到关于 Go 版本的一些问题,比如:公司的旧项目使用的低版本 Go 开发,新项目使用的高版本 Go 开发。
frank.
2025/06/09
1090
Go 版本管理器 gvm 怎么使用?
使用 GVM 工具管理 Go 版本
在 Go 项目开发中,团队要保持开发版本一致,怎么能够快速的安装及部署并且切换 Go 环境,在这里推荐一款工具 GVM ( Go Version Manager ),它可以便捷切换与自定义 Go Path 、Go Root 等参数,是一款实打实的多版本安装及管理利器。
Meng小羽
2020/07/14
1.2K0
使用GVM管理多个版本的Go【Programming(Go)】
使用Go Version Manager保留多个Go环境,包括版本和模块,以简化GOPATH管理。
Potato
2019/11/17
1.4K0
使用GVM管理多个版本的Go【Programming(Go)】
Oracle Linux 8.10 编译安装sysbench
--2025-04-24 16:14:25-- https://github.com/akopytov/sysbench/archive/refs/heads/master.zip
OrangeDBM
2025/04/25
760
Oracle Linux 8.10 编译安装sysbench
ElasticSearch 6.x 学习笔记:2.head插件
ElasticSearch-head是一个H5编写的ElasticSearch集群操作和管理工具,可以对集群进行傻瓜式操作。
程裕强
2022/05/06
1.1K0
ElasticSearch 6.x 学习笔记:2.head插件
SSDB基础
ssdb 是一个高性能支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.
franket
2022/04/23
1.2K0
go语言学习之环境安装(一)
go语言在云计算领域有着极大的市场空间,在云计算领域。明星项目,docker,eted, kubernetes,harbor皆使用go编写。go强大的网络编程,原生支持高并发。
暮雨
2018/10/11
5730
go语言学习之环境安装(一)
你有同时使用多版本 Go 语言的需求吗,那就快使用多版本管理利器 GVM 吧!
Golang 发展迅速,代码迭代非常快,想要在同一环境调试和梳理不同项目进程就成了一件相对棘手的事情。二进制文件的管理比较简单,通过链接使用不同版本的程序即可。实际上主要是一些环境变量和标准库的设置问题,偶然间发现了 GVM - Go Version Manager,GVM 实际上就是帮助我们完成这些配置工作,这算是找到了调试切换版本的福音了。
iMike
2020/05/24
5.1K0
你知道怎么管理golang版本吗?
然后复制该脚本到自己的编辑器。保存为install_gvm.sh,然后运行即可。安装完成后,重启terminal。
DBA札记
2023/10/25
2780
你知道怎么管理golang版本吗?
pavian结果可视化
pavian 是一款基于 shinny 的 R 包,可以生成交互式的网页结果。也可以使用在线版本的pavian。支持 kraken,metaphlan 格式结果。如果要利用pavian 可视化 centrifuge 结果,需要首先将其转换为 kraken 格式结果。
生信喵实验柴
2023/02/24
1.4K0
pavian结果可视化
Go 多版本管理工具
在平时开发中,本地新旧项目并行开发的过程中,你大概率会遇到一个令人头疼的问题,如何同时使用两个不同版本的 Golang Runtime 进行开发呢?
贾维斯Echo
2023/10/18
2.8K0
Go 多版本管理工具
几种Go版本管理工具
(如果出现GOROOT blabla之类的,执行go env -w GO111MODULE=off )
fliter
2023/09/06
4190
几种Go版本管理工具
“豪 横”版 channel_v3.json,你确定不需要?
豪横:下面为你附上channel_v3.json源码,别跑,快来研究研究。。。。。。
C you again 的博客
2020/09/15
7550
Go 依赖管理工具 Dep 的安装及配置
注意:Dep 作为 Go 语言项目的依赖管理工具,那么需要在本机安装好 Go 环境,这里忽略 Go 的安装过程,详细过程可参考 Go 官网 文档,这里着重介绍下 Dep 安装以及依赖管理配置操作。
哎_小羊
2019/05/25
4K0
Linux下使用Nginx搭建Rtmp流媒体服务器,实现视频直播功能
百度百科: 流媒体指以流方式在网络中传送音频、视频和多媒体文件的媒体形式。相对于下载后观看的网络播放形式而言,流媒体的典型特征是把连续的音频和视频信息压缩后放到网络服务器上,用户边下载边观看,而不必等待整个文件下载完毕。由于流媒体技术的优越性,该技术广泛应用于视频点播、视频会议、远程教育、远程医疗和在线直播系统中。作为新一代互联网应用的标志,流媒体技术在近几年得到了飞速的发展。
DS小龙哥
2022/01/12
5K0
Linux下使用Nginx搭建Rtmp流媒体服务器,实现视频直播功能
SSDB 状态详解(1)
SSDB 是一个高性能支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis
franket
2021/10/19
6880
Golang 多版本管理
如果你是一个 Golang 的用户,那么你大概率会遇到管理和维护 Golang 版本的诉求,如果你恰好同时需要开发调试两个不同版本的项目,在不考虑强制跳版本的情况下,你或许就需要使用“Golang 版本管理工具”来帮助你减轻负担了。
soulteary
2021/12/21
2.3K0
相关推荐
Go每日一库之160:gvm(Go版本管理)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验