实际开发中将暴露不同的开源项目,这些项目可能由不同的团队开发,并且所使用的GO版本不同。
以我为例,我最近研究了Kubevirt(一个可以在K8S下管理虚拟机的开源项目)。为了达到自己的需求,需要进行次要发展。
通过Go.mod,Kubevirt是使用GO 1.13开发的,同时,为了使用Kubevirt的虚拟函数中的LVM存储方法,我们引入了Ali开发的LVM-CSI插件。同样,此插件已经具有Beenthe实施功能与我们的期望有所不同,因此必须进行次要开发。查看GO.mod发现LVM-CSI是在较旧版本下开发的,即GO 1.12。
同时,我很久以前就已经在机器上安装了GO 1.14版本,并且已经开发了。
问题出现了,如何同时在我的机器上制作这么多版本的Golang,并且不会相互冲突?
如果不同版本的冲突,只需将它们安装在不同的目录中即可。
首先下载安装程序包的两个版本
然后将其解压缩到其他目录
在同一台计算机中安装多个版本的Golang,您需要注意
当您在环境中有多个GO时,当您使用命令时,系统如何知道要使用哪个版本?
系统不知道,因此您需要为不同版本的GO提供不同的名称
这样,它就不会感到困惑
在不同的进入入口的情况下,相应的环境变量也需要变量。例如,Goroot,它不会在使用哪个版本的GO时自动切换。请参阅下面输出的值。
因此,这种切换不同的环境变量可以自己完成
也要注意
知道这些要点后,您可以自己实施切换方案。
我认为解决方案是您可以编写一个修改环境变量的脚本
下次使用GO 1.12时,您可以使用以下命令来修改环境变量
GO 1.13也是一样的,不敢重复它。
实施的效果如下
在这一点上,您应该感觉到它。每次切换时,都必须手动来源,仍然有些麻烦。
实际上,我也有更好的方法。这种解决方案无法更改Go入口的名称,甚至没有必要来源。
只需执行以下两个条件命令(每个版本中有两个,两个版本是四个)
如果您来执行G12时,您将自动修改GO12的环境变量,而GO13将自动修改GO13的环境变量,而不会影响默认GO行为。
当然,我只更改了Goroot的环境变量。如果不同的GO版本中有不同的位置,则可以继续向GO12或GO13添加相应的外壳代码。