成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

安裝了多個版本的 Go,該怎么用才正確?

開發(fā) 架構(gòu)
實際開發(fā)中會接觸到不同的開源項目,而這些項目有可能是不同團(tuán)隊開發(fā)的,使用的 go 版本都是不一樣的。

本文轉(zhuǎn)載自微信公眾號「Go編程時光」,作者寫代碼的明哥。轉(zhuǎn)載本文請聯(lián)系Go編程時光公眾號。

1. 需求背景

實際開發(fā)中會接觸到不同的開源項目,而這些項目有可能是不同團(tuán)隊開發(fā)的,使用的 go 版本都是不一樣的。

以我為例,最近在研究 KubeVirt (一個能在 K8S 下管理虛擬機的開源項目),為了實現(xiàn)自己的需求,需要對 KubeVirt 進(jìn)行二次開發(fā)。

通過 go.mod 得知 KubeVirt 是使用 go 1.13 開發(fā)的,而同時為了能在 KubeVirt 下的虛擬機能使用 LVM 這種存儲方式,我們又引入了阿里研發(fā)的 lvm-csi 插件,同樣的,這個插件已經(jīng)實現(xiàn)的功能距離我們的預(yù)期還有點差距,因此同樣要進(jìn)行二次開發(fā)。查看 go.mod 發(fā)現(xiàn),lvm-csi 是在更老的版本下開發(fā)的,也就是 go 1.12 。

而同時我的機器上很早之前就安裝過 go 1.14 的版本,也一直使用它來開發(fā)。

問題就來了,如何讓才能在我的機器上能同時安裝這么多個版本的 golang ,而且互不沖突呢?

2. 安裝多版本的 Go

要想不同版本的 go 互不沖突,只要將他們安裝在不同的目錄下就可以了。

首先下載兩個版本的安裝包

  1. $ wget https://dl.google.com/go/go1.12.linux-amd64.tar.gz 
  2. $ wget https://dl.google.com/go/go1.13.linux-amd64.tar.gz 

然后分別解壓至不同目錄

  1. # 解壓go 1.12 
  2. sudo tar -C /tmp/ -xzf go1.12.linux-amd64.tar.gz 
  3. mv /tmp/go /usr/local/go12  
  4.  
  5. # 解壓go 1.13 
  6. sudo tar -C /tmp/  -xzf go1.13.linux-amd64.tar.gz 
  7. mv /tmp/go /usr/local/go13 

3. 簡單粗暴的方案

在同一臺機器中安裝多個版本的 Golang 需要注意

  • 區(qū)分不同版本的 go 入口
  • 切換使用不同的環(huán)境變量

區(qū)分不同版本 go 入口

當(dāng)你在環(huán)境中有多個 go ,那么當(dāng)你使用 go build 等命令時,系統(tǒng)如何知道你想要使用的是哪個版本呢?

系統(tǒng)并不知道,因此你需要為不同版本的 go 起不同的名字

  • go 1.12 的 go 入口就改成 /usr/local/go12/bin/go12
  • go 1.13 的 go 入口就改成 /usr/local/go13/bin/go13
  • 以此類推

如此一來,就不會混淆了

  1. $ go12 version 
  2. go version go1.12 linux/amd64 
  3. $ go13 version 
  4. go version go1.13 linux/amd64 

切換使用不同的環(huán)境變量

使用了不同的go入口,對應(yīng)的環(huán)境變量也要變量,比如 GOROOT,它可不會隨著你使用哪個版本的 go 就自動切換,看下面他們輸出的都是一個值。

  1. $ go12 env GOROOT 
  2. /usr/local/go 
  3. $ go13 env GOROOT 
  4. /usr/local/go 

因此,這個切換不同環(huán)境變量得自己來做

另外要注意的是:

  • go 1.12 沒有 go env -w 中的 -w 參數(shù)
  • go 1.13 中雖然有 -w 但不能覆蓋OS級別的環(huán)境變量,修改前需先 unset

知道了這幾點之后,便可以自行實現(xiàn)切換的方案。

我想的方案是可以在 /usr/local/go13/bin/ 寫一個修改環(huán)境變量的腳本

  1. $ cat << EOF >/usr/local/go12/bin/goto12 
  2. unset GOROOT 
  3. go env -w GOROOT="/usr/local/go12/" 
  4. EOF 
  5.  
  6. $ chmod +x /usr/local/go12/bin/goto12 

