Go 多版本管理工具
Go 多版本管理工具
在平时开发中,本地新旧项目并行开发的过程中,你大概率会遇到一个令人头疼的问题,如何同时使用两个不同版本的 Golang Runtime 进行开发呢?
一、go get 命令
这种方法有一个前提,那就是当前系统中已经通过标准方法安装过某个版本的 Go 了。
1.1 使用方法:
在项目中初始化 Go Modules:
go mod init <module-name>
go 版本安装/版本切换,安装不同版本的 Go:
go get golang.org/dl/go<x.y>
go<x.y> download
go<x.y> version

切换全局 Go 版本:
go<x.y> use
二、Goenv
官网:https://github.com/go-nv/goenv
Goenv 是另一个 Go 多版本管理工具,它的工作原理与其他语言的版本管理工具(如 Ruby 的 RVM 和 Python 的 pyenv)类似。以下是使用 Goenv 的基本步骤:
安装 Goenv(你需要先安装 Git):
git clone https://github.com/syndbg/goenv.git ~/.goenv
将 Goenv 添加到你的 shell 配置文件(例如 ~/.bashrc 或 ~/.zshrc)中:
echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.bashrc
echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(goenv init -)"' >> ~/.bashrc
安装你需要的 Go 版本:
goenv install go1.x.x
使用特定版本的 Go:
goenv global go1.x.x
三、GVM (Go Version Manager)
官网:https://github.com/moovweb/gvm
GVM 是一个流行的 Go 多版本管理工具,它允许你在同一台机器上安装和切换不同版本的 Go。以下是使用 GVM 的基本步骤:
安装 GVM:
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
安装你需要的 Go 版本:
gvm install go1.x.x
使用特定版本的 Go:
gvm use go1.x.x
四、voidint/g
4.1 安装
g是一个 Linux、macOS、Windows 下的命令行工具,可以提供一个便捷的多版本 go 环境的管理和切换。 以下是使用g的基本步骤:
Linux/macOS(适用于 bash、zsh)
# 建议安装前清空`GOROOT`、`GOBIN`等环境变量
curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash
echo "unalias g" >> ~/.bashrc # 可选。若其他程序(如'git')使用了'g'作为别名。
source "$HOME/.g/env"
Windows(适用于 pwsh)
iwr https://raw.githubusercontent.com/voidint/g/master/install.ps1 -useb | iex
4.2 冲突
这里如果你是 oh-my-zsh 的用户,那么你还需要做一件事,就是解决全局的 g 命令的冲突,解决的方式有两种,第一种是在你的 .zshrc 文件末尾添加 unalias :
echo "unalias g" >> ~/.zshrc # 可选。若其他程序(如'git')使用了'g'作为别名。
# 记得重启 shell ,或者重新 source 配置
第二种,则是调整 ~/.oh-my-zsh/plugins/git/git.plugin.zsh 中关于 g 的注册,将其注释或删除掉:
# alias g='git'
我的 .zshrc 中的完整配置:
# 我的 g 的bin目录调整到了 .gvm ,所以你可能需要一些额外的调整
export PATH="${HOME}/.gvm/bin:$PATH"
export GOROOT="${HOME}/.g/go"
export PATH="${HOME}/.g/go/bin:$PATH"
export G_MIRROR=https://gomirrors.org/
4.3 使用
查询当前可供安装的stable状态的 go 版本
$ g ls-remote stable
1.19.10
1.20.5
安装目标 go 版本1.20.5
$ g install 1.14.7
Downloading 100% [===============] (92/92 MB, 12 MB/s)
Computing checksum with SHA256
Checksums matched
Now using go1.20.5
查询已安装的 go 版本
$ g ls
1.19.10
* 1.20.5
查询可供安装的所有 go 版本
$ g ls-remote
1
1.2.2
1.3
1.3.1
... // 省略若干版本
1.19.10
1.20rc1
1.20rc2
1.20rc3
1.20
1.20.1
1.20.2
1.20.3
1.20.4
* 1.20.5
切换到另一个已安装的 go 版本
$ g use 1.19.10
go version go1.19.10 darwin/arm64
卸载一个已安装的 go 版本
$ g uninstall 1.19.10
Uninstalled go1.19.10
清空 go 安装包文件缓存
$ g clean
Remove go1.18.10.darwin-arm64.tar.gz
Remove go1.19.10.darwin-arm64.tar.gz
Remove go1.20.5.darwin-arm64.tar.gz
查看 g 版本信息
g version 1.5.0
build: 2023-01-01T21:01:52+08:00
branch: master
commit: cec84a3f4f927adb05018731a6f60063fd2fa216
更新 g 软件本身
$ g self update
You are up to date! g v1.5.0 is the latest version.
卸载 g 软件本身
$ g self uninstall
Are you sure you want to uninstall g? (Y/n)
y
Remove /Users/voidint/.g/bin/g
Remove /Users/voidint/.g
总之,选择其中一个工具并根据你的需求进行设置。这些工具都可以有效地管理不同版本的 Go Runtime,使你能够轻松地在不同项目中切换和使用不同的 Go 版本。
Go 多版本管理工具的更多相关文章
- linux系统下使用流行的版本管理工具 Git
前几天被版本管理困扰了好久,主要是因为 没法回到之前的版本,新版本又出了问题真的很尴尬. 终于决定使用目前网上很火的版本管理工具-------Git 历史啥的就不说了,说些有用的. 我用的是oschi ...
- GIT版本管理工具
原文:http://blog.csdn.net/ithomer/article/details/7527877 Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介 ...
- Studio之版本管理工具Git (图文教程)
目前业界主流的版本管理工具主要是 svn/git.svn是1种集中式的代码管理工具,而git是1种散布式的代码管理工具,广受极客的爱好.而基于git的github更是全宇宙码农的提高逼格,深究技术的必 ...
- 版本管理工具介绍—Git篇
前篇 如题,提起版本管理工具相信做C#开发 还是对Git比较陌生 我们可能更熟悉vss.svn 记录此文的目的 更是为以后的前段学习做基础 现在的技术比如nodeJs angularJs ==都 ...
- nodejs版本管理工具NVM(Node Version Mene)
最近打算用心学习nodejs,所以在学习中了解到NVM-nodejs的版本管理工具,下面我就记录下我学习并且安装的详细过程,请大神们放过~~第一步.你要先把你本机上安装的nodejs以及npm相关的东 ...
- 可视化Git版本管理工具SourceTree的使用
最近去了新公司,发现公司使用的团队版本管理工具是SourceTree,本人一直是SVN的热衷粉,很少使用git,所以从头学习git及可视化客户端SourceTree的使用,本贴只针对新手,大牛可以无视 ...
- 版本管理工具Git(1)带你认识git
简介 本篇将带领大家认识,git.github,让大家对git有基本的认识:下面将持续更新几篇文章来介绍git,见git导航: 下一篇中将讲解git的安装及使用: Git系列导航 版本管理工具Git( ...
- 版本管理工具Git(2)git的安装及使用
下载安装git 官方下载地址:https://git-scm.com/download/win 这里以windows为例,选择正确的版本: 验证是否安装成功,右键菜单中会出现如下菜单: Git工作流程 ...
- 谈谈分布式版本管理工具Git
一.主流的版本管理工具 目前在企业中比较主流的版本管理工具有:GIT.SVN.CVS等等. 二.什么是Git? Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.是 L ...
- GitLab版本管理工具
第1章 GitLab管理 1.1 版本控制系统 版本控制系统(version control system)是记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.版本控制系统不仅可以应用于 ...
随机推荐
- ChatGPT:免费在线聊天网页版,探索智能人机交互的便捷新方式!
当今,机器智能相当流行.而在线人工智能聊天系统的兴起大大改变了我们与计算机互动的方式.本文将介绍一款名为 ChatGPT 的在线免费智能聊天网页版,让你体验智能对话的便利性. ChatGPT 是一种基 ...
- 14. SpringMVC执行流程
14.1.SpringMVC 常用组件 DispatcherServlet:前端控制器,不需要工程师开发,由框架提供 作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求 Ha ...
- Java输入三个班每班三个人,输入成绩,分别计算每个班级的总分和平均分
代码如下: public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int score; ...
- String解析及其方法
String解析及其方法 1.前言 2.什么是字符串(String) 3.字符串(String)的两种创建方式及其区别 4.字符串(String)的方法及其部分原码解析 5.字符串(String)的弊 ...
- PostgreSQL 新手入门指引
自从MySQL被Oracle收购以后,PostgreSQL 逐渐成为开源关系型数据库的首选. 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手.以下内容基于Debian操作系统,其他操作 ...
- 最简单的人脸检测(免费调用百度AI开放平台接口)
远程调用百度AI开放平台的web服务,快速完成人脸识别 欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos ...
- 如何开发 RESTful、GraphQL 和 SOAP 等不同类型的 API ?
在软件开发中,API(应用程序编程接口)的重要性不言而喻.API已成为不可或缺的构建模块,使开发人员能够创建功能丰富.多样化和可扩展的应用程序.这是一篇综合指南,旨在深入探讨API开发,使初学者和有经 ...
- 一文了解io.ReadAtLeast函数
1. 引言 io.ReadAtLeast 函数是Go标准库提供的一个非常好用的函数,能够指定从数据源最少读取到的字节数.本文我们将从io.ReadAtLeast 函数的基本定义出发,讲述其基本使用和实 ...
- SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX
原文地址 写在前面 最近开发过程中,在where条件中使用IF函数,在MySQL数据库中,使用Navicat运行没有问题,但是运行项目的时候,死活过不去,一直报错,后来一番折腾找到了解决方案,所以,以 ...
- 硬盘分区标准:GPT与MBR
硬盘分区表的格式选择有二: 说明 格式化命令 MBR 主引导记录,分区表数据存储在硬盘的第一个扇区 fdisk <盘符> GPT GUID分区表,分别占用了硬盘第1个.第2个和后面连续的3 ...