Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Go下载安装及切换不同版本

Go下载安装及切换不同版本的实现方法

作者:我是唐青枫

本文详细介绍了如何下载和安装Go语言,以及如何切换不同版本的Go,通过提供详细的步骤和解释,帮助读者理解Go语言的安装和版本管理

一、下载安装

Go下载地址

Go提供了Windows、MacOS(ARM64) 和 MacOS(x86-64)、Linux版本,也可以下载源码自己编译安装。

Linux && MacOS

下载压缩包

解压到指定目录,如:/usr/local

rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.2.linux-amd64.tar.gz

把go的bin目录添加到环境变量

在 ~/.zshrc或~/.bashrc中添加如下行

export PATH=$PATH:/usr/local/go/bin

使用环境变量立即生效

source ~/.zshrc 或 source ~/.bashrc

测试go是否安装成功

go version

Windows

直接双击 .msi文件进行引导安装

安装完成后打开 cmd 或 power shell 输入 go version 验证安装是否成功

二、如何切换Go版本?

方法一

直接下载不同版本的压缩包,使用软连接指向不同的版本

下载完压缩包,解压到其他目录,如:

tar -C ~/Downloads -xzf go1.21.9.linux-amd64.tar.gz

把go目录重命名为 go1.21.9

mv go go1.21.9

新建一个go全局目录,如:go_version

mkdir ~/go_version

做一个软链接指向go1.21.9版本

ln -s ~/Downloads/go1.21.9 ~/go_version/go

把~/go_version/go/bin目录加到到环境变量

export PATH=~/go_version/go/bin:$PATH

验证是否安装成功

go1.21.9 version

扩展:此法为切换软件的通法,其他软件也适用。

方法二

使用go install 命令安装其他版本

已经安装go的情况下(例如当前版本为:1.22.2),可以通过go install 来安装其他版本

go install golang.org/dl/go1.22.1@latest

go1.22.1 download

go install 命令会把go1.22.1版本作为1.22.2的可执行安装包,存放在 ~/go/bin下面

再去用go1.22.1 download 则会下载1.22.1的源码,放到~/sdk下面

此时就可以用go1.22.1 version来验证是否安装成功了

为什么可以直接敲go1.22.1呢?实际上执行的是/go/bin/go1.22.1这个二进制文件,而/go/bin又加入了PATH变量,所以能执行。

sdk是不能删除的,go1.22.1会读取sdk里面的源码,删除后会提示sdk没有下载。

方法三

使用gvm来切换

gvm全称:Go Version Manager (GVM)是一个用于管理Go环境的开源工具。它支持安装多个Go版本,并使用GVM “pkgsets” 管理每个项目的模块。

GVM(与Ruby中的RVM一样)最初是由Josh Bussdieker开发的,它允许为每个项目或项目组创建开发环境,分离不同的Go版本和包依赖关系,以提供更大的灵活性并防止版本问题。

安装gvm

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

命令解析:

通过gvm安装go

gvm install go1.22.2

通过gvm切换go版本

gvm use go1.22.2

列出所有通过gvm安装的go版本

gvm list

列出所有可用的线上go版本

gvm listall

卸载go版本

gvm uninstall go1.22.2

完全移除gvm及其所有安装的go版本和依赖包

gvm implode如果卸载失败,直接 rm -rf ~/.gvm

管理go的依赖包

pkgset允许独立管理不同的Go包集及其版本,从而更容易在不同的项目依赖关系之间切换。

// 创建包集合
gvm pkgset create [name]

// 选择包集合
gvm pkgset use [name]

// 列出创建的包集合
gvm pkgset list

// 删除包集合
gvm pkgset delete [name]

切换到指定的包集后,后续使用go build、go run命令时会把下载的包安装到包集目录

其他gvm命令

gvm version
gvm get
gvm help

gvm 原理

其内部核心也是使用软连接,通过指向不同的版本使用不同的环境变量

后面再进行源码分析

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文