当前位置: 首页 > news >正文

Mac 使用 GVM 管理多版本 Go 环境

使用 GVM 管理多版本 Go 环境

在本文中,我们将使用 gvm(Go Version Manager)工具管理本地多个 Go 语言版本。gvm 功能类似于 Python 的 Anaconda,可以方便地切换不同版本的 Go 环境,非常适合需要多版本开发与测试的场景。

需要注意的是,gvm 在第一次安装 Go 时,需要终端环境中已经存在一个可用的 Go 语言版本,因为 gvm 需要依赖现有的 Go 环境来编译安装新的版本。为了满足这一需求,我们可以使用 macOS 的 Homebrew 先安装一个临时的 Go 版本,待 gvm 安装完成后,再将 Homebrew 安装的 Go 删除。


1. 使用 Homebrew 安装 Go

首先,我们需要通过 Homebrew 安装一个基础版本的 Go:

# 安装 Go
brew install go# 验证安装是否成功
go version
which go

运行以上命令后,你应该可以看到当前安装的 Go 版本号以及 Go 可执行文件的路径。


2. 安装 GVM

接下来,我们安装 gvm 工具。gvm 会被安装到用户的主目录下(~/.gvm):
如果是 Ubuntu/Debian 系统中,运行以下命令安装所需依赖:

sudo apt-get update
sudo apt-get install curl git mercurial make binutils bison gcc build-essential

安装:

# 安装 gvm
bash < <(curl -sSL https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)# 安装完成后,加载 gvm
source ~/.gvm/scripts/gvm

运行上述命令后,gvm 应该已经成功安装,可以通过以下命令验证:

gvm version

3. 使用 GVM 安装 Go

现在我们可以使用 gvm 安装和管理多个 Go 版本。

查看可用的 Go 版本

gvm listall

gvm 会列出所有可用的 Go 版本,你可以选择其中一个版本进行安装。

安装特定版本的 Go

gvm install go1.20

安装完成后,你可以通过以下命令查看已安装的版本:

gvm list

删除 Homebrew 安装的 Go

由于 gvm 已经安装了 Go,现在可以删除通过 Homebrew 安装的临时 Go:

brew uninstall go

切换到某个版本的 Go

gvm use go1.20 --default

这会将 Go 的默认版本设置为 go1.20,后续每次打开终端时都会自动使用该版本。

验证安装

go version
which go

运行以上命令,确保 go 的版本和路径都指向 gvm 管理的版本。


4. 安装其他版本的 Go

如果需要安装其他版本的 Go,例如 go1.23.5,可以运行以下命令:

gvm install go1.23.5

安装完成后,你可以随时通过 gvm use 切换版本,或者使用 gvm use go1.23.5 --default 将其设置为默认版本。


5. 在 VS Code 中使用 Go

在开发过程中,如果使用 VS Code 作为 Go 语言的 IDE。为了支持 Go 的开发,你需要安装官方的 Go 插件:

  1. 打开 VS Code 的扩展市场(Extensions)。
  2. 搜索并安装 Go 插件。
  3. 插件安装完成后,VS Code 会自动检测你的 Go 环境。

如果 VS Code 没有正确识别你通过 gvm 安装的 Go 版本,可以参考以下步骤手动配置:

  • 打开 VS Code 设置(Cmd + ,Ctrl + ,)。
  • 搜索 Go: GOROOT,并将其设置为 gvm 中的 Go 路径,例如:
    ~/.gvm/gos/go1.20
    

在 VS Code 中调试环境变量

在 VS Code 的集成终端中,运行以下命令,确保它能够正确识别 gvm 管理的 Go 版本:

go version
go env

如果 VS Code 的终端与外部终端行为不一致(例如无法正确识别 GOROOT),可以在 VS Code 的设置中配置终端环境变量。

vscode go 自动运行插件 code runner(能够像python一样点击右上角运行)
参考:vscode go 自动运行插件 code runner


6. 环境变量及相关命令

在 Go 开发中,环境变量(如 GOPATHGOROOT 等)非常重要,以下是一些常用的环境变量管理和调试命令:

linux查看所有的环境变量

# 打印所有的环境变量
printenv
# 过滤
printenv | grep GOPATH

查看当前 Go 环境变量

运行以下命令查看当前 Go 环境的所有配置:

go env

你会看到类似的输出:

