Edited at

goenvでgoをインストール 〜初心者向け〜


はじめに

そんなに機会はないかもしれませんが、goをインストールするたびにどのgoenvを使ってたかとかみるのが面倒なので書き残しておこうと思います。

かなり初心者向けに書いていこうかなという感じです。

だいたいの環境で構築できるはず!

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


環境


  • openSUSE LEAP 42.2

  • goenv 1.0.0


goenvについて

goのバージョン管理ツール。

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


goenv install

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

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

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

環境変数を設定します。

自分が使ってるシェルの設定ファイルに追記。(~/.bashrcや~/.zshrcなど)


~/.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を設定しますが好きなディレクトリに設定します。

自分はホームディレクトリに設定してます。(ホームディレクトリに設定する人が多い気がする)


~/.zshrc

export GOPATH=$HOME/go

PATH=$PATH:$GOPATH/bin

上記の記述を追加後

$ source ~./.zshrc

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

これで動くはず!

動かなかったらコメントでもください。


goenvのupdate

golangのlatest versionがインストール一覧に表示されないことがあります。

原因としては単純にgitのversionが古いからなので、localに最新版のgoenvを落としてきましょう。

$ cd $GOENV_ROOT

$ git pull origin master
$ goenv install -l


おまけ

プロジェクトごとのenvの設定などでgoのバージョンがグローバルじゃないのを使うことがあるはずだったので気をつけましょう。

goenvについてはどれもそんなに変わりませんが自分が使いやすいと思ったものにしました。インストールできるバージョンが見れないgoenvもあるので注意。