GOPATHとGOROOTの値は何ですか?


323

私はこのようにdoozerをインストールしようとしています:

$ goinstall github.com/ha/doozer

これらのエラーが発生します。

goinstall: os: go/build: package could not be found locally
goinstall: fmt: go/build: package could not be found locally
goinstall: io: go/build: package could not be found locally
goinstall: reflect: go/build: package could not be found locally
goinstall: math: go/build: package could not be found locally
goinstall: rand: go/build: package could not be found locally
goinstall: url: go/build: package could not be found locally
goinstall: net: go/build: package could not be found locally
goinstall: sync: go/build: package could not be found locally
goinstall: runtime: go/build: package could not be found locally
goinstall: strings: go/build: package could not be found locally
goinstall: sort: go/build: package could not be found locally
goinstall: strconv: go/build: package could not be found locally
goinstall: bytes: go/build: package could not be found locally
goinstall: log: go/build: package could not be found locally
goinstall: encoding/binary: go/build: package could not be found locally

3
@Motin上記のリンクは無効になりました
Jorrit Reedijk、2015年

ファイルはプロジェクトで使用されなくなりました。OSXに関連する関連する問題は、こちらにあります:github.com/go-lang-plugin-org/go-lang-idea-plugin/issues/841
Motin

注:デフォルトでGOPATHは、Go 1.8(2017)で設定されます。以下の私の回答を
VonC

ええ、私もこれらが混乱していることに気づきました。godocsの構成方法です。この助け:albertech.blogspot.com/2017/01/...

1
@BenyaminJafari goinstallは、本当に古代のGo1より前であり、2012
Dave C

回答:


310

GOPATHドキュメントで説明されていcmd/goます

GOPATH環境変数リストのGoコードを探すための場所。Unixでは、値はコロンで区切られた文字列です。Windowsでは、値はセミコロンで区切られた文字列です。プラン9では、値はリストです。

GOPATH 標準のGoツリーの外でパッケージを取得、ビルド、インストールするように設定する必要があります。

GOROOTインストール手順で説明されています

Goバイナリディストリビューションは、Windows に/usr/local/go(またはc:\GoWindowsに)インストールされることを前提としていますが 、Goツールを別の場所にインストールすることもできます。この場合、GOROOT環境変数を、それがインストールされたディレクトリを指すように設定する必要があり ます。

たとえば、Go to your home directoryをインストールした場合は、次のコマンドをに追加する必要があります$HOME/.profile

export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin

注: GOROOTカスタムの場所にインストールする場合にのみ設定する必要があります。

Chris Bunchの回答の更新バージョン。)


44
GOPATHに関するより包括的な情報は、How to Write Go Codeにあります。goコマンド を理解するために必要な情報を把握することは、Goでの作業に不可欠です。たとえばgoinstall、OPでのの使用はになりますgo get
ソニア

13
goの実際のインストールパスにも注意してください。たとえば、デフォルトの自作のセットアップでは、自作はgo inにインストールされ/usr/local/Cellar/go/ます。この場合、エクスポートパスはexport GOROOT=/usr/local/Cellar/go/{version}およびで設定する必要がありexport PATH=$PATH:$GOROOT/binます。
ekillaby 2013年

10
私はexport GOROOT=/usr/local/Cellar/go/1.2/libexec/brewで作業するためにやらなければなりませんでした。
Steven Soroka 2014

:しかし、アプリは私の編集が未フォーマット(おかげでたくさんのSOそうでない)コード「を含むように見える」と文句を言いますので、私はこの編集を提案することはできません
ワイルドカード

Go 1.10以降、GOROOTが設定されていない場合、goツールは独自の場所でそれを見つけようとします。Stack ExchangeのiOSアプリでは貼り付けが機能しないため、リンクを貼り付けることもできません。今はとてもイライラしています。
ワイルドカード

97

これが私の簡単な設定です:

directory for go related things: ~/programming/go
directory for go compiler/tools: ~/programming/go/go-1.4
directory for go software      : ~/programming/go/packages

GOROOT、GOPATH、PATHは次のように設定されます。

export GOROOT=/home/user/programming/go/go-1.4
export GOPATH=/home/user/programming/go/packages
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

