当你想完成 Golang 开发环境的便捷安装以及随时更新和保障多个版本的 Golang 共存的时候,就需要使用到 Golang 的专门版本管理工具 ——gvm

  本篇随笔记录了在 Ubuntu 下安装使用 gvm 的过程

Gvm 的下载

  我们可以使用国内镜像下载包含安装脚本的仓库代码,然后直接执行安装脚本,来完成安装

  先使用 git clone 下载完整的软件仓库:

git clone https://gitcode.net/soulteary/gvm.git

  指定 SRC_REPO 参数为国内镜像地址,然后运行安装脚本:

SRC_REPO=https://gitcode.net/soulteary/gvm.git bash gvm/binscripts/gvm-installer

  当脚本运行完毕,我们将会看到上文中提到过的日志输出,此刻 gvm 就安装完毕啦。

  为了更方便的使用 gvm,我们还需要进行一些配置。

配置 gvm 加速 Golang 下载/切换

  gvm 支持使用两种方式来下载 “Golang”,然而不论是“下载源码编译安装”,还是下载适合当前操作系统的“预编译好的二进制文件”,我们都需要访问官方地址。

  为了避免下载过程中因为网络问题,出现下载慢,或者无法下载的情况,节约我们的时间,我们需要对 gvm 进行一些简单的配置。

  我们可以在当前使用的 “SHELL” 的 “rc” 文件中(比如.bashrc 或者 .zshrc),添加下面的内容,来在当前的环境中让 gvm 命令生效,同时,让我们能够使用更快的下载源来下载我们所需要的 “Golang”:

export GO_BINARY_BASE_URL=https://golang.google.cn/dl/
[[ -s "$HOME/.gvm/scripts/gvm" ]] && source "$HOME/.gvm/scripts/gvm"
export GOROOT_BOOTSTRAP=$GOROOT

  在“rc” 文件中添加了上述内容后,需要重启终端

export GO_BINARY_BASE_URL=https://golang.google.cn/dl/

  命令中的 GO_BINARY_BASE_URL 变量,定义了我们将从何处下载 Golang 的二进制文件或源码压缩包进行安装。当然,你也可以将其替换为下面的任意一个。

# 官方地址
https://go.dev/dl/
# 官方国内镜像地址
https://golang.google.cn/dl/
# 阿里云镜像
https://mirrors.aliyun.com/golang/
# 中科大镜像
http://mirrors.ustc.edu.cn/golang/
[[ -s "$HOME/.gvm/scripts/gvm" ]] && source "$HOME/.gvm/scripts/gvm"

  这条命令,是根据软件的实际安装情况来选择性加载 gvm。相比较前文中安装完毕 gvm 日志输出内容推荐我们直接使用 source 命令加载 gvm,这样可以更安全的执行命令,当且仅当 ~/.gvm 存在的时候才会加载程序,将 gvm 注册到你当前的 SHELL 环境中。

export GOROOT_BOOTSTRAP=$GOROOT

  最后一条命令,则是为了确保 Golang 使用源码编译安装时,不会出错(golang 1.14后需要 )

使用 gvm

  gvm 是一个特别简单的命令,我们日常使用中其实只需要记得两个命令就好,第一个是 gvm install,第二个是 gvm use

  假设我们想安装 Golang 最新版本 1.18.3,那么只需要执行下面的命令:

gvm install go1.18.3 -B

  如果你没有装 CURL 的话还需要自行安装

  在执行完毕命令之后,稍等片刻,当我们看到 Installing go1.18.3 from binary source 这条日志输出结果后,就意味着 Golang 已经被下载完毕了。如果你希望使用编译源码的方式安装 Golang 的话,可以去掉上面命令中的-B 参数:

gvm install go1.18.3

  虽然我们已经完成了 Golang 1.18.3 的安装,但是目前我们还不能直接使用它,需要再执行一条命令,将这个版本的 Golang “激活”:

gvm use go1.18.3 --default

  在执行完命令之后,我们能够立刻看到类似 Now using version go1.18.3 的日志输出结果,接下来我们就可以随意的使用 go 这个命令了。

  我们可以使用 go version 来验证刚刚下载的程序是否符合我们的诉求

安装过程参考https://zhuanlan.zhihu.com/p/537292132

以上

使用 GVM 搭建可维护的 Golang 开发环境的更多相关文章

  1. Golang环境搭建,Notepad++配置Golang开发环境,Golang发送邮件

    http://blog.csdn.net/u011012932/article/details/53102264 http://blog.csdn.net/u011012932/article/det ...

  2. Windows下visual studio code搭建golang开发环境

    Windows下visual studio code搭建golang开发环境 序幕 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org),导致一些包无法安装 ...

  3. Golang开发环境搭建-Vim篇

    一.一个干净的环境 找个干净的基础环境,方便确认每个搭建步骤后的效果: Ubuntu 14.04 x86_64 vim version 7.4.52 go version go1.4beta1 lin ...

  4. 用grunt搭建自动化的web前端开发环境实战教程(详细步骤)

    用grunt搭建自动化的web前端开发环境实战教程(详细步骤) jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用!前端自动化, ...

  5. linux golang开发环境配置(离线方式)

    <获取开发工具>     到https://www.golangtc.com/download 下载安装包, 根据自己的系统选择合适的开发包,这里选择go.1.9.2.linux-amd6 ...

  6. window / Linux 下 Golang 开发环境的配置

    一直专注于使用python语言进行程序开发,但是却又一直被它的性能问题所困扰,直到遇到了天生支持高并发的Golang,这似乎也成了学习go语言最理所当然的理由.下面介绍下Go语言开发环境搭建的步骤: ...

  7. 使用grunt搭建自动化的web前端开发环境

    使用grunt搭建自动化的web前端开发环境 我们一定经常听过grunt和gulp,它们都是用于搭建自动化的web前端开发环境的,这里主要介绍grunt的使用,值得一提的是,jQuery.bootst ...

  8. 一.1搭建跨平台的统一python开发环境

    搭建跨平台的统一python开发环境: 使用开发环境的好处: 可不用在服务器上直接修改源代码---写的代码首先得入版本库(放git或giitlab中),在本地写代码提交到git中.然后在服务器上git ...

  9. 利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境

    前后端分离这个词一点都不新鲜,完全的前后端分离在岗位协作方面,前端不写任何后台,后台不写任何页面,双方通过接口传递数据完成软件的各个功能实现.此种情况下,前后端的项目都独立开发和独立部署,在开发期间有 ...

  10. 【前端福利】用grunt搭建自动化的web前端开发环境-完整教程

    jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发人员,如果你现在还不知道grunt或者听说过 ...

随机推荐

  1. python读取Excel文件的操作

    ①通过xlutils在已有表中写数据(这种方法会改变excel的样式) import xlrd,xlwt from xlutils.copy import copy 将已存在的Excel表格赋值给变量 ...

  2. react-signature-canvas 签名功能

    基于移动端需要扫码签名的功能,这里记录一下. 1.使用 react-signature-canvas 插件,npm i react-signature-canvas --save 2.此功能签名后生成 ...

  3. springboot默认的json配置

    springboot默认的json配置 1.@JsonIgnore 返回前端时对应字段不进行序列化返回 public class User { @JsonIgnore private String n ...

  4. mysql锁表原因及解决方法

    mysql锁表原因及解决方法   一.导致锁表的原因 1.锁表发生在insert update .delete 中: 2.锁表的原理是 数据库使用独占式封锁机制,当执行上面的语句时,对表进行锁住,直到 ...

  5. Spring Cloud学习记录

    Eureka和zookeeper都是注册中心为什么zookeeper不适合? 1.CAP原则.一致性,可用性,分区容错性,最多满足两种.zookeeper遵循CP原则,实际项目中不应该为了一致性失去可 ...

  6. python3GUI--实用!B站视频下载工具(附源码)

    目录 一.准备工作 二.预览 1.启动 2.解析 3.下载中 4.下载完成 5.结果 三.设计流程 1.bilibili_video_spider 2.视频json的查找 四.源代码 1.Bilibi ...

  7. js中的占位函数

    String.prototype.signMix= function() { if(arguments.length === 0) return this; var param = arguments ...

  8. LoadRunner性能测试-app压力测试

    步骤分为三步: 一,录制脚本 录制脚本原理:启动LR代理服务器监听设置好的端口号是否有请求发送给服务器,有请求时,代理服务器接收请求,并转发给对应的系统服务器,LR从而获取到请求的信息与数据,生成脚本 ...

  9. 自动备份一个TXT文件里面的SVN库

    之前的项目都是使用SVN进行代码管理,万一SVN挂了,,,项目全部爆炸,,,所以定时备份还是有必要的,,,虽然现在都不用SVN了,,,记录一下自己的备份方法 --------------------- ...

  10. WPF dxe:ComboBoxEdit 选择项后并可编辑值

    有个需要,在ComboBoxEdit中选择多个值,并且要求可以直接在后面添加新的值. 开始的时候绑定列表,设置DisplayMember,不能修改. 然后绑定List<string>,不设 ...