Logo
About

goenvでgoをインストール

2017/07/29

はじめに#


そんなに機会はないかもしれませんが,goをインストールするたびにどのgoenvを使ってたかとかみるのが面倒なので書き残しておこうと思います.
かなり初心者向けに書いていこうかなという感じです.
だいたいの環境で構築できるはず!

goenvで最新のversionが見れない、表示されないという方は goenvのupdate を見てください。

環境#


goenvについて#


goのバージョン管理ツール。 プロジェクトごとにgoのバージョンが変わったりするときに便利。

goenv install#


どの環境でもインストールしやすいようにgitでインストール

$ git clone https://github.com/syndbg/goenv.git ~/.goenv

URLが変わってたりリポジトリがなくなってたりした場合は他のリポジトリを探してください.

環境変数を設定します.
自分が使ってるシェルの設定ファイルに追記.(~/.bashrcや~/.zshrcなど)

export GOENV_ROOT=$HOME/.goenv
export PATH=$GOENV_ROOT/bin:$PATH
eval "$(goenv init -)"

追記したら

$ exec $SHELL

または

$ source ~/.zshrc

反映されなかったらターミナルを再起動したりしてみましょう.

goenv: system version not found in PATHと言われますが,golangをまだインストールしていない状態で goenv init - しているからなので気にせず進んでください.

その後

$ goenv -v

これでgoenv (任意のバージョン)がでればOK

go(golang) install#


言語をインストールします.
インストールできるバージョンは以下のコマンドで確認できます.

$ goenv install -l
  1.2.2
  1.3.0
  .
  .
  1.8.1
  1.8.3

今回は1.8.3をインストールします.

$ goenv install 1.8.3

現在使用できるgoのバージョン一覧を見てみましょう.

$ goenv versions
  1.8.3

インストールしたバージョンが表示されていれば使用できる状態にあるので使えるように設定します.

$ goenv global 1.8.3
$ goenv rehash

これで基本的にどこのディレクトリでも1.8.3のバージョンが使えるようになります.(rehashしないと変更されない場合があります)

$ goenv versions
* 1.8.3 (set by ~/.goenv/version)

この*がついているバージョンが現在設定されているバージョンになります.

$ go version
go version go1.8.3 linux/amd64

とりあえず使えるようになりました.
このあとはプロジェクトなどに対応できるように環境変数を設定します.

$GOPATHを設定しますが好きなディレクトリに設定します.
自分はホームディレクトリに設定してます.(ホームディレクトリに設定する人が多い気がする)

export GOPATH=$HOME/go
PATH=$PATH:$GOPATH/bin

上記の記述を追加後

$ source ~./.zshrc
$ mkdir -p $GOPATH/src/github.com/{ユーザー名}
$ cd $GOPATH/src/github.com/{ユーザー名}
$ git clone {gitのプロジェクト}

これで動くはず!
動かなかったらコメントでもください.

goenv2系について#


$ goenv --version
goenv 2.0.0beta11

で2系の方.

goenvのバージョンアップに伴い,GOPATHの設定が自動になりました.
以下の通り,eval "$(goenv init -)"によって設定してくれる模様です.

Add goenv init to your shell to enable shims, management of GOPATH and GOROOT and auto-completion. Please make sure eval "$(goenv init -)" is placed toward the end of the shell configuration file since it manipulates PATH during the initialization.

export GOENV_ROOT="$HOME/.goenv"
export PATH="$GOENV_ROOT/bin:$PATH"
eval "$(goenv init -)"
export PATH="$GOROOT/bin:$PATH"
export PATH="$PATH:$GOPATH/bin"

上記の設定を行い,例としてgoのバージョン1.8.2をインストール後GOPATHの確認.

$ goenv install 1.18.2
$ goenv global 1.18.2
$ goenv rehash
$ exec $SHELL # GOPATHの切り替え
$ echo $GOPATH
~/go/1.18.2

この様に設定されるため,以下の様にディレクトリを作成してあげると良いです.
(以前は自動的にバージョンのディレクトリも作られた記憶がありますが今回は作られなかったです.)

$ mkdir -p $GOPATH/src/github.com/{ユーザー名}/{リポジトリ名}

goenvのupdate#


golangのlatest versionがインストール一覧に表示されないことがあります.
原因としては単純にgitのversionが古いからなので、localに最新版のgoenvを落としてきましょう.

$ cd $GOENV_ROOT
$ git pull origin master
$ goenv install -l

おまけ#


プロジェクトごとのenvの設定などでgoのバージョンがグローバルじゃないのを使うことがあるはずだったので気をつけましょう.
goenvについてはどれもそんなに変わりませんが自分が使いやすいと思ったものにしました.
インストールできるバージョンが見れないgoenvもあるので注意.