Golang のインストールと PATH の設定について最新の情報でまとめました。
Goのインストール
バイナリインストール
公式サイトからバイナリをダウンロードして展開します。パッケージインストーラでインストールする場合は.pkg
のファイルをダウンロードしてください。
$ curl -O https://storage.googleapis.com/golang/go1.8.darwin-amd64.tar.gz $ tar -C /usr/local/src -xzf go1.8.darwin-amd64.tar.gz
Getting Started - The Go Programming Language
Downloads - The Go Programming Language
Go バイナリは/usr/local/go
にインストールされることを想定しているため、上記のように別の場所にインストールするとGOROOT
の設定が必要です。$GOROOT/bin
への PATH も通しておきましょう。
$ /usr/local/src/go/bin/go version go: cannot find GOROOT directory: /usr/local/go $ echo 'export GOROOT="/usr/local/src/go"' >> ~/.bash_profile $ echo 'export PATH="$GOROOT/bin:$PATH"' >> ~/.bash_profile $ exec $SHELL -l $ go env GOROOT /usr/local/src/go $ echo $GOROOT /usr/local/src/go $ go version go version go1.8 darwin/amd64
アンインストールする場合は Go のディレクトリを削除するだけです。
goenvを使用してインストール
おなじみの env シリーズですが goenv はいくつか種類があるので Homebrew でインストールできるものを使用します。
$ brew install goenv $ goenv -v goenv 1.0.0 $ brew info goenv goenv: stable 1.0.0, HEAD Go version management https://github.com/syndbg/goenv /usr/local/Cellar/goenv/1.0.0 (123 files, 228.0KB) * Built from source on 2017-04-01 at 16:22:33 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/goenv.rb $ echo 'eval "$(goenv init -)"' >> ~/.bash_profile $ exec $SHELL -l
Go をインストールします。Tab で補完がきくのでインストールできるバージョンを確認します。インストールできたらgoenv global
で使用するバージョンを指定してください
$ goenv install 1.8.0 $ goenv global 1.8.0 $ goenv version 1.8.0 (set by /Users/tasukujp/.goenv/version) $ go version go version go1.8 darwin/amd64
goenv を使用した場合GOROOT
はgo
コマンドを実行した時に自動的に設定されます。
$ go env GOROOT /Users/tasukujp/.goenv/versions/1.8.0
GitHub - syndbg/goenv: Like pyenv and rbenv, but for Go.
Homebrewでインストール
Homebrew でも簡単にインストールすることができます。古いバージョンの Go も対応しています。
$ brew install go $ brew install go@1.7 $ brew install go@1.6
GOPATH環境変数の設定
GOPATH
は Go を開発する作業ディレクトリになります。1.8
からはデフォルトでgo
コマンド実行時に$HOME/go
が GOPATH にセットされます。1.7
以前のバージョンを使用する場合は必ず設定する必要があることに注意しましょう。また、1.8
を使用する場合であっても環境変数を上書きすれば別の場所を GOPATH として使うこともできます。Go をインストールしたGOROOT
を指定してはいけません。
$ go version go version go1.8 darwin/amd64 $ go env GOPATH /Users/tasukujp/go ... $ go version go version go1.7.5 darwin/amd64 $ go env GOPATH # ←設定されない
GOPATH
を指定しないでgo get
すると以下のメッセージが表示されて実行できませんね。
$ go get github.com/Masterminds/glide package github.com/Masterminds/glide: cannot download, $GOPATH not set. For more details see: go help gopath
GOPATH 配下にはgo get
でインストールしたパッケージ ( RubyのGemみたいなイメージ ) も格納されるため、パッケージのコマンドを実行できるように$GOPATH/bin
にも PATH を通しておきましょう。
$ echo 'export GOPATH="$HOME/.go"' >> ~/.bash_profile $ echo 'export GOPATH="$GOPATH/bin:$PATH"' >> ~/.bash_profile $ exec $SHELL -l $ go env GOPATH /Users/tasukujp/.go
プロジェクト毎にディレクトリを分けたい場合は direnv を使うといいかもしれません。
プロジェクト毎に必要なパッケージはパッケージ管理ツールを使用して ( RubyでいうBundler ) 共通的に使うパッケージはgo get
でそのまま GOPATH 配下にインストールしていくのがよさそうです。
試しにパッケージ管理ツールのglide
とクロスコンパイル用のgox
をインストールしてみましょう。
$ go get github.com/Masterminds/glide $ go get github.com/mitchellh/gox $ glide -v glide version 0.13.0-dev
インストールされたGOPATH
のディレクトリは以下のような構成になっています。
$ tree ~/.go/ -L 3 /Users/tasukujp/.go/ ├── bin │ ├── glide │ └── gox ├── pkg │ └── darwin_amd64 │ └── github.com └── src └── github.com ├── Masterminds └── mitchellh
HelloWorld
最後にお約束の HelloWorld です。hello/hello.go
に次のコードを記述します。
package main import "fmt" func main() { fmt.Printf("hello, world\n") }
go run
コマンドでファイルを指定して実行して下さい。go build
をディレクトリ内で実行すると実行可能なバイナリファイルが作成されます。
$ go run hello.go hello, world $ go build $ ls hello hello.go $ ./hello hello, world
公式には日本語訳されたサイトもありますが情報が最新ではなかったりするのでなるべく公式ドキュメントを見たほうがよさそうです。