下次要使用 go 1.12 的時候,直接使用下面命令就可以修改環(huán)境變量

  1. $ source goto12 

go 1.13 也是同理,不敢贅述。

實現(xiàn)的效果如下

  1. $ go env GOROOT 
  2. /usr/local/go 
  3.  
  4. $ source goto12 
  5. $ go12 env GOROOT 
  6. /usr/local/go12 
  7.  
  8. $source goto13 
  9. $ go13 env GOROOT 
  10. /usr/local/go13 

4. 比上面更優(yōu)的方案

到這里,你應(yīng)該已經(jīng)感受到了,每次切換都要手動 source 一下,還是有點麻煩。

其實我還有一個更好的方法,這種方案,可以不用去改 go 入口的名字,同樣連 source 都不用。

只要執(zhí)行下面兩條件命令即可(每個版本兩條,兩個版本就是四條)

  1. $ cat << EOF >/usr/local/go12/bin/go12 
  2. unset GOROOT 
  3. go env -w GOROOT="/usr/local/go12/" 
  4. /usr/local/go12/bin/go $@ 
  5. EOF 
  6.  
  7. $ chmod + /usr/local/go12/bin/go12 
  8.  
  9. $ cat << EOF >/usr/local/go13/bin/go13 
  10. unset GOROOT 
  11. go env -w GOROOT="/usr/local/go13/" 
  12. /usr/local/go13/bin/go $@ 
  13. EOF 
  14.  
  15. $ chmod + /usr/local/go13/bin/go13 

如果一來,當(dāng)你執(zhí)行 go12 就會自動修改 go12 的環(huán)境變量,執(zhí)行 go13 就會自動修改 go13 的環(huán)境變量,并且不會影響默認(rèn)的 go 的行為。

 

當(dāng)然以上我都只改了 GOROOT 這一環(huán)境變量,若在不同的 go 版本還有其他不一樣的地方,可以繼續(xù)在 go12 或者go13 中添加對應(yīng)的 shell 代碼。

 

責(zé)任編輯:武曉燕 來源: Go編程時光
相關(guān)推薦

2021-06-09 23:36:46

Golang語言版本

2023-08-01 12:45:39

用戶細(xì)分消費習(xí)慣

2016-11-22 08:23:44

舊手機安全隱患信息安全

2022-04-24 08:23:19

Redis內(nèi)存淘汰策略

2025-06-09 08:00:57

2022-12-12 08:53:53

Go版本方式

2025-06-09 01:22:00

Go版本管理器

2011-07-06 17:07:08

筆記本技巧

2011-07-09 16:25:00

筆記本技巧

2022-04-07 11:27:15

數(shù)字孿生VR系統(tǒng)AI

2014-11-28 09:45:35

程序員

2015-10-28 10:29:09

數(shù)據(jù)中心運輸硬驅(qū)

2021-06-28 15:00:06

DRF模型序列化

2024-09-13 11:49:15

2023-11-27 12:24:23

算法模型業(yè)務(wù)模型

2022-07-26 12:18:05

Python編程語言列表解析式

2022-01-17 16:18:14

Go枚舉源碼

2014-04-09 09:32:24

Go并發(fā)

2024-03-05 07:55:41

框架GINGo

2023-03-13 00:10:46

Go語言版本
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品视频一区二区三区不卡 | 日本天堂一区 | 中文字幕亚洲一区 | 亚洲一一在线 | 成人精品免费 | 欧美日韩在线播放 | 日韩免费| 久久久精品网 | 天堂资源视频 | 一区久久 | 亚洲a视频| 91久久视频 | 亚洲日韩欧美一区二区在线 | 免费一区| 久久三级av | 天堂影院av | 请别相信他免费喜剧电影在线观看 | 羞羞的视频免费看 | 美女艹b | 成人欧美一区二区三区 | 国产欧美精品一区二区色综合朱莉 | 中文字幕一区二区三区精彩视频 | 自拍视频一区二区三区 | 亚洲国产精品一区二区第一页 | 日韩一级免费电影 | 午夜丰满少妇一级毛片 | 国产91丝袜在线18 | 成人欧美一区二区三区在线播放 | 免费视频一区二区 | www.色综合| av片免费| 成人精品 | 中文字幕视频在线 | 久久精品在线 | av中文字幕在线观看 | 成人av一区 | 国产日韩精品久久 | 亚洲一区二区视频在线观看 | 日韩精品极品视频在线观看免费 | 亚洲精品国产电影 | 国产成人精品久久二区二区91 |