LoginSignup
2
4

More than 5 years have passed since last update.

GVMを使ってGoの開発環境を管理しよう!

Posted at

こんにちは!エンジニアのギです。

最近、プロジェクトでGoを使い始めました。
各プロジェクトでGoの環境設定が違うため、プロジェクト毎に
環境を再設定しなければなりません(これは、結構面倒な仕事です)

そこで、すぐにプロジェクトを切り替えられるようにする方法を調べてみました。

今回、GVMの使い方をまとめて説明します!

MacでGVMをインストールする

GVMをインストールするために、mercurialが必要となります。
事前にmercurialを入れておきます。

xcode-select --install
brew update
brew install mercurial

次に、GVMをインストールします。

bash < <(curl -s https://raw.github.com/moovweb/gvm/master/binscripts/gvm-installer)
source $HOME/.gvm/scripts/gvm

zshを使っている場合、以下のコマンドでインストールします。

zsh < <(curl -s https://raw.github.com/moovweb/gvm/master/binscripts/gvm-installer)
source $HOME/.gvm/scripts/gvm

インストールが終わったら、GVMのバージョンを確認できます。

gvm version

GVMは以下のコマンドでアンインストールできます。

gvm implode

GVMを使う

  • インストールしたGOバージョン一覧を表示する
gvm list
  • GVMでGoをインストールする
gvm install go{goバージョン} -B

  • GOバージョンを切り替える
gvm use go{goバージョン} --default

プロジェクトの環境を設定する

例えば、二つプロジェクトがある。hogeプロジェクトはgo1.7を使って、GOPATHは$HOME/hogeです。
fugaプロジェクトはgo1.8を使って、GOPATHは$HOME/fugaです。
go1.7のGOROOTは$HOME/.gvm/go1.7で、go1.8のGOROOTは$HOME/.gvm/go1.8です。

まずは、GOプロジェクト用のフォルダを作成しておきます。

mkdir -p $HOME/hoge/{pkg,bin,src}

mkdir -p $HOME/fuga/{pkg,bin,src}

次に、GVMでプロジェクトの環境管理の設定ファイルを作ります。

gvm pkgset create hoge
gvm pkgset create fuga

作成したものを確認します。 gvm pkgset list

次に、GOPATHを編集します。

gvm pkgenv hoge
gvm pkgenv fuga

行12や行16を以下のように変更してください。

# hogeプロダクトの設定
# 行12
export GOPATH; GOPATH="/Users/nghinv/.gvm/pkgsets/go1.7/hoge:$HOME/hoge:$GOPATH"

# 行16

export PATH; PATH="/Users/nghinv/.gvm/pkgsets/go1.7/hoge/bin:${GVM_OVERLAY_PREFIX}/bin:$HOME/hoge/bin:${PATH}"


# fugaプロダクトの設定
# 行12
export GOPATH; GOPATH="/Users/nghinv/.gvm/pkgsets/go1.8/hoge:$HOME/fuga:$GOPATH"

# 行16

export PATH; PATH="/Users/nghinv/.gvm/pkgsets/go1.8/hoge/bin:${GVM_OVERLAY_PREFIX}/bin:$HOME/fuga/bin:${PATH}"


これで、設定は終わりです。

hogeプロジェクトを切り替える

gvm pkgset use hoge

fugaプロジェクトを切り替える

gvm pkgset use fuga

以上

私のブログより

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4