GO111MODULE="on"
GOPATH="/Users/yourname/go"
GOROOT="/Users/yourname/.gvm/gos/go1.20"

查看特定环境变量

如果只想查看某个环境变量的值,可以运行:

go env GOROOT
go env GOPATH

设置 GOPATH

如果需要自定义 GOPATH,可以在 shell 配置文件(如 ~/.bashrc~/.zshrc)中添加以下内容:

export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$PATH

然后运行以下命令使配置生效:

source ~/.bashrc    # 如果使用 bash
source ~/.zshrc     # 如果使用 zsh

检查 Go 的可执行文件路径

which go

这个命令会返回当前终端中使用的 go 的可执行文件路径(例如 ~/.gvm/gos/go1.20/bin/go)。如果路径不正确,可以检查是否存在多个 Go 版本冲突。


相关文章:

Mac 使用 GVM 管理多版本 Go 环境

使用 GVM 管理多版本 Go 环境 在本文中&#xff0c;我们将使用 gvm&#xff08;Go Version Manager&#xff09;工具管理本地多个 Go 语言版本。gvm 功能类似于 Python 的 Anaconda&#xff0c;可以方便地切换不同版本的 Go 环境&#xff0c;非常适合需要多版本开发与测试的场…...

25届合肥工业大学自动化考研复试攻略

本文内容&#xff0c;全部选自联盟自动化考研联盟企业店的&#xff1a;《合肥工业大学控制综合笔试篇》。后续会持续更新更多内容&#xff0c;记得关注哦~ 目录 Part1&#xff1a;复试指南具体内容 Part2&#xff1a;复试复习相关介绍 Part1&#xff1a;复试指南具体内容 1…...

【24】Word:小郑-准考证❗

目录 题目 准考证.docx 邮件合并-指定考生生成准考证 Word.docx 表格内容居中表格整体相较于页面居中 考试时一定要做一问保存一问❗ 题目 准考证.docx 插入→表格→将文本转换成表格→✔制表符→确定选中第一列→单击右键→在第一列的右侧插入列→布局→合并单元格&#…...

前瞻2024:前沿技术的全景洞察与深度剖析

在当今时代&#xff0c;前沿技术以前所未有的速度发展&#xff0c;深刻地改变着我们的生活、工作和社会的各个层面。从人工智能的迅猛发展到量子计算的逐步突破&#xff0c;从生物技术的不断创新到新能源技术的广泛应用&#xff0c;这些前沿技术正成为推动社会进步和经济发展的…...

告别手动编辑:如何用Python快速创建Ansible hosts文件?

在自动化运维领域&#xff0c;Ansible是一款非常强大的工具&#xff0c;它可以帮助我们管理和配置大量的服务器。为了让Ansible能够有效地管理这些服务器&#xff0c;我们需要一个hosts清单文件&#xff0c;该文件定义了Ansible要管理的目标主机。在实际应用中&#xff0c;我们…...

ESP32云开发二( http + led + lcd)

文章目录 前言先上效果图platformio.iniwokwi.tomldiagram.json源代码编译编译成功上传云端完结撒花⭐⭐⭐⭐⭐ 前言 阅读此篇前建议先看 此片熟悉下wokwi https://blog.csdn.net/qq_20330595/article/details/144289986 先上效果图 Column 1Column 2 platformio.ini wokwi…...

Java 基于微信小程序的原创音乐小程序设计与实现(附源码,部署,文档)

大家好&#xff0c;我是stormjun&#xff0c;今天为大家带来的是Java实战项目-基于微信小程序的原创音乐小程序设计与实现。该系统采用 Java 语言 开发&#xff0c;MySql 作为数据库&#xff0c;系统功能完善 &#xff0c;实用性强 &#xff0c;可供大学生实战项目参考使用。 博…...

JavaWeb开发(十五)实战-生鲜后台管理系统(二)注册、登录、记住密码

1. 生鲜后台管理系统-注册功能 1.1. 注册功能 &#xff08;1&#xff09;创建注册RegisterServlet&#xff0c;接收form表单中的参数。   &#xff08;2&#xff09;service创建一个userService处理业务逻辑。   &#xff08;3&#xff09;RegisterServlet将参数传递给ser…...

在stm32中C语言编写的程序中,一个整形数据是怎么存储的,高位在前还是低位在前

