401

私は次のように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
4

24 に答える 24

383

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

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

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

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

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

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

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

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

クリスバンチの答えの更新版。)

于 2012-06-01T08:46:02.600 に答える
120

これが私の簡単なセットアップです:

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プロジェクト/サードパーティライブラリ用です(「goget」でダウンロード)。

于 2014-12-23T08:44:33.223 に答える
80

最初の実行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
于 2016-03-13T03:55:32.847 に答える
43

GOPATHここで説明されています:

環境GOPATH変数

GOPATHGoコード、パッケージオブジェクト、および実行可能ファイルを見つけることができるパスのコロンで区切られたリストに設定できます。

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

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

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

于 2011-11-01T19:01:29.170 に答える
20

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

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

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

于 2013-09-06T01:09:33.847 に答える
12

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

于 2015-06-12T03:13:27.717 に答える
11

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

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

$HOME/goそうなる。単一の最良の答えはありませんが、これは短くて甘いものであり、すでに存在する
場合にのみその名前を選択することが問題になる可能性があります。$HOME/goGOPATH

于 2016-10-25T11:03:59.683 に答える
7

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

CL GoReview53370を参照してください。

これgo toolで、は呼び出されたパスを使用して、Goインストールツリーのルートを見つけようとします
これは、Goのインストール全体が新しい場所に移動された場合でも、はgo tool通常どおり機能し続ける必要があることを意味します。

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

于 2017-08-06T06:52:52.407 に答える
7

通常、GOROOT明示的に設定しないでください。このコマンドは、自身のディレクトリの場所に基づいgoて適切なものを自動的に識別します。GOROOT


GOPATHデフォルトは$HOME/go。別の場所に配置する場合にのみ、明示的に設定する必要があります。

GOPATH含まれています:

  • を使用してインストールされたバイナリgo installは、$GOPATH/bin.¹ にあります
    • GOBINこの場所は、環境変数を使用してオーバーライドできます。
  • ダウンロードしたモジュールのソースコードとチェックサムのキャッシュ$GOPATH/pkg/mod
    • GOMODCACHEこの場所は、環境変数を使用してオーバーライドできます。

との両方を設定し、を設定しない場合GOBINGOMODCACHEそれGO111MODULE=off自体GOPATHは本質的に効果がないはずです。


さらに、レガシーGOPATHモード(GO111MODULE=offも設定されている場合)では、次のものGOPATHが含まれます。

  • パッケージのビルドに使用されるソースコード。ルートは。にあるディレクトリツリーに保存されます$GOPATH/src
  • を使用してインストールされた非バイナリgo installは、にあり$GOPATH/pkgます。

¹バイナリはGo1.17go get以前を使用してインストールすることもできますが、Go1.16以降go installで推奨されています。https://golang.org/doc/go1.16を参照してください。

于 2021-07-09T15:39:39.037 に答える
6

上記のように:

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

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

set GOPATH=D:\my_folder_for_go_code\

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

cd %GOPATH%
于 2014-08-11T07:59:17.420 に答える
5

GOPATH最新のGoでは、またはを設定する必要はありませんGOROOT。実際、非常に特殊なことをしているのでない限り、システムでそれらを設定解除するのが最善です。

Goモジュールを使用しますGoをインストールしたら、作業するディレクトリを選択します。それで:

$ mkdir example
$ cd example
$ go mod init example.com

モジュール名example.comは任意であることに注意してください。GitHubで作業を続ける場合、これはのようなものになる可能性がありますgithub.com/your-username/project-name

最後のコマンドでgo.modファイルが作成されます。今、あなたは依存関係をつかむことができますgo get

$ go get rsc.io/quote

次に、この依存関係を使用するコード:

$ touch main.go

これを入れてmain.goください:

package main

import (
    "fmt"

    "rsc.io/quote"
)

func main() {
    fmt.Println(quote.Go())
}

そして実行する:

$ go run .

doozer元の質問では、次のようにして依存関係を取得できます。

