※こちらの情報は最新のGo1.16(2021.7現在)では古いものとなっています。 Goの環境構築に関しては下記を参照ください。 tech.librastudio.co.jp
こんにちは、daihaseです。
Goの環境をインストールする際など、ググるとよくGOROOTやGOPATHについて色々出てくると思います。こちらどういった環境にするかにもよりますが、基本的に以下のように考えて問題ありません。
- GOROOTは基本設定しなくて良い
- GOPATHは個人がGoのプロジェクトを配置したい場所に(例: $HOME/go など)
- GOPATHに合わせたPATHの設定を行う ($HOME/goならば$GOPATH/bin)
特にGOPATHに関しては、昔はこのGOPATHをわけることもありましたが、Go1.8よりプロポーザルによりGOPATHが未設定の場合、デフォルトで$HOME/goとなるようになりました。
3つ目のは$PATHに$GOPATH/binを追加する作業ですね。実際の設定を見ると以下のような感じです。
export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin
基本的にこの2つが設定してあればGoを使う環境としては完了です。 では1つ目のGOROOTは一体何なのか?
これは一言でいうと自分でGoをインストールする場所を変えたい場合に設定するものです。実際にGoをインストールした後にgo envとターミナルで実行すればわかりますが、GOROOTはインストール方法によって自動で決定されます。
MacのHomebrewでインストールした場合 /Users/daihase/usr/local/Cellar/go/1.10/libexec、
LinuxのUbuntuでaptからインストールした場合は /usr/lib/go
など。
GOROOTは例えばLinuxのバイナリを/usr/local/goに展開する想定となっているのを、手動で置き換えた場合に設定する値ということですね。
公式にも書いてますが、例えばホームディレクトリに設定したければ、.profileや.zshrcに
export GOROOT=$HOME/go export PATH=$PATH:$GOROOT/bin
このように設定してやれば大丈夫です。GOROOTの役割がわかりましたね。
ちなみに余談ですが$GOPATHは外部から取得したパッケージをビルドしたりインストールするのに必要な環境変数ですが、これを実行するgo get、このコマンドによって得た内容をGOPATHの最初のパスにダウンロードするという役割があります。
そのため、通常でしたら$HOME/goとした場合自分のプロジェクトと外部からとってきたパッケージが1つのディレクトリに混在するのですが、以下のようにしてやることでプロジェクトはworkspace、外部パッケージはpackageへダウンロードするよう切り分けが出来ます。
# GOPATH, GOROOT export GOPATH=$HOME/go/package:$HOME/go/workspace export PATH=$HOME/go/package/bin:$HOME/go/workspace/bin:$PATH
これで管理も綺麗になりますね。
それでは良い開発ライフを〜