私はこのような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
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 の更新版)
これが私の簡単な設定です。
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"と共にダウンロードされます)。
最初にgo env
を実行してください。
外出先がインストールされていないと思われる場合は、自作またはパッケージまたはその他の方法でインストールできます。
あなたが出力を見ているなら、あなたのgoはインストールされています。
設定されている環境とそうでない環境がすべて表示されます。
GOROOT
が空の場合:
which go
を実行します(私のコンピューター:/usr/local/go/bin/go
)export GOROOT=/usr/local/go
GOPATH
が空の場合:
~/GO_PROJECTS
export GOPATH=~/GO_PROJECTS
ここではGOPATH
について説明します:
GOPATH
環境変数
GOPATH
はコロンで区切られたパスのリストに設定され、その中にGoコード、パッケージオブジェクト、および実行可能ファイルがあります。Goinstallを使用してGoツリーの外部で独自のコードと外部ライブラリを構築およびインストールするための
GOPATH
を設定します(そしてMakefileを記述しないようにします)。
そしてGOROOT
はここで議論されます:
$GOROOT
Goツリーのルート。通常は$HOME/go
です。これはデフォルトでall.bash
が実行されるディレクトリの親になります。$GOROOT
を設定しないことを選択した場合は、従来のmakefileを使用してGoプログラムを開発するときにmakeまたはgmakeの代わりにgomakeを実行する必要があります。
私はgo help gopath
のドキュメントを読みましたが、まだ非常に混乱していましたが、他のgoドキュメントページからこの小さなナゲットを見つけました:
GOPATH環境変数は、ワークスペースの場所を指定します。 Goコードを開発するときに設定する必要がある唯一の環境変数です。
GOPATHはではなく、Goのインストール先を指している必要があります( https://golang.org/doc/code.html#GOPATH を参照)そのため、GOPATH内にインストールされてしまいますので、間違いなくnotインターネットからランダムパッケージをあなたの公式インストールにダンプしたい)と警告しています。
Go 1.8(2017年第2四半期)以降、GOPATHはデフォルトで$ HOME/goに設定されます。
issue 17262 およびRob Pikeのコメントを参照してください。
$HOME/go
です。$HOME/go
が既に存在する場合にその名前を選択することは問題となり得ます。これは、既にインストールされており、GOPATH
name__を理解している専門家にとっては幸いです。
上記のように:
GOPATH環境変数は、ワークスペースの場所を指定します。
Windowsでは、これは私にとってはうまくいきました(Ms-dosウィンドウで):
set GOPATH=D:\my_folder_for_go_code\
これは、Ms-dosが次のように使用されたときに認識するGOPATH変数を作成します。
cd %GOPATH%
特に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()
関数 の結果には影響しないことに注意してください。これは元のインストール場所を報告し続けるためです。これは後のリリースで修正されるかもしれません。
oSXで、私は醸造でインストールされている、ここで私のために働く設定です
GOPATH="$HOME/my_go_work_space" //make sure you have this folder created
GOROOT="/usr/local/Cellar/go/1.10/libexec"
また、goを使うとすべてのgoファイルがコンパイルされることもあります。
1つのファイルmain.goがあり、後で現在のファイルをmain_old.goに変更してから新しいファイルを追加したとします。 main.goファイル。それから我々が我々のアプリを構築するとき、すべてのgoファイルはコンパイルされるでしょう。したがって、発生しているエラーは他のgoファイルのコンパイルエラーが原因である可能性があります。
追記しなければならなかった
export GOROOT=/usr/local/Cellar/go/1.10.1/libexec
mac OS Xではmy〜/ .bash_profileに
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