Golang-使用 gvm 进行版本控制

在这里插入图片描述

当你想为每个项目切换 go 版本时,gvm (Go Version Manager) 很方便。

这里,我将介绍“如何在Mac上安装gvm”和“如何使用gvm”

使用准备

仅适用于 Mac 的准备工作

按照MacOSX 要求中的说明执行以下命令。

xcode-select --install
brew update
brew install mercurial

gvm安装

我使用 zsh 作为我的 shell。

$ echo $SHELL
/bin/zsh

对于 zsh,您可以这样安装:

$ zsh < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
Cloning from https://github.com/moovweb/gvm.git to /Users/user_name/.gvm
No existing Go versions detected
Installed GVM v1.0.22Please restart your terminal session or to get started right away run`source /Users/user_name/.gvm/scripts/gvm`

~/.zshrc 以下行被添加到最后一行

[[ -s "/Users/user_name/.gvm/scripts/gvm" ]] && source "/Users/user_name/.gvm/scripts/gvm"

重新启动终端 gvm 即可使用

$ gvm help
Usage: gvm [command]Description:GVM is the Go Version ManagerCommands:version    - print the gvm version numberget        - gets the latest code (for debugging)use        - select a go version to use (--default to set permanently)diff       - view changes to Go roothelp       - display this usage textimplode    - completely remove gvminstall    - install go versionsuninstall  - uninstall go versionscross      - install go cross compilerslinkthis   - link this directory into GOPATHlist       - list installed go versionslistall    - list available versionsalias      - manage go version aliasespkgset     - manage go packages setspkgenv     - edit the environment for a package set

如何使用gvm

查看可以安装的版本

gvm listall 您可以检查可以安装哪个版本

$ gvm listallgvm gos (available)go1go1.0.1go1.0.2go1.0.3go1.1go1.1rc2go1.1rc3:

安装 go 版本

M1 Mac 我正在使用,但是当我执行以下命令时,出现错误

$ gvm install go1.16.15 -B
Installing go1.16.15 from binary source
ERROR: Binary Go unavailable for this platform
$ 
$ gvm install go1.17.5 -B 
Installing go1.17.5 from binary source
ERROR: Binary Go unavailable for this platform

我在以下方面取得了成功:

$ brew install go
==> Downloading https://ghcr.io/v2/homebrew/core/go/manifests/1.18
######################################################################## 100.0%:
$ 
$ gvm install go1.16.15   
Installing go1.16.15...* Compiling...
go1.16.15 successfully installed!
$ 
$ gvm use go1.16.15 --default
Now using version go1.16.15
$ 
$ go version          
go version go1.16.15 darwin/arm64

之后,即使我卸载了用brew安装的go,我也能够安装另一个版本的go。

$ brew uninstall go          
Uninstalling /opt/homebrew/Cellar/go/1.18... (11,947 files, 595.3MB)
$ 
$ gvm install go1.17.5   
Installing go1.17.5...* Compiling...
go1.17.5 successfully installed!

1.16.15 已安装 1.17.5 ,但为每个版本生成了一个文件夹,如下所示。

$ ls ~/.gvm/gos 
go1.16.15       go1.17.5

切换go版本来使用

我目前正在go1.16.15 使用

$ gvm listgvm gos (installed)=> go1.16.15go1.17.5
$ 
$ echo $GOPATH
/Users/user_name/.gvm/pkgsets/go1.16.15/global
$ 
$ echo $GOROOT
/Users/user_name/.gvm/gos/go1.16.15
$ 
$ go version
go version go1.16.15 darwin/arm64
$
$ which go
/Users/user_name/.gvm/gos/go1.16.15/bin/go

1.17.5 我会尝试切换到

$ gvm use go1.17.5 --default 
Now using version go1.17.5
$ 
$ gvm list                  gvm gos (installed)go1.16.15
=> go1.17.5$ 
$ echo $GOPATH
/Users/user_name/.gvm/pkgsets/go1.17.5/global
$ 
$ echo $GOROOT
/Users/user_name/.gvm/gos/go1.17.5
$ 
$ go version
go version go1.17.5 darwin/arm64
$ 
$ which go
/Users/user_name/.gvm/gos/go1.17.5/bin/go

参考

https://github.com/moovweb/gvm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/67002.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode链表篇 Day2

