• 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,互相不干扰。

  • 相关阅读:
    xheditor富文本编辑器支持从word复制粘贴保留格式和图片的插件
    kindeditor富文本编辑器支持从word复制粘贴保留格式和图片的插件
    fckeditor富文本编辑器支持从word复制粘贴保留格式和图片的插件
    PAT 甲级 1078 Hashing (25 分)(简单,平方二次探测)
    PAT 甲级 1077 Kuchiguse (20 分)(简单,找最大相同后缀)
    Node.js+Express框架+Mongo学习(一)第一个node.js实例
    python web开发——django学习(二)orm介绍与model检查
    python web开发——django学习(二)第一个django网站运行成功
    排序算法分析
    "飞机大战"游戏_Java
  • 原文地址:https://www.cnblogs.com/navysummer/p/9405902.html
Copyright © 2020-2023  润新知