GolangのGOPATHやGOROOTについて

こんにちは、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を追加する作業ですね。実際の設定を見ると以下のような感じです。

基本的にこの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に

このように設定してやれば大丈夫です。GOROOTの役割がわかりましたね。

ちなみに余談ですが$GOPATHは外部から取得したパッケージをビルドしたりインストールするのに必要な環境変数ですが、これを実行するgo get、このコマンドによって得た内容をGOPATHの最初のパスにダウンロードするという役割があります。

そのため、通常でしたら$HOME/goとした場合自分のプロジェクトと外部からとってきたパッケージが1つのディレクトリに混在するのですが、以下のようにしてやることでプロジェクトはworkspace、外部パッケージはpackageへダウンロードするよう切り分けが出来ます。

これで管理も綺麗になりますね。

それでは良い開発ライフを〜

スポンサーリンク
336 x 280 レクタングル(大)
336 x 280 レクタングル(大)