Golang 多版本管理神器 gvm

article/2025/11/9 22:29:06

缘起

最近编译 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


http://chatgpt.dhexx.cn/article/jQVWRHa8.shtml

相关文章

CentOS 7 Docker安装GVM-11

关于如何用docker部署 GVM-11&#xff0c;先给出一个 shell 脚本&#xff0c;然后给出踩坑过程&#xff1a; #/bin/bash ################ README INFO ##################### ### Purpose: Deploy GVM-11 for docker ### ### Made By: PomanTeng …

Kali安装openVAS (GVM)

给Kali - 2021-3安装GVM的兄弟们2021/11/15出错的问题的解决办法 原文链接 ———————————————— 版权声明&#xff1a;本文为CSDN博主「林超男」的原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载请附上原文出处链接及本声明。 [原文链接&#xff…

CentOS 8安装 GVM20.08

Centos 8 安装GVM 20.08 参考链接1&#xff1a;https://sadsloth.net/post/install-gvm-20_08-src-on-debian/ 参考链接2&#xff1a;https://community.greenbone.net/t/full-gvm-11-build-guide-for-centos-8/5425 旧版的openvas安装成功之后无法下载漏洞库&#xff0c;官方…

GVM 内存结构 垃圾回收

Java堆(所有线程共享的一块内存区域) 1、在虚拟机启动时创建。存放对象实例。 2、GC堆&#xff0c;垃圾收集器管理的主要区域。 3、通过 -Xmx 和 -Xms 控制&#xff0c;无法再扩展时&#xff0c;将会抛出OutOfMemoryError异常。 内部分&#xff1a;新生代&#xff08;1/3 的…

kali2021安装GVM(openVAS)

openVAS从10版本后改名GVM&#xff0c;这里用的kali系统也是2020年的最新系统 安装之前将kali的源换成国内的源&#xff0c;像阿里源或中科大源。位置/etc/apt/sources.list。 命令&#xff1a; vim /etc/apt/sources.list#阿里云 deb http://mirrors.aliyun.com/kali kali…

GVM升级后启动异常处理

目录 1. Kali升级 2. 升级完成后&#xff0c;启动GVM&#xff08;OpenVas&#xff09;发现打不开&#xff1a; 3. 按照要求检测原因&#xff1a; 4. 查看PID文件 5. 重新检测安装 6. 执行兼容处理后&#xff0c;再次检测安装&#xff1a; 7. 查找安装路径&#xff0c;修…

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

文章目录 前言1、下载地址2、设置环境变量1&#xff09;设置镜像2&#xff09;设置g的工作目录3&#xff09;配置GOROOT 3、配置5、配置 go 全局变量4、使用 前言 gvm与g有什么区别? 同一个项目。只不过因为gitee要求仓库名字符数必须>2,因此将项目重命名为gvm。 1、下载…

golang版本管理gvm

今天小土带来一篇关于Go版本管理器gvm的小短文。废话不多说&#xff0c;开始安装。 安装 如果你使用的mac&#xff0c;mac 需要先安装xcode-select&#xff0c;没安装过的同学可以按照如下命令进行执行安装&#xff0c;这里不做太多说明了。 xcode-select --installbrew update…

QPS.TPS.PV.UV.IP.GVM常用名词解释

QPS 全名 Queries Per Second&#xff0c;意思是“每秒查询率”&#xff0c;是一台服务器每秒能够响应的查询次数&#xff0c;是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 简单的说&#xff0c;QPS req/sec 请求数/秒。它代表的是服务器的机器的性能最…

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

1、下载地址 https://github.com/voidint/g/releases2、设置环境变量 G_MIRROR 值为 https://golang.google.cn/dl/由于国内无法自由访问Golang官网&#xff0c;导致查询及下载go版本都变得困难&#xff0c;因此可以通过该环境变量指定一个镜像站点。 G_HOME 值为 E:\gvm设…

ShuffleNet 系列(2): ShuffleNet v2 理论讲解

ShuffleNet V2 概述 论文&#xff1a;ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design shuffleNet v2这篇论文比较硬核&#xff0c;提出了不少新的思想&#xff0c;推荐大家可以看看论文原文。主要思想包括&#xff1a; 模型的计算复杂度不能只…

ShuffleNet_v1论文阅读

ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices 2017年 原文地址&#xff1a;https://arxiv.org/pdf/1707.01083.pdf 声明&#xff1a;文章仅作知识整理、分享&#xff0c;如有侵权请联系作者删除博文&#xff0c;谢谢&#xff01; …

shufflenetv1详解

shufflenetv1 知识的搬运工又来了 论文地址&#xff1a;shufflenetv1论文地址 ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices。 shufflenet是一篇关于降低深度学习计算量的论文&#xff0c;其可以运行在手机等移动设备端&#xff0c;发…

ShuffleNet 系列(1): ShuffleNet v1 理论讲解

ShuffleNet V1 概述 论文&#xff1a;ShuffleNet:An Extremely Efficient Convolutional Netural Network for Mobile Devices ShuffleNet跟MobileNet一样也是一种轻量化网络&#xff0c;ShuffleNet V1.0版本中作者有提出Channel shuffle的概念。在ShuffleNet Block当中使用的…

ShuffleNet心得

channel shuffle&#xff1a; 1&#xff09;利用group &#xff0c;再组间进行深度卷积。 优点&#xff1a;1&#xff09;极大减小计算量&#xff08;FLOPS&#xff09; 由于每个filter不再是和输入的全部feature map做卷积&#xff0c;而是仅仅和一个group的feature map做卷…

ShuffleNet V2

原文链接&#xff1a; ShuffleNet V2 论文阅读笔记​blog.csdn.net 论文链接&#xff1a; Practical Guidelines for Efficient CNN Architecture Design​arxiv.org 我自己基于 caffe 框架的复现&#xff1a; anlongstory/ShuffleNet_V2-caffe​github.com 本文主要是对目…

【CV】ShuffleNet:通过 GroupConv 和 ChannelShuffle 实现轻量化 CNN 架构

论文名称&#xff1a;ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices 论文下载&#xff1a;https://arxiv.org/abs/1707.01083 论文年份&#xff1a;2017 论文被引&#xff1a;3925&#xff08;2022/05/11&#xff09; 论文代码&#xf…

shufflenet_v1

本文使用的是轻量级模型shufflenet&#xff0c;使用keras框架进行训练。 参考链接&#xff08;模型详解&#xff09;&#xff1a;https://blog.csdn.net/zjn295771349/article/details/89704086 代码如下&#xff1a; 1.data_process.py&#xff08;数据处理&#xff1a;这里…

ShuffleNet V1

论文&#xff1a;https://arxiv.org/abs/1707.01083 1 问题提出 当前的CNN发展趋势是网络越大&#xff0c;性能越好。但是&#xff0c;在计算能力有限的应用场景下(无人机、机器人及智能手机上)&#xff0c;因为内存和计算能力的限制&#xff0c;无法部署大规模的神经网络。虽…

ShuffleNet 算法的介绍

引言 ShuffleNet是旷视科技最近提出的一种计算高效的CNN模型&#xff0c;其和MobileNet和SqueezeNet等一样主要是想应用在移动端。所以&#xff0c;ShuffleNet的设计目标也是如何利用有限的计算资源来达到最好的模型精度&#xff0c;这需要很好地在速度和精度之间做平衡。Shuf…