GVM管理Go版本

1.为什么要安装GVM

1.1什么是GVM

GVM是一个golang虚拟环境配置工具,其允许一台机器上安装多个golang版本,gvm是第三方开发的Go多版本管理工具,类似ruby里面的rvm工具。使用起来相当的方便。它是以shell脚本开发的工具,同时兼容bash和zsh,用法和ruby的rvm很像,能做到Go语言版本的切换以及GOPATH的修改。

1.2Go的项目隔离

在我们进行一个项目的开发时,总是希望一个项目独立使用一个workspace,用于隔离各个项目的依赖环境。以ruby项目为例,如果公用workspace,会导致gemset公用,可能在多项目开发的时候,难以隔离各个项目不同的gem,在开发以及运行时出现预料外的问题,所以一般的ruby项目,都会在项目根目录下,使用.ruby-version以及.ruby-gemset来规定当前项目的ruby版本以及gemset,配合rvm或rbenv等版本工具,使ruby项目能使用独立的workspace。

比照ruby语言,Go语言在使用中也面临了2个问题:

  1.  
    1.语言版本进步很快,需要对应项目进行语言版本管理。
  2.  
    2.第三方库的版本隔离

要解决问题1,我们需要一个工具来安装多个Go版本,并提供方便的切换功能。

而对于问题2,我们知道Go使用GOPATH这个环境变量来管理编译时的源代码路径,所以第三方库也是下载在GOPATH下,并且我们的源代码也需要处于GOPATH下。于是就需要一个工具,能根据方便的设置GOPATH。

在网上搜寻后,发现了 gvm 这个好用的工具。这个以shell脚本开发的工具,同时兼容bash和zsh,用法和ruby的rvm很像,能做到Go语言版本的切换以及GOPATH的修改。

2.安装GVM

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

查看版本:


查看版本失败,执行命令:yum install bison


再次查看版本,执行命令:gvm version

3.GVM的使用


3.1查看当前机器的Go环境

3.2安装不同版本的Go,方便切换使用


3.3切换Go版本

  • 使用Go1.5

  •   使用Go1.8
  • 使用Go1.9

         

3.4使用GVM创建项目的workspace

我们来新建一个项目,名字叫pprof。项目目录放在~/goproj/pprof下。

  1.  
    mkdir -p ~/goproj/pprof
  2.  
    cd ~/goproj/pprof
  3.  
    gvm pkgset create --local
  4.  
    gvm pkgset use --local
  5.  
    mkdir src

在上面的命令中,我们创建了项目的目录,进入目录后,使用gvm pkgset create -local命令,将目录设为一个local的pkgset,然后通过gvm pkgset use --local来使用它,这时,当前的环境变量的GOPATH为:

$HOME/goproj/pprof:$HOME/goproj/pprof/.gvm_local/pkgsets/system/local:$HOME/.gvm/pkgsets/system/global

可以看到,GOPATH已经被设置为pprof这个项目目录了,这时我们执行go get命令来下载第三方库的时候,会默认下载到$HOME/goproj/pprof/src目录下。

接下来,我们来创建真正用于代码管理的目录:

  1.  
    mkdir -p ~/goproj/pprof/src/pprof
  2.  
    cd ~/goproj/pprof/src/pprof
  3.  
    git init

这里,我们用git来管理项目的软件版本。现在,我们可以在~/goproj/pprof/src/pprof这个目录下来编写代码了。

3.5最终效果

在不同的项目目录下使用的go版本不同,并且隔离各个项目的依赖环境。

总结

通过使用gvm,我们能够根据项目切换Go语言版本以及切换GOPATH目录。这2大功能,帮助我们给每一个Go项目提供独立的workspace,互相不干扰。

原文地址:https://www.cnblogs.com/navysummer/p/9405902.html