web-dev-qa-db-ja.com

GOPATHとGOROOTの値は何ですか?

私はこのような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
270
jshen

GOPATHは/ cmd/goドキュメンテーションの で説明されています

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

GOPATHは標準のGoツリーの外でパッケージを取得、ビルド、インストールするために設定されなければなりません。

GOROOTで説明されています

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

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

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

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

Chris Bunch's answer の更新版)

246
pje

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

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は外出先インストールから来るコンパイラ/ツールのためです。
GOPATHはあなた自身のgoプロジェクト/サードパーティのライブラリ用です( "go get"と共にダウンロードされます)。

90
EvgenijM86

最初にgo envを実行してください。
外出先がインストールされていないと思われる場合は、自作またはパッケージまたはその他の方法でインストールできます。
あなたが出力を見ているなら、あなたの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
39
РАВИ

ここではGOPATHについて説明します:

GOPATH環境変数

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

Goinstallを使用してGoツリーの外部で独自のコードと外部ライブラリを構築およびインストールするためのGOPATHを設定します(そしてMakefileを記述しないようにします)。

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

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

38
Chris Bunch

私はgo help gopathのドキュメントを読みましたが、まだ非常に混乱していましたが、他のgoドキュメントページからこの小さなナゲットを見つけました:

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

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

15
Max

GOPATHはではなく、Goのインストール先を指している必要があります( https://golang.org/doc/code.html#GOPATH を参照)そのため、GOPATH内にインストールされてしまいますので、間違いなくnotインターネットからランダムパッケージをあなたの公式インストールにダンプしたい)と警告しています。

10
arganzheng

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

issue 17262 およびRob Pikeのコメントを参照してください。

$HOME/goです。
$HOME/goが既に存在する場合にその名前を選択することは問題となり得ます。これは、既にインストールされており、GOPATHname__を理解している専門家にとっては幸いです。

8
VonC

上記のように:

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

Windowsでは、これは私にとってはうまくいきました(Ms-dosウィンドウで):

set GOPATH=D:\my_folder_for_go_code\

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

cd %GOPATH%
7
tucson

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

CL Go Review 53370 を参照してください。

go tool はGoインストールツリーのルートを探すために呼び出されたパスを使うようになりました.
つまり、Goのインストール全体を新しい場所に移動しても、go toolは通常どおりに機能し続けるはずです。

これは環境内でGOROOTを設定することによって上書きされるかもしれません。これは異常な状況でのみ行われるべきです。
これは runtime.GOROOT()関数 の結果には影響しないことに注意してください。これは元のインストール場所を報告し続けるためです。これは後のリリースで修正されるかもしれません。

2
VonC

oSXで、私は醸造でインストールされている、ここで私のために働く設定です

GOPATH="$HOME/my_go_work_space" //make sure you have this folder created

GOROOT="/usr/local/Cellar/go/1.10/libexec"
0
Edwin Ikechukwu

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

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

0
Jino Jossy

追記しなければならなかった

export GOROOT=/usr/local/Cellar/go/1.10.1/libexec

mac OS Xではmy〜/ .bash_profile

0
Shammi Shailaj

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
0
Anamika Patel