$ go get github.com/ha/doozer

doozerこれで、コードでモジュールを使用できます。等々。ディレクトリ内のファイルを調べて、go.modリストされている依存関係とそのバージョンを確認することもできます。各モジュールは自己完結型であり、独自のバージョンの依存関係があります。2つのモジュールを並べて使用できます。各モジュールにgo.modは、依存関係の異なるバージョンを指す独自のファイルがあります。モジュールが分離されているため、これはすべて正常に機能します。

詳細については、こちらの公式チュートリアルから始めてください。いくつかの章では、上記の手順を説明し、独自の再利用可能なモジュールとパッケージを作成し、それらを他のモジュールからインポートします。追加のインタラクティブなチュートリアルは、https://play-with-go.dev/で入手できます。

于 2021-07-02T14:08:50.603 に答える
4

答えはたくさんありますが、システム上にあるものをカットアンドペーストするロボットのように、実体はありません。GOROOT環境変数として設定する必要はありません。ただし、環境変数を設定する必要があります。設定しない場合は、デフォルトでフォルダに設定されます。GOPATH${HOME}/go/

PATHこの変数はを変更できる変数であるため、注意が必要なのは環境変数ですgo version。そうではありませんGOROOT!忘れてくださいGOROOT

これで、新しいものに切り替えるか変更するとgo version、ダウンロードしたパッケージはデフォルトの$HOME/goフォルダーを使用し、以前のものと混同されますgo version。これは良くない。

したがって、これはGOPATH、新しいのダウンロードされたパッケージを分離するために定義する必要がある場所ですgo version

要約すると、忘れてくださいGOROOT。についてもっと考えてくださいGOPATH

于 2021-02-11T14:43:53.203 に答える
2

GOPATHGOROOT構成は減価償却されます。

代わりにGOモジュールを使用できます。

例えば:

mkdir go_app
cd go_app
go mod init go_app
于 2021-08-19T20:54:43.397 に答える
1

これが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すべてを一箇所に置いてくれたらいいのにと思います。

于 2020-06-13T14:58:15.787 に答える
1

実行すると、コマンドgo help environmentで一覧表示できるすべての環境変数のドキュメントがありますgo env

于 2021-08-03T06:53:32.833 に答える
0

明示的に設定する必要はありません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コード、パッケージオブジェクト、および実行可能ファイルがあります。

GOPATHを設定して、goinstallを使用して、Goツリーの外部で独自のコードと外部ライブラリをビルドおよびインストールします(Makefileの記述を回避します)。

于 2019-07-10T20:42:01.453 に答える
0

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

setx GOPATH C:\mynewgopath
于 2020-02-15T13:50:06.917 に答える
-1

追加しなければなりませんでした

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

Mac OS Xの私の〜/.bash_profileに

于 2018-05-05T19:03:22.270 に答える
-1

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

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

于 2019-01-28T10:37:36.647 に答える
-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は、Golangのソースコードまたはワークスペースの場所です。

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

 GOPATH = C:\Users\<xyz>\GO_Workspace
于 2019-05-17T14:22:07.970 に答える
-1

すべての初心者にとって、export GOPATH=$HOME/goUbuntuを使用している場合、または詳細については、単純に行うことができgo help gopathます。

于 2021-07-17T13:09:34.550 に答える
-2

osxで、私はbrewをインストールしました、これが私のために働く設定です

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

GOROOT="/usr/local/Cellar/go/1.10/libexec"
于 2018-03-07T09:47:02.457 に答える
-3

distro goを使用している場合は、インクルードファイルがどこにあるかを指定する必要があります。次に例を示します。

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

(これはFedora 20用です)

于 2015-01-14T12:50:15.563 に答える
-3

値は(MACOS)である必要があります:

GOROOT="/usr/local/go" --> all binaries file core go
GOPATH="/Applications/proyectos/go" --> the route to workspace (custom workspace)
于 2020-03-22T05:28:53.910 に答える