質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

解決済

2回答

46674閲覧

【Go】結局、$GOPATHと$GOROOTはどこに設定すればいいの?

shotakeu

総合スコア386

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

3グッド

6クリップ

投稿2016/07/20 13:20

Goを勉強し始めようとしています。

そこでGoのインストールまでは行けたのですが、書籍やWebのリファレンスサイトによってGOPATHとGOROOTの指定がまちまちだなと感じました。

GOPATHはどこでもいいというリファレンスもあれば、$HOME/Work/goに指定すべき、などといった書籍もあり、結局どこに設定するのが一般的なのかがわかりません。

また状況によってはGOROOTも指定しなければならないというリファレンスもみかけます。

結局、どれになにを設定するのが正解なのでしょうか?
正解がなかったとしても一般的な設定はどれなのでしょうか?
GOPATH、GOROOTを設定することによってどんな影響があるのでしょうか・・・?

今Goを動かそうとしている環境がLubuntuのため、Linuxの場合の設定方法を聞きたいです。

おこがましいことですがbashなどの前提知識がないので、そのへんを考慮して回答いただけたら、と思います。

※皆さんからの率直な意見を聞きたいのでここでは調べたリファレンスや書籍はあえて明記しないでおこうと思います。

以上、よろしくお願いいたします。

mintspear, raccy, Paalon👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

$GOROOTについてですが、これを設定すべきな場面は非常に限られます。詳しくはこのリンクを参照していただきたいのですが、簡単に言えばaptとかgvmみたいなバージョンマネージャとかを使ってインストールしたのであれば設定する必要はないはずです。
$GOROOT$GOOS$GOARCHなどの環境変数の役割についてもさきほどのリンクで触れられています)


次に$GOPATHについて。これは少し事情が複雑になります。

まず$GOPATHの役割なのですが、Go言語でパッケージをimportしたりするときの解決先や、go getgo installをしたときのパッケージやバイナリのインストール先を決定すること等に使われます。
$GOPATHの役割についてはこの文章が分かりやすいです:https://github.com/astaxie/build-web-application-with-golang/blob/master/ja/01.2.md
なので$PATH$GOPATH/binを追加しなければいけません。

しかし、この場所をどこにしなければいけない、ということは特に定められていません。適当にそれっぽい名前のディレクトリにしてしまって問題ないです。(参考:GOPATH は適当に決めて問題ない - Qiita

ただし、このようにするとグローバルにインストールされたパッケージとプロジェクト毎のパッケージが混在してしまい問題になります。
昔はプロジェクト毎に$GOPATHを分けるなどして対処していたのですが、最近は(Go1.5になって)venderという機能が追加されある程度解決されました。
詳しい説明はこのリンクに譲りますが、glideというツールを使うといいと思います。


なにやらごちゃごちゃしてしまったのでまとめます。

  • $GOROOTは設定しなくてもよい(恐らくは)
  • $GOPATHは適当に決めた一箇所に設定する。
  • $PATH$GOPATH/binを追加する。
  • vendering管理ツールとしてglideを使う。

そして設定方法ですが、$HOMEディレクトリ直下にある.bashrcというファイル(隠しファイルになっています)に以下の内容を追記してください。

bash

1# ここでは仮にGOPATHを~/goということにします(別に他の場所でも構いません) 2export GOPATH="$HOME/go" 3export PATH="$GOPATH/bin:$PATH"

そしてglideのインストール方法と使い方ですが、端末を起動して、

console

1$ curl https://glide.sh/get | sh

でインストールできるはずです。使い方についてはさきほどのリンクを参考にしてください。

投稿2016/07/20 14:01

MakeNowJust

総合スコア545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shotakeu

2016/07/26 06:40

ありがとうございます、一番詳しく解説されていたので今回ベストアンサーとさせていただきます。
guest

0

$GOROOTの設定は不要です。
必要になる場合などは、以下を見ていただければよいかと思います。

参考: 【Go × Vim】 VimでGoを書く - 2015 Spring - Qiita

また、$GOPATHについてですが、これは本当にどこでもいいです。
私も気になったことがあり、GitHub などを見て独自調査した結果、以下が多かったです。 (ちなみに私は2番派です)
0. $HOME/go
0. $HOME/.go

投稿2016/07/20 13:41

ryunix

総合スコア1656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shotakeu

2016/07/26 06:41

回答ありがとう御座います。 しかしながらベストアンサーは一個しか選べないため一旦閉じるためにベストアンサーを設定しました。 ご丁寧な回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問