GVM:Go语言版本和包管理的神器!

简介: GVM,Go版本管理器,简化了在单机上切换不同Go版本的任务。

在 Go 开发中,不同的项目可能需要不同的 Go 版本。这时候,GVM(Go Version Manager)就像是一个救星,它允许您在同一台机器上轻松切换不同版本的 Go。以下是如何安装和使用 GVM 来管理您的 Go 版本。

为什么需要 GVM?

在进入使用之前,让我们先聊聊为什么需要GVM。

想象一下,你同时在开发两个项目:一个需要Go1.16版本,而另一个项目必须使用Go1.21版本因为它使用了Go最新的特性。这时候,如果没有GVM,你就得不停地手动安装和卸载不同版本的Go,这不仅麻烦,而且很容易出错。GVM的出现就是为了解决这类问题。

安装 GVM

安装 GVM 是一个相当简单的过程,你只需要执行下面的命令即可:

# 通过curl安装GVM
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

或者,你也可以选择下载脚本然后执行,这两种方式哪种方便就用哪种:

# 下载脚本方式安装GVM
curl -o gvm-installer https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer 
chmod +x gvm-installer
./gvm-installer

查看和安装 Go 版本

一旦GVM安装成功,你可以很容易地查看所有可用的Go版本:

gvm listall

然后,你可以选择安装一个指定的Go版本,比如Go1.16.5:

# 安装Go1.16.5版本
gvm install go1.16.5

切换 Go 版本

安装好特定版本的Go后,你可以通过以下命令切换正在使用的Go版本:

# 使用Go1.16.5版本
gvm use go1.16.5
# 将Go1.16.5设置为默认版本
gvm use go1.16.5 --default

卸载 Go 版本

如果你不再需要特定版本的Go,GVM也提供了卸载的选项:

# 卸载Go1.16.5版本
gvm uninstall go1.16.5

完全卸载 GVM

如果你想要完全卸载掉GVM,包括它安装的所有Go版本,可以通过以下命令:

gvm implode

这将删除GVM和所有相关的Go版本。如果gvm implode出现问题,你也可以手动删除GVM根目录:

rm -rf $GVM_ROOT

然后,记得从你的~/.bashrc~/.zshrc 文件中删除相关的GVM脚本行。

使用 GVM pkgset 管理项目依赖

GVM的另一个强大功能是它能让你为每个项目创建隔离的环境(称为pkgset),这样你就可以为每个项目维护不同版本的依赖包而互不干扰。

首先,使用一个特定的版本:

gvm use go1.21.0

创建一个新的pkgset:

# 创建名为 `ppGvm` 的 pkgset
gvm pkgset create ppGvm

在创建后,你可以通过以下命令切换到使用该pkgset:

gvm pkgset use ppGvm

此时,你就可以在这个隔离的环境下安装或者更新项目所需的依赖包了。


GVM不但帮你解决了版本冲突的问题,而且通过pkgset功能,还能帮你为每个项目创建独立的工作环境。

无论你是Go的初学者,还是经验丰富的开发者,GVM都是你管理Go版本的好帮手。

相关文章
|
10月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
454 2
|
Cloud Native 安全 Java
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
695 1
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
681 0
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
504 0
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
531 0
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
1121 0
|
数据采集 Go API
Go语言实战案例:多协程并发下载网页内容
本文是《Go语言100个实战案例 · 网络与并发篇》第6篇,讲解如何使用 Goroutine 和 Channel 实现多协程并发抓取网页内容,提升网络请求效率。通过实战掌握高并发编程技巧,构建爬虫、内容聚合器等工具,涵盖 WaitGroup、超时控制、错误处理等核心知识点。
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
JSON 前端开发 Go
Go语言实战:创建一个简单的 HTTP 服务器
本篇是《Go语言101实战》系列之一,讲解如何使用Go构建基础HTTP服务器。涵盖Go语言并发优势、HTTP服务搭建、路由处理、日志记录及测试方法,助你掌握高性能Web服务开发核心技能。
|
Go
如何在Go语言的HTTP请求中设置使用代理服务器
当使用特定的代理时,在某些情况下可能需要认证信息,认证信息可以在代理URL中提供,格式通常是:
762 0

热门文章

最新文章