it-swarm.com.de

was sollen die Werte von GOPATH und GOROOT sein?

Ich versuche, Doozer so zu installieren

$ goinstall github.com/ha/doozer

Ich bekomme diese Fehler. 

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
239
jshen

GOPATH wird diskutiert in der cmd/go Dokumentation

Die Umgebungsvariable GOPATH listet Orte auf, an denen nach Go-Code gesucht werden soll. Auf Unix, der Wert ist eine durch Doppelpunkt getrennte Zeichenfolge. Unter Windows lautet der Wert eine durch Semikolon getrennte Zeichenfolge. In Plan 9 ist der Wert eine Liste.

GOPATH muss so eingestellt sein, dass Pakete außerhalb von .__ abgerufen, erstellt und installiert werden. Standard Go Baum.

GOROOT wird in den Installationsanweisungen beschrieben:

Die Go-Binärdistributionen setzen voraus, dass sie in .__ installiert werden. /usr/local/go (oder c:\Go unter Windows), es ist jedoch möglich, .__ zu installieren. die Go-Werkzeuge an einen anderen Ort. In diesem Fall müssen Sie das .__ einstellen. GOROOT Umgebungsvariable, die auf das Verzeichnis verweist, in dem sich .__ befand. Eingerichtet.

Wenn Sie beispielsweise Go in Ihrem Home-Verzeichnis installiert haben, sollten Sie .__ hinzufügen. die folgenden Befehle an $HOME/.profile:

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

Hinweis:GOROOT muss nur bei der Installation an einem benutzerdefinierten Speicherort festgelegt werden.

(aktualisierte Version von Chris Bunchs Antwort .)

222
pje

Hier ist mein einfaches Setup:

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 werden wie folgt festgelegt:

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

Also kurz gesagt:

GOROOT ist für Compiler/Tools, die aus der Go-Installation stammen.
GOPATH ist für eigene Go-Projekte/Bibliotheken von Drittanbietern (heruntergeladen mit "go get").

82
EvgenijM86

GOPATH wird diskutiert hier :

Die Umgebungsvariable GOPATH

GOPATH kann auf eine durch Doppelpunkte getrennte Liste von Pfaden gesetzt werden, in denen Go Code, Paketobjekte und ausführbare Dateien können gefunden werden.

Legen Sie eine GOPATH fest, um mit goinstall Ihren eigenen Code und .__ zu erstellen und zu installieren. externe Bibliotheken außerhalb des Go-Baums (und um das Schreiben von Makefiles zu vermeiden).

Und GOROOT wird diskutiert hier :

$GOROOT Die Wurzel des Go-Baums, häufig $HOME/go. Der Standardwert ist Elternteil des Verzeichnisses, in dem all.bash ausgeführt wird. Wenn Sie sich nicht entscheiden. Wenn Sie $GOROOT setzen, müssen Sie gomake anstelle von make oder gmake ausführen, wenn Entwicklung von Go-Programmen unter Verwendung der herkömmlichen Makefiles.

36
Chris Bunch

Starten Sie zuerst go env.
Wenn Sie feststellen, dass das Programm nicht installiert ist, können Sie es über Homebrew oder über Pakete und/oder andere Wege installieren.
Wenn Sie eine Ausgabe sehen, ist Ihr go installiert.
Es zeigt Ihnen alle Envs, die festgelegt sind und nicht.

Wenn Sie leer für GOROOT sehen:

  1. which go ausführen (Auf meinem Computer: /usr/local/go/bin/go)
  2. dann wie folgt exportieren export GOROOT=/usr/local/go

Wenn Sie leer für GOPATH sehen:

  1. Erstellen Sie in meinem Fall ein beliebiges Verzeichnis auf Ihrem Computer für Go-Projekte: ~/GO_PROJECTS
  2. dann export GOPATH=~/GO_PROJECTS
30
РАВИ

Ich habe die go help gopath-Dokumente gelesen und war immer noch unglaublich verwirrt, fand dieses kleine Nugget jedoch auf einer anderen Go-Dokumentseite:

Die Umgebungsvariable GOPATH gibt den Speicherort Ihres Arbeitsbereichs an. Es ist wahrscheinlich die einzige Umgebungsvariable, die Sie beim Entwickeln von Go-Code festlegen müssen.

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

