zoukankan      html  css  js  c++  java
  • 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,互相不干扰。

  • 相关阅读:
    leetcode 1301. 最大得分的路径数目
    LeetCode 1306 跳跃游戏 III Jump Game III
    LeetCode 1302. 层数最深叶子节点的和 Deepest Leaves Sum
    LeetCode 1300. 转变数组后最接近目标值的数组和 Sum of Mutated Array Closest to Target
    LeetCode 1299. 将每个元素替换为右侧最大元素 Replace Elements with Greatest Element on Right Side
    acwing 239. 奇偶游戏 并查集
    acwing 238. 银河英雄传说 并查集
    acwing 237程序自动分析 并查集
    算法问题实战策略 MATCHORDER 贪心
    Linux 安装Redis全过程日志
  • 原文地址:https://www.cnblogs.com/navysummer/p/9405902.html
Copyright © 2011-2022 走看看