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 多版本管理工具的更多相关文章

  1. linux系统下使用流行的版本管理工具 Git

    前几天被版本管理困扰了好久,主要是因为 没法回到之前的版本,新版本又出了问题真的很尴尬. 终于决定使用目前网上很火的版本管理工具-------Git 历史啥的就不说了,说些有用的. 我用的是oschi ...

  2. GIT版本管理工具

    原文:http://blog.csdn.net/ithomer/article/details/7527877 Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介 ...

  3. Studio之版本管理工具Git (图文教程)

    目前业界主流的版本管理工具主要是 svn/git.svn是1种集中式的代码管理工具,而git是1种散布式的代码管理工具,广受极客的爱好.而基于git的github更是全宇宙码农的提高逼格,深究技术的必 ...

  4. 版本管理工具介绍—Git篇

    前篇 如题,提起版本管理工具相信做C#开发 还是对Git比较陌生  我们可能更熟悉vss.svn 记录此文的目的 更是为以后的前段学习做基础  现在的技术比如nodeJs  angularJs ==都 ...

  5. nodejs版本管理工具NVM(Node Version Mene)

    最近打算用心学习nodejs,所以在学习中了解到NVM-nodejs的版本管理工具,下面我就记录下我学习并且安装的详细过程,请大神们放过~~第一步.你要先把你本机上安装的nodejs以及npm相关的东 ...

  6. 可视化Git版本管理工具SourceTree的使用

    最近去了新公司,发现公司使用的团队版本管理工具是SourceTree,本人一直是SVN的热衷粉,很少使用git,所以从头学习git及可视化客户端SourceTree的使用,本贴只针对新手,大牛可以无视 ...

  7. 版本管理工具Git(1)带你认识git

    简介 本篇将带领大家认识,git.github,让大家对git有基本的认识:下面将持续更新几篇文章来介绍git,见git导航: 下一篇中将讲解git的安装及使用: Git系列导航 版本管理工具Git( ...

  8. 版本管理工具Git(2)git的安装及使用

    下载安装git 官方下载地址:https://git-scm.com/download/win 这里以windows为例,选择正确的版本: 验证是否安装成功,右键菜单中会出现如下菜单: Git工作流程 ...

  9. 谈谈分布式版本管理工具Git

    一.主流的版本管理工具 目前在企业中比较主流的版本管理工具有:GIT.SVN.CVS等等. 二.什么是Git? Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.是 L ...

  10. GitLab版本管理工具

    第1章 GitLab管理 1.1 版本控制系统 版本控制系统(version control system)是记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.版本控制系统不仅可以应用于 ...

随机推荐

  1. NSDI-2023 微软论文:解构有状态网络功能

    本文通过chatgpt代理站(支持gpt4):gptschools.cn翻译整理 微软Azure对每个虚拟机进行了为期三个月的网络监控,获得了新建.并发.PPS等指标情况,发现: 1) 网络功能负载不 ...

  2. 【HarmonyOS】如何获取公共目录的图片等文件(API7 FA模型JS语言)

    ​ [关键字] API7.JS.公共目录.@ohos.multimedia.mediaLibrary [前言] 在使用API7 JS开发HarmonyOS应用时,需要获取非应用目录即内部存储公共目录下 ...

  3. 关于Abp Vnext 权限授权的问题

    一.问题 最近收到一位朋友的求助,说他项目上的权限授权出现了问题,现象是在基础服务授权角色:RC 权限:X.Default,在基础服务使用RC角色的用户登录能访问到权限X.Default资源,而在X服 ...

  4. Grafana系列-GaC-1-Grafana即代码的几种实现方式

    系列文章 Grafana 系列文章 Terraform 系列文章 概述 GaC(Grafana as Code, Grafana 即代码) 很明显是扩展自 IaC(Infrastructure as ...

  5. GPT生成式预训练Transformer架构应用实战

    目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 2.3 相关技术比较 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成 ...

  6. [solved] login to server failed: EOF

    问题 frp 报错:login to server failed: EOF 解决方案 客户端配置 common 下 添加 tls_enable = true [common] tls_enable = ...

  7. kaggle中训练得到的output太大该怎么下载?

    最近在使用Kaggle平台训练自己的模型,但是训练结束之后由于模型过大导致output那里一直在加载(转圈),即使加载出来点击download也没有反应 下面借鉴知乎大佬的方法可以完美解决!通过将其压 ...

  8. 离线自动化部署CDH

    离线CDH集群自动化部署工具 离线CDH集群安装与部署的自动化脚本工具,简单支持「离线一键装机」. 脚本将对系统配置做出一定修改,使用前请务必确认当前服务器无其他人员.任务使用,以免造成不必要的麻烦, ...

  9. zabbix 中 net.if.out 值来源及persecond的计算

    使用脚本记录每秒的net.if.out值,与zabbix中的lastdata值做对比,发现对不上. #!/bin/bash dev=eth0 get_dev_net_speed() { dev_inf ...

  10. git关于分支的常用命令

    上家公司实习,一个人干一个项目,没有用git管理代码,导致我以前学的命令都忘了 git checkout -b xxx 创建xxx分支 并切换到xxx分支 等价于 git branch xxx git ...