つまり、要するに:

GOROOTは、goインストールに由来するコンパイラー/ツール用です。
GOPATHは、独自のgoプロジェクト/サードパーティライブラリ(「go get」でダウンロード)用です。


フォルダー構造に対するマッピングがあるので、この答えは理解しやすいと思います。
h-rai

GOPATHには、プロジェクトツリー全体(gitなど)とgo以外のファイル(イメージ、スクリプト、ビルドファイルなど)が含まれていますか?
Serge Merzliakov、

52

最初の実行go env
goがインストールされていない場合は、homebrewパッケージまたはその他の方法でインストールできます。
出力Goが表示されている場合は、インストールされています。
設定されている環境と設定されていない環境がすべて表示されます。

空の場合GOROOT

  1. ファイル名を指定して実行which go(私のコンピュータの場合:/usr/local/go/bin/go
  2. 次に、このようにエクスポートします export GOROOT=/usr/local/go

空の場合GOPATH

  1. 私の場合、goプロジェクト用にコンピューター上の任意の場所にディレクトリを作成します。 ~/GO_PROJECTS
  2. その後 export GOPATH=~/GO_PROJECTS

2
which go私のためにやった。Chocolateyを使用した以前のインストールとは別のgoインストール場所を使用していました。そのフォルダーを削除し、PATH変数から削除しました。今では動作します。ありがとう!
sgarg 2016年

which goコマンドは、私は、このコマンドを実行する必要がどこに見つけるにはどうすればよいのWindows 7での私のために動作しませんでした
firstpostcommenter

対応するWindowsコマンドはwhere go、実行されたファイルのパスを表示します
Falco

export GOPATH=~/GO_PROJECTS仕事をしました
Thamaraiselvam '10 / 10/19

39

GOPATHここで議論されています

GOPATH環境変数

GOPATH コロンで区切られたパスのリストに設定でき、その中にGoコード、パッケージオブジェクト、実行可能ファイルが含まれます。

GOPATHgoinstallを使用して、Goツリーの外部に独自のコードと外部ライブラリをビルドおよびインストールするように設定します(Makefileの作成を回避します)。

そしてここGOROOTで議論されます

$GOROOTGoツリーのルート$HOME/go。デフォルトでall.bashは、が実行されるディレクトリの親になります。setを選択しない場合$GOROOT、従来のmakefileを使用してGoプログラムを開発するときは、makeまたはgmakeではなくgomakeを実行する必要があります。


だから〜/ projects / goにインストールした場合、変数の値はosやfmtなどを見つけるためにどうすればよいですか?
jshen

2
では、Goはどこにインストールしますsudo apt-get install golangか?
weberc2

9
@ weberc2実行go envすると、その情報が表示されるはずです。私にとってはそれでした/usr/lib/go/
Andre

19

私はgo help gopathドキュメントを読み、それでも信じられないほど混乱していましたが、別のgo docページからこの小さなナゲットを見つけました:

GOPATH環境変数は、ワークスペースの場所を指定します。Goコードの開発時に設定する必要がある唯一の環境変数です。

http://golang.org/doc/code.html#GOPATH


10

GOPATHはGoインストールではなく、ワークスペースを指す必要があります(https://golang.org/doc/code.html#GOPATHを参照)。go getまたはgo installでパッケージをインストールすると、GOPATH内に配置されます。これが警告を表示する理由です。インターネットからのランダムなパッケージを公式のインストールにダンプすることは絶対に望まないということです。


9

go 1.8(2017年第2四半期)以降、GOPATHはデフォルトで$ HOME / goに設定されます

問題17262とRob Pikeのコメントを参照してください。

$HOME/goそうなる。
単一のベストアンサーはありませんが、これは短くて甘いです。$HOME/goすでに存在している場合にのみその名前を選択することは問題になることがありGOPATHます。


シンプルなトピックを複雑にするにはどうすればよいでしょうか。ここで最良の答えをありがとう。
dodgy_coder

実は@dodgy_coder ...私の他の答えの最初の2行を見て:stackoverflow.com/a/37905102/6309 ;)でも簡単であるないに終わるかもしれない:全くもっとGOPATH!stackoverflow.com/a/48914523/6309の詳細。
VonC、

はい、同意します。デフォルトを使用する場合、GOPATHは実際には必要ありません。正しいですか?Google App Engine(Go Standard)開発環境で必要になるため、とにかく設定する必要がありました。実際にはGOPATHを設定するように指示されていますが、設定する値は指示されていません。
dodgy_coder

@dodgy_coderはい、デフォルトで、Goは事前に設定された固定値でプロジェクトPATHを探します。
VonC

6

上記のように:

GOPATH環境変数は、ワークスペースの場所を指定します。

Windowsの場合、これは私のために(Ms-dosウィンドウで)機能しました:

set GOPATH=D:\my_folder_for_go_code\

これにより、次のように使用するとMs-dosが認識するGOPATH変数が作成されます。

cd %GOPATH%

3

GOROOT具体的には、ゴー1.9は、インストール・パスに自動的に設定されます。
複数のGoがインストールされている場合でも、1.9.xを呼び出すと、次のように設定さGOROOTれます/path/to/go/1.9(設定されていない場合は、/usr/local/goまたはのようなデフォルトのパスが想定されますc:\Go)。

CL Goレビュー53370を参照してください。

go tool今それは木をインストール行くのルートを見つけるために試みるために呼び出されたパスを使用します
つまり、Goのインストール全体を新しい場所に移動しても、はgo tool通常どおり機能します。

これはGOROOT、環境での設定によってオーバーライドされる場合があります。これは、異常な状況でのみ実行する必要があります。
これは、元のインストール場所を報告し続けるruntime.GOROOT()関数の結果には影響しないことに注意してください。これは、今後のリリースで修正される可能性があります。


0

2020およびGoバージョン1.13以降、WindowsでGOPATHを更新する最善の方法は、コマンドプロンプトに入力することです。

setx GOPATH C:\mynewgopath

0

これが1つのソリューションです(シングルユーザー)。

GOROOT=$HOME/.local # your go executable is in $GOROOT/bin
GOPATH=$HOME/.gopath
PATH=$GOROOT/bin:$GOPATH/bin:$PATH

goに変更.gopathすると文句を言います.go

私は彼らがrust/cargoみんなのやり方と一緒に行き、すべてを一か所に置いてくれることを望みます。




-1

goを使用すると、すべてのgoファイルがコンパイルされる場合もあります。

たとえばmain.goというファイルが1つあり、後で現在のファイルをmain_old.goに変更して、新しいmain.goファイルを追加したとします。次に、アプリをビルドすると、すべてのgoファイルがコンパイルされます。したがって、発生しているエラーは、他のいくつかのgoファイルのコンパイルエラーが原因である可能性があります。


-1

Go langがインストールされると、GOROOTがインストールのルートディレクトリになります。

WindowsのC:\ディレクトリにGo Langバイナリを展開すると、私のGOROOTはC:\ goになります。Windowsインストーラーでインストールした場合は、C:\ Program Files \ go(または64ビットパッケージの場合はC:\ Program Files(x86)\ go)になります。

 GOROOT = C:\go

私のGOPATHはGo langソースコードまたはワークスペースの場所です。

Go langソースコードがC:\ Users \\ GO_Workspaceにある場合、GOPATHは次のようになります。

 GOPATH = C:\Users\<xyz>\GO_Workspace

-1

明示的に設定する必要はありませんGOROOT(Goの最新バージョンでは、実行するgoバイナリの場所に基づいて独自に設定できます)。

また、を使用しようとすると、次のエラーが発生しましたvgo

go: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'

GOROOTを削除し、GOPATHを更新して問題をexport GO111MODULE="on"解決しました。

GOPATHはこちらをご覧ください

GOPATHには、コロンで区切られたパスのリストを設定できます。その中に、Goコード、パッケージオブジェクト、実行可能ファイルが含まれています。

Goinstallを使用してGOPATHを設定し、Goツリーの外に独自のコードと外部ライブラリをビルドしてインストールします(Makefileの作成を回避します)。



-3

ディストリビューションを使用している場合は、インクルードファイルの場所を指定する必要があります。次に例を示します。

$ rpm -ql golang | grep include
/usr/lib/golang/include

(これはFedora 20用です)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.