203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 1.暴力移除&#xff1a;分删除的为头结点和不为头节点 while删除头节点时&#xff1a;直接从下一个结点开始&#xff0c;headhead->next while不是头节点时&#xff1a;从head开始遍历(需记录的为 前继结点pre) 虚…

8.14 刷题【7道】

二叉树 1. 树中两个结点的最低公共祖先 原题链接 方法一&#xff1a;公共路径 分别找出根节点到两个节点的路径&#xff0c;则最后一个公共节点就是最低公共祖先了。 时间复杂度分析&#xff1a;需要在树中查找节点&#xff0c;复杂度为O(n) /*** Definition for a binary…

时序预测 | MATLAB实现基于GRU门控循环单元的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于GRU门控循环单元的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于GRU门控循环单元的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 1.Matlab实现GRU门控循环单元时间序列预测未…

Vc - Qt - QToolButton

QToolButton 是 Qt 框架中的一个类&#xff0c;是 QPushButton 的子类。它可以显示一个可单击的按钮&#xff0c;并且可以与弹出菜单、图标和文本等进行关联。 QToolButton的一些常见特性和用法包括&#xff1a; 设置文本&#xff1a;使用 setText() 函数设置按钮上的文本。设置…

【JavaEE进阶】SpringBoot 日志

文章目录 一. 日志有什么用?二. 自定义日志打印1. 日志的使用与打印 三. 日志级别1. 日志级别有什么用?2. 日志级别的分类及使用 四. 日志持久化五. 更简单的日志输出---Lombok1. Lombok的使用2. lombok原理解释2.1 Lombok更多注解说明 一. 日志有什么用? 在Java中&#xf…

运维监控学习笔记7

Zabbix的安装&#xff1a; 1、基础环境准备&#xff1a; 安装zabbix的yum源&#xff0c;阿里的yum源提供了zabbix3.0。 rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm 这个文件就是生成了一个zabbix.repo 2、安…

【MongoDB基础】

目录 一、概述 1.概念 2.相关 2.1 实例 2.2 库 2.3 集合 2.4 文档 2.5 主键 3.特性 4&#xff0c;应用场景 二、安装 1.RPM安装 2.启动数据库 三、目录结构 1.rpm -ql mongodb-org-server 2.rpm -ql mongodb-org-shell 3.rpm -ql mongodb-org-tools 四、默…

动手学深度学习-pytorch版本(一):引言 预备知识

参考引用 动手学深度学习利用 Anaconda 安装 pytorch 和 paddle 深度学习环境 pycharm 安装 0. 环境安装 利用 Anaconda 安装 pytorch 和 paddle 深度学习环境 pycharm 安装 1. 引言 机器学习&#xff08;machine learning&#xff0c;ML&#xff09;是⼀类强⼤的可以从经…

同步_异步请求和Ajax并利用axios框架简化

目录 同步和异步 原生的Ajax 创建XMLHttpRequest对象 常用方法 常用属性 axios框架 同步和异步 同步请求&#xff1a;发送请求后&#xff0c;会做出回应&#xff0c;回应的内容会覆盖浏览器中的内容&#xff0c;这样会打断其他正常的操作&#xff0c;显得不太友好&#…

Scala函数式编程

概念 函数 一种具有名或匿名的操作。其代码直到被调用时才执行。在函数的定义中&#xff0c;可能有也可能没有引用外部的未绑定变量。 def 函数名([参数名: 参数类型],...) [: 返回值类型] {语句[return] 返回值 }函数声明的关键字是 def[参数名: 参数类型],…&#xff1a;…

python实战-将mysql表结构导出到word文档

背景 将项目中用到的表的结构写入到word文档&#xff0c;格式如下&#xff1a; 解决思路 -- 注意这次最初的思路&#xff0c;操作简单但是重复的操作很多最后选择了python 使用sql将这些字段查出来&#xff0c;然后导出到excel或者excel xml&#xff0c;然后粘贴到word SELEC…

【Quarkus技术系列】「云原生架构体系」在云原生时代下的Java“拯救者”是Quarkus,那云原生是什么呢?

云原生时代下的Java"拯救者" 在云原生时代&#xff0c;其实Java程序是有很大的劣势的&#xff0c;以最流行的spring boot/spring cloud微服务框架为例&#xff0c;启动一个已经优化好&#xff0c;很多bean需要lazy load的application至少需要3-4秒时间&#xff0c;内…