目录 举个例子 如何验证 小结 在 STM32&#xff08;基于 ARM Cortex-M 架构&#xff09;的系统中&#xff0c;默认是小端&#xff08;Little Endian&#xff09; 存储方式。也就是说&#xff0c;对于一个整型&#xff08;例如 32 位 int&#xff09;&#xff0c;它的最低有效…...

Redis系列之底层数据结构字典Dict

Redis系列之底层数据结构字典Dict Dict数据结构 Dict是Redis数据结构中使用最为频繁的复合型数据结构&#xff0c;本质上是一个哈希表 查看redis6.0版本的源码&#xff0c;链接&#xff1a;https://github.com/redis/redis/blob/6.0/src/dict.h 哈希表的结构定义&#xff1…...

CSS 溢出问题及解决方案:实用案例与技巧

在网页开发中&#xff0c;CSS 的布局和样式起着至关重要的作用&#xff0c;但经常会遇到一个棘手的问题——溢出问题。溢出是指元素内的内容超出了其设定的容器大小&#xff0c;这不仅会影响页面的美观&#xff0c;还可能干扰用户体验。本文将详细探讨 CSS 溢出问题的案例&…...

FastExcel 新一代的潮流 (EasyExcel)

目录 简介 FastExcel的特点 FastExcel使用方法详解 创建实体类和监听器 实现写入和读取功能 Excel转换为PDF 小结 FastExcel与EasyExcel的区别 结论 简介 FastExcel是由原EasyExcel作者在阿里巴巴宣布停止维护EasyExcel之后推出的升级版框架。它继承了EasyExcel的所有…...

使用ffmpeg提高mp4压缩比,减小文件体积【windows+ffmpeg+batch脚本】

文章目录 关于前情提要FFmpeg是什么使用脚本运行FFmpeg首先&#xff0c;下载ffmpeg.exe然后在视频相同位置写一个bat脚本运行压缩脚本 关于 个人博客&#xff0c;里面偶尔更新&#xff0c;最近比较忙。发一些总结的帖子和思考。 江湖有缘相见&#x1f91d;。如果读者想和我交…...

cuda从零开始手搓PB神经网络

cuda实现PB神经网络 基于上一篇的矩阵点乘&#xff0c;实现了矩阵的加减乘除、函数调用等。并且复用之前元编程里面写的梯度下降、Adam、NAdam优化方法。实现PB神经网络如下&#xff1a; #ifndef __BP_NETWORK_HPP__ #define __BP_NETWORK_HPP__ #include "matrix.hpp&quo…...

mac 安装mongodb

本文分享2种mac本地安装mongodb的方法&#xff0c;一种是通过homebrew安装&#xff0c;一种是通过tar包安装 homebrew安装 brew tap mongodb/brew brew upate brew install mongodb-community8.0tar包安装 安装mongodb 1.下载mongodb社区版的tar包 mongdb tar包下载地址 2…...

K8S-Pod资源清单的编写,资源的增删改查,镜像的下载策略

1. Pod资源清单的编写 1.1 Pod运行单个容器的资源清单 ##创建工作目录 mkdir -p /root/manifests/pods && cd /root/manifests/pods vim 01-nginx.yaml ##指定api版本 apiVersion: v1 ##指定资源类型 kind: Pod ##指定元数据 metadata:##指定名称name: myweb ##用户…...

【Maui】视图界面与数据模型绑定

文章目录 前言一、问题描述二、解决方案三、软件开发&#xff08;源码&#xff09;3.1 创建模型3.2 视图界面3.3 控制器逻辑层 四、项目展示 前言 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架&#xff0c;用于使用 C# 和 XAML 创建本机移动和桌面应用。 使用 .NET MAUI&…...

JavaScript笔记基础篇02——运算符、语句、数组

黑马程序员视频地址&#xff1a;黑马程序员前端JavaScript入门到精通全套视频教程https://www.bilibili.com/video/BV1Y84y1L7Nn?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes 目录 运算符 赋值运算符 ​编辑​编辑 一元运算符…...

心法利器[127] | 24年算法思考-特征工程和经典深度学习

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。 2023年新的文章合集已经发布&#xff0c;获取方式看这里&#xff1a;又添十万字-CS的陋室2023年文章合集来袭&#xff0c;更…...

ASP.NET Core 中的 JWT 鉴权实现