14
Max

Der GOPATH sollte nicht auf die Go-Installation zeigen, sondern auf Ihren Arbeitsbereich (siehe https://golang.org/doc/code.html#GOPATH ). Wann immer Sie ein Paket mit go get oder go install installieren, landet es im GOPATH. Deshalb ist es warnt Sie, dass Sie auf jeden Fall tun k wollen zufällige Pakete aus dem Internet in die offizielle Installation abgeladen werden.

10
arganzheng

Ab go 1.8 (Q2 2017) wird GOPATH standardmäßig auf $ HOME/go eingestellt

Siehe Ausgabe 17262 und Rob Pikes Kommentar:

$HOME/go wird es sein.
Es gibt keine beste Antwort, aber diese ist kurz und bündig und es kann nur ein Problem sein, diesen Namen zu wählen, wenn $HOME/go bereits vorhanden ist. Dies ist nur für Experten der Fall, die bereits installiert sind und GOPATH verstehen.

8
VonC

Wie oben erwähnt:

Die Umgebungsvariable GOPATH gibt den Speicherort Ihres .__ an. Arbeitsplatz.

Für Windows funktionierte das bei mir (im Ms-dos-Fenster):

set GOPATH=D:\my_folder_for_go_code\

Dadurch wird eine GOPATH-Variable erstellt, die Ms-dos erkennt, wenn sie wie folgt verwendet wird:

cd %GOPATH%
7
tucson

Insbesondere in Bezug auf GOROOT wird es von Go 1.9 automatisch auf den Installationspfad gesetzt.
Auch wenn Sie mehrere Go-Versionen installiert haben, wird beim Aufrufen der 1.9.x-Version GOROOT auf /path/to/go/1.9 gesetzt (bevor, falls nicht festgelegt, ein Standardpfad wie /usr/local/go oder c:\Go verwendet wurde).

Siehe CL Go Review 5337 :

Das go tool verwendet jetzt den Pfad, von dem aus es aufgerufen wurde, um den Stamm des Go-Installationsbaums zu lokalisieren.
Dies bedeutet, dass, wenn die gesamte Go-Installation an einen neuen Speicherort verschoben wird, der go tool wie gewohnt weiterarbeiten sollte.

Dies kann durch Setzen von GOROOT in der Umgebung außer Kraft gesetzt werden. Dies sollte nur unter ungewöhnlichen Umständen geschehen.
Beachten Sie, dass dies keine Auswirkungen auf das Ergebnis der Funktion runtime.GOROOT() hat, die weiterhin den ursprünglichen Installationsort angibt. Dies kann in späteren Versionen behoben werden.

2
VonC

in osx habe ich with brew installiert

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

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

Es gibt auch einen Fall, in dem go alle Go-Dateien zusammenstellt, wenn wir go verwenden.

Nehmen wir also an, wir hätten eine Datei main.go und später haben wir die aktuelle Datei in main_old.go geändert und dann unsere neue main.go - Datei hinzugefügt. Wenn wir dann unsere App erstellen, werden alle go-Dateien kompiliert. Daher ist der Fehler möglicherweise auf einen Kompilierungsfehler in einigen anderen go-Dateien zurückzuführen.

0
Jino Jossy

Ich musste anhängen

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

zu meinem ~/.bash_profile unter Mac OS X

0
Shammi Shailaj

Nach der Installation von Go lang ist GOROOT das Stammverzeichnis der Installation.

Wenn ich die Binärdatei "Go Lang" im Verzeichnis "Windows C: \" aufgelöst habe, sollte "GOROOT" "C:\go" lauten. Bei der Installation mit dem Windows-Installationsprogramm kann es sich bei 64-Bit-Paketen um C:\Programme\go (oder C:\Programme (x86)\go) handeln.

 GOROOT = C:\go

während mein GOPATH der Speicherort von Go Lang-Quellcode oder -Arbeitsbereich ist.

Wenn sich mein Go Lang-Quellcode unter C:\Users \\ GO_Workspace befindet, ist Ihr GOPATH wie folgt:

 GOPATH = C:\Users\<xyz>\GO_Workspace
0
Anamika Patel