Go下載安裝及切換不同版本的實(shí)現(xiàn)方法
一、下載安裝
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目錄添加到環(huán)境變量
在 ~/.zshrc或~/.bashrc中添加如下行 export PATH=$PATH:/usr/local/go/bin
使用環(huán)境變量立即生效
source ~/.zshrc 或 source ~/.bashrc
測試go是否安裝成功
go version
Windows
直接雙擊 .msi文件進(jìn)行引導(dǎo)安裝
安裝完成后打開 cmd 或 power shell 輸入 go version 驗(yàn)證安裝是否成功
二、如何切換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目錄加到到環(huán)境變量
export PATH=~/go_version/go/bin:$PATH
驗(yàn)證是否安裝成功
go1.21.9 version
擴(kuò)展:此法為切換軟件的通法,其他軟件也適用。
方法二
使用go install 命令安裝其他版本
已經(jīng)安裝go的情況下(例如當(dāng)前版本為: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的可執(zhí)行安裝包,存放在 ~/go/bin下面
再去用go1.22.1 download 則會下載1.22.1的源碼,放到~/sdk下面
此時就可以用go1.22.1 version來驗(yàn)證是否安裝成功了
為什么可以直接敲go1.22.1呢?實(shí)際上執(zhí)行的是/go/bin/go1.22.1這個二進(jìn)制文件,而/go/bin又加入了PATH變量,所以能執(zhí)行。
sdk是不能刪除的,go1.22.1會讀取sdk里面的源碼,刪除后會提示sdk沒有下載。
方法三
使用gvm來切換
gvm全稱:Go Version Manager (GVM)是一個用于管理Go環(huán)境的開源工具。它支持安裝多個Go版本,并使用GVM “pkgsets” 管理每個項(xiàng)目的模塊。
GVM(與Ruby中的RVM一樣)最初是由Josh Bussdieker開發(fā)的,它允許為每個項(xiàng)目或項(xiàng)目組創(chuàng)建開發(fā)環(huán)境,分離不同的Go版本和包依賴關(guān)系,以提供更大的靈活性并防止版本問題。
安裝gvm
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
命令解析:
- -s -S 連用表示禁用進(jìn)度條但可以顯示錯誤信息
- -L 表示重定向跟隨
- <(...) 此處為<(curl ...) ,此語法表示curl的執(zhí)行結(jié)果被視作文件
- bash < 表示拿到curl的執(zhí)行結(jié)果作為標(biāo)準(zhǔn)輸入傳給bash
通過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允許獨(dú)立管理不同的Go包集及其版本,從而更容易在不同的項(xiàng)目依賴關(guān)系之間切換。
// 創(chuàng)建包集合 gvm pkgset create [name] // 選擇包集合 gvm pkgset use [name] // 列出創(chuàng)建的包集合 gvm pkgset list // 刪除包集合 gvm pkgset delete [name]
切換到指定的包集后,后續(xù)使用go build、go run命令時會把下載的包安裝到包集目錄
其他gvm命令
- 打印gvm版本
gvm version
- 獲取gvm最新版本
gvm get
- 打印幫助信息
gvm help
gvm 原理
其內(nèi)部核心也是使用軟連接,通過指向不同的版本使用不同的環(huán)境變量
后面再進(jìn)行源碼分析
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
golang中切片copy復(fù)制和等號復(fù)制的區(qū)別介紹
這篇文章主要介紹了golang中切片copy復(fù)制和等號復(fù)制的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04Golang 語言map底層實(shí)現(xiàn)原理解析
這篇文章主要介紹了Golang 語言map底層實(shí)現(xiàn)原理解析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12使用Go語言構(gòu)建高效的二叉搜索樹聯(lián)系簿
樹是一種重要的數(shù)據(jù)結(jié)構(gòu),而二叉搜索樹(BST)則是樹的一種常見形式,在本文中,我們將學(xué)習(xí)如何構(gòu)建一個高效的二叉搜索樹聯(lián)系簿,感興趣的可以了解下2024-01-01go引入自建包名報(bào)錯:package?XXX?is?not?in?std解決辦法
這篇文章主要給大家介紹了go引入自建包名報(bào)錯:package?XXX?is?not?in?std的解決辦法,這是在寫測試引入包名的時候遇到的錯誤提示,文中將解決辦法介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12golang實(shí)現(xiàn)簡單的tcp數(shù)據(jù)傳輸
這篇文章主要為大家介紹了golang實(shí)現(xiàn)簡單的tcp數(shù)據(jù)傳輸,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Golang的循環(huán)中break和continue語句的用法講解
這篇文章主要介紹了Golang的循環(huán)中break和continue語句的用法講解,是Go語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-10-10