Go 多版本管理工具

Go 多版本管理工具

文章目录

  • [Go 多版本管理工具](#Go 多版本管理工具)

在平时开发中,本地新旧项目并行开发的过程中,你大概率会遇到一个令人头疼的问题,如何同时使用两个不同版本的 Golang Runtime 进行开发呢?

一、go get 命令

这种方法有一个前提,那就是当前系统中已经通过标准方法安装过某个版本的 Go 了。

1.1 使用方法:

在项目中初始化 Go Modules:

bash 复制代码
go mod init <module-name>

go 版本安装/版本切换,安装不同版本的 Go:

bash 复制代码
go get golang.org/dl/go<x.y>
go<x.y> download
go<x.y> version

切换全局 Go 版本:

go 复制代码
go<x.y> use

二、Goenv

官网:https://github.com/go-nv/goenv

Goenv 是另一个 Go 多版本管理工具,它的工作原理与其他语言的版本管理工具(如 Ruby 的 RVM 和 Python 的 pyenv)类似。以下是使用 Goenv 的基本步骤:

安装 Goenv(你需要先安装 Git):

bash 复制代码
git clone https://github.com/syndbg/goenv.git ~/.goenv

将 Goenv 添加到你的 shell 配置文件(例如 ~/.bashrc~/.zshrc)中:

bash 复制代码
echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.bashrc
echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(goenv init -)"' >> ~/.bashrc

安装你需要的 Go 版本:

bash 复制代码
goenv install go1.x.x

使用特定版本的 Go:

bash 复制代码
goenv global go1.x.x

三、GVM (Go Version Manager)

官网:https://github.com/moovweb/gvm

GVM 是一个流行的 Go 多版本管理工具,它允许你在同一台机器上安装和切换不同版本的 Go。以下是使用 GVM 的基本步骤:

安装 GVM:

go 复制代码
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

安装你需要的 Go 版本:

bash 复制代码
gvm install go1.x.x

使用特定版本的 Go:

bash 复制代码
gvm use go1.x.x

四、voidint/g

4.1 安装

g是一个 Linux、macOS、Windows 下的命令行工具,可以提供一个便捷的多版本 go 环境的管理和切换。 以下是使用g的基本步骤:

  • Linux/macOS(适用于 bash、zsh)

    bash 复制代码
    # 建议安装前清空`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)

    bash 复制代码
    iwr https://raw.githubusercontent.com/voidint/g/master/install.ps1 -useb | iex

4.2 冲突

这里如果你是 oh-my-zsh 的用户,那么你还需要做一件事,就是解决全局的 g 命令的冲突,解决的方式有两种,第一种是在你的 .zshrc 文件末尾添加 unalias

javascript 复制代码
echo "unalias g" >> ~/.zshrc # 可选。若其他程序(如'git')使用了'g'作为别名。
# 记得重启 shell ,或者重新 source 配置

第二种,则是调整 ~/.oh-my-zsh/plugins/git/git.plugin.zsh 中关于 g 的注册,将其注释或删除掉:

javascript 复制代码
# alias g='git'

我的 .zshrc 中的完整配置:

javascript 复制代码
# 我的 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 版本

bash 复制代码
$ g ls-remote stable
  1.19.10
  1.20.5

安装目标 go 版本1.20.5

bash 复制代码
$ 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 版本

bash 复制代码
$ g ls
  1.19.10
* 1.20.5

查询可供安装的所有 go 版本

bash 复制代码
$ 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 版本

bash 复制代码
$ g use 1.19.10
go version go1.19.10 darwin/arm64

卸载一个已安装的 go 版本

bash 复制代码
$ g uninstall 1.19.10
Uninstalled go1.19.10

清空 go 安装包文件缓存

bash 复制代码
$ 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 版本信息

bash 复制代码
g version 1.5.0
build: 2023-01-01T21:01:52+08:00
branch: master
commit: cec84a3f4f927adb05018731a6f60063fd2fa216

更新 g 软件本身

bash 复制代码
$ g self update
You are up to date! g v1.5.0 is the latest version.

卸载 g 软件本身

bash 复制代码
$ 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 版本。

相关推荐
浅尝辄止;4 分钟前
C# 优雅实现 HttpClient 封装(可直接复用的工具类)
开发语言·c#
林太白4 分钟前
Rust01-认识安装
开发语言·后端·rust
龙山云仓8 分钟前
No095:沈括&AI:智能的科学研究与系统思维
开发语言·人工智能·python·机器学习·重构
IoT智慧学堂9 分钟前
C语言循环结构综合应用篇(详细案例讲解)
c语言·开发语言
AuroraWanderll9 分钟前
类和对象(三)-默认成员函数详解与运算符重载
c语言·开发语言·数据结构·c++·算法
青云交11 分钟前
Java 大视界 -- Java+Spark 构建企业级用户画像平台:从数据采集到标签输出全流程(437)
java·开发语言·spark·hbase 优化·企业级用户画像·标签计算·高并发查询
航Hang*12 分钟前
第3章:复习篇——第1节:创建和管理数据库
开发语言·数据库·笔记·sql·sqlserver
云栖梦泽12 分钟前
鸿蒙原子化服务开发实战:构建免安装的轻量应用
开发语言·鸿蒙系统
YY&DS13 分钟前
《Qt 手写 HTTP 登录服务实战》
开发语言·qt·http
阿华hhh13 分钟前
数据结构(树)
linux·c语言·开发语言·数据结构