在当今的软件开发中&#xff0c;安全性和用户认证是至关重要的方面。JSON Web Token&#xff08;JWT&#xff09;作为一种流行的身份验证机制&#xff0c;因其简洁性和无状态特性而被广泛应用于各种应用中&#xff0c;尤其是在 ASP.NET Core 项目里。本文将详细介绍如何在 ASP.…...

HunyuanVideo-Foley部署教程:RTX4090D专属优化版开箱即用完整指南

HunyuanVideo-Foley部署教程&#xff1a;RTX4090D专属优化版开箱即用完整指南 1. 环境准备与快速部署 HunyuanVideo-Foley是一款强大的视频生成与音效生成工具&#xff0c;本教程将指导您在RTX 4090D显卡上快速部署优化版镜像。这个专为24GB显存优化的版本&#xff0c;让您无…...

NAS 入门两年,聊聊我的踩坑心得

折腾 NAS 两年后&#xff0c;我最大的感受是&#xff1a;别急着买贵的&#xff0c;先想清楚自己到底需要什么。 刚入坑时&#xff0c;我什么都不懂&#xff0c;第一台直接买了四千多的群晖。后来才发现&#xff0c;自己平时真正用得最多的&#xff0c;其实就是文件存取、影音播…...

记一次Webshell流量分析 | 添柴不加火谛

1. 哑铃图是什么&#xff1f; 哑铃图&#xff08;Dumbbell Plot&#xff09;&#xff0c;有时也称为DNA图或杠铃图&#xff0c;是一种用于比较两个相关数据点的可视化图表。 它源于人们对更有效数据比较方式的持续探索。 在传统的时间序列比较中&#xff0c;我们通常使用两条折…...

写段代码教会你什么是HOOK技术?HOOK技术能干什么?肯

为 HagiCode 添加 GitHub Pages 自动部署支持 本项目早期代号为 PCode&#xff0c;现已正式更名为 HagiCode。本文记录了如何为项目引入自动化静态站点部署能力&#xff0c;让内容发布像喝水一样简单。 背景/引言 在 HagiCode 的开发过程中&#xff0c;我们遇到了一个很现实的问…...

Qwen3-Reranker-0.6B保姆级教程:Docker一键部署,快速验证排序效果

Qwen3-Reranker-0.6B保姆级教程&#xff1a;Docker一键部署&#xff0c;快速验证排序效果 1. 教程目标与适用人群 1.1 学习目标 本教程将带你从零开始完成Qwen3-Reranker-0.6B模型的完整部署流程&#xff0c;你将学会&#xff1a; 理解文本重排序模型的基本概念和应用场景使…...

OpenClaw简介|OpenClaw衍生产品|OpenClaw辅助工具

OpenClaw简介OpenClaw是一个开源的多功能机器人爪手设计项目&#xff0c;专注于提供低成本、模块化的机械爪解决方案&#xff0c;适用于科研、教育及工业自动化场景。其设计强调灵活性和可定制性&#xff0c;支持3D打印制造&#xff0c;便于用户根据需求调整结构和功能。核心特…...

3种方法实现Axure全界面汉化:axure-cn语言包深度应用指南

3种方法实现Axure全界面汉化&#xff1a;axure-cn语言包深度应用指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn Axure-cn是…...

Wan2.1模型实测:用TurboDiffusion快速生成电商产品展示视频

Wan2.1模型实测&#xff1a;用TurboDiffusion快速生成电商产品展示视频 1. 引言&#xff1a;当电商遇上秒级视频生成 想象一下这个场景&#xff1a;你是一家电商公司的运营&#xff0c;明天就要上架一款新产品&#xff0c;需要制作10个不同风格、不同角度的产品展示视频。按照…...

Cinema 4D 项目一天就能渲染完?5分钟提交渲染农场任务

很多刚接触 Cinema 4D 云渲染 的用户都会有一个疑问&#xff1a;“我今天能不能马上把项目放到渲染农场渲染&#xff1f;”答案是 可以的。实际上&#xff0c;从注册到提交渲染任务&#xff0c;整个流程通常只需要几分钟。只要你的项目准备好&#xff0c;就可以立即开始渲染。渲…...

VideoDownloadHelper:一站式网页视频下载神器,告别视频保存烦恼

VideoDownloadHelper&#xff1a;一站式网页视频下载神器&#xff0c;告别视频保存烦恼 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 还在为…...