当你想完成 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. Redis集群(主从复制)

    主从复制主从复制原理 Redis集群中有很多Redis服务器,这些Reids服务器分为主服务器和从服务器. 从服务器会向主服务器发送命令:SYNC命令. 主服务器接收到SYNC命令后,开始执行GBSA ...

  2. 2020-2021第一学期2024"DCDD"小组第十一周讨论

    2020-2021第一学期"DCDD"第十一周讨论 小组名称:DCDD 小组成员:20202403孟凡斌.20202411陈书桓.20202416刘铭睿.20202420黄椿淇 照 ...

  3. ZSTUOJ刷题⑩:Problem B.--零起点学算法103——查找最大元素

    Problem B: 零起点学算法103--查找最大元素 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 9951  Solved: 4793 Descri ...

  4. Flink 中 DataStream 和 DataSet区别

    DataSet与DataStream的区别.使用 DataSet同DataStream从其接口封装.真实计算Operator有很大的差别,Dataset的实现在flink-javamodule中,而D ...

  5. c++ vtdcm对于压缩模式文档图片的读取

    //获取dcm数据结构,一下图像数据仅针对单通道8字节数据 DcmFileFormat fileformat; OFCondition oc = fileformat.loadFile(dcmPath ...

  6. 【jmeter】请求域名解析失败,添加本地代理

    jmeter HTTP请求URL中使用域名 http://xxx.xxx.xxx,异常:java.net.UnkownHostException 原因:请求域名没有被解析成功,该http请求没有通过本 ...

  7. test image size

    676KB - jpg 2.5M jpg 3.8M-jpg 4M

  8. https://计算机二级

    计算机二级; 计算机二级包括二级C,二级C++,二级VB,二级VFP,二级Access,二级Java,二级office.其需要学习的内容如下: 1.二级C:DOS命令,计算机组成原理,多媒体.数据库操 ...

  9. 图像处理|Matlab

    图像处理 | Matlab 参考博文: 图像处理-平滑滤波 图像去噪-加性噪声(高斯/椒盐)

  10. 前端上传获取excel文件后,如何读取excel文件的内容

    1.安装xlsx npm install xlsx --save-dev 2.引入xlsx并封装读取excel方法 import * as XLSX from "xlsx"; /* ...