kann nicht heruntergeladen werden, $ GOPATH nicht gesetzt

Ich möchte json2csv mit go get github.com/jehiah/json2csv installieren, bekomme aber folgenden Fehler:

package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help go path

Irgendwelche Hilfe, wie man das auf MacOS beheben kann?

0
Ich habe das gleiche Problem mit einem anderen Paket (Pup). Gehen Sie zu den Betreuern, bitte machen Sie ein (OS X) Installationsprogramm, das den Job beendet! Das OS X-Installationsprogramm für Node ist ein gutes Beispiel. Die Verwendung von Node erfordert keine zusätzlichen manuellen Installationsschritte. Es funktioniert einfach. Ich hoffe, dass zukünftige Versionen des Go-Installers besser werden.
hinzugefügt der Autor jwfearn, Quelle
hinzugefügt der Autor Shog9, Quelle
hinzugefügt der Autor Damien MATHIEU, Quelle

14 Antworten

Your $GOROOT should not be set up. You $GOPATH should be set to $HOME/go by typing export $GOPATH=$HOME/go

Bitte geben Sie export GOROOT = "" ein, um Ihr Problem zu beheben.

0
hinzugefügt

Tun Sie einfach export GOPATH = "/ was auch immer/Sie/wie/Ihr/GOPATH/to/be" .

0
hinzugefügt
Wenn ich ein Go Noob bin, weiß ich noch nicht, "wo ich meinen GOPATH haben möchte". IMHO ist es ein Ziehen, dass es kein Standard GOPATH-Verhalten gibt, das von einer Umgebungsvariablen überschrieben werden kann.
hinzugefügt der Autor jwfearn, Quelle

Ich musste eine Anwendung als root ausführen (um einen Webserver auf Port 80 zu öffnen), dies verursachte den Fehler für mich, da der sudo-Benutzer eine andere Umgebung als der normale Benutzer hatte, daher wurde GOPATH nicht gesetzt.

Wenn jemand anderes dieses Problem hat, fügen Sie dem Befehl -E hinzu, damit die Benutzerumgebung erhalten bleibt.

sudo -E starten Sie main.go

For more infos see discussion here: Google Groups – GOPATH Problem

0
hinzugefügt
Nicht sicher, warum das abgelehnt wurde, aber es für mich repariert ...
hinzugefügt der Autor Pwdr, Quelle

Gebräu verwenden

Ich habe es mit brew installiert.

$ brew install go

Wenn es fertig ist, wenn Sie diesen Befehl zum Aufbrühen ausführen, werden folgende Informationen angezeigt:

$ brew info go
go: stable 1.4.2 (bottled), HEAD
Go programming environment
https://golang.org
/usr/local/Cellar/go/1.4.2 (4676 files, 158M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/go.rb
==> Options
--with-cc-all
    Build with cross-compilers and runtime support for all supported platforms
--with-cc-common
    Build with cross-compilers and runtime support for darwin, linux and windows
--without-cgo
    Build without cgo
--without-godoc
    godoc will not be installed for you
--without-vet
    vet will not be installed for you
--HEAD
    Install HEAD version
==> Caveats
As of go 1.2, a valid GOPATH is required to use the `go get` command:
  https://golang.org/doc/code.html#GOPATH

You may wish to add the GOROOT-based install location to your PATH:
  export PATH=$PATH:/usr/local/opt/go/libexec/bin

Die wichtigen Stücke dort sind diese Linien:

/usr/local/Cellar/go/1.4.2 (4676 Dateien, 158M) *

     

export PATH = $ PATH:/usr/lokal/opt/go/libexec/bin

Einrichten der GO-Umgebung

Das zeigt, wo GO installiert wurde. Wir müssen Folgendes tun, um GO's Umgebung einzurichten:

$ export PATH=$PATH:/usr/local/opt/go/libexec/bin
$ export GOPATH=/usr/local/opt/go/bin

Sie können dann überprüfen, ob Sie GO verwenden, um zu sehen, ob es richtig konfiguriert ist:

$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/usr/local/opt/go/bin"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.4.2/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.4.2/libexec/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"

Einrichten von json2csv

Sieht gut aus, also installieren wir json2csv :

$ go get github.com/jehiah/json2csv
$

Was ist gerade passiert? Es hat es installiert. Sie können dies wie folgt überprüfen:

$ $ ls -l $GOPATH/bin
total 5248
-rwxr-xr-x  1 sammingolelli  staff  2686320 Jun  9 12:28 json2csv

OK, also warum kann ich json2csv nicht in meine Shell eingeben? Das liegt daran, dass sich das Verzeichnis /bin unter $ GOPATH nicht in Ihrem $ PATH befindet.

$ type -f json2csv
-bash: type: json2csv: not found

Also lass es uns vorübergehend hinzufügen:

$ export PATH=$GOPATH/bin:$PATH

Und nochmal überprüfen:

$ type -f json2csv
json2csv is hashed (/usr/local/opt/go/bin/bin/json2csv)

Jetzt ist es da:

$ json2csv --help
Usage of json2csv:
  -d=",": delimiter used for output values
  -i="": /path/to/input.json (optional; default is stdin)
  -k=[]: fields to output
  -o="": /path/to/output.json (optional; default is stdout)
  -p=false: prints header to output
  -v=false: verbose output (to stderr)
  -version=false: print version string

Fügen Sie die Änderungen, die wir an $ PATH und $ GOPATH vorgenommen haben, zu Ihrem $ HOME/.bash_profile hinzu, damit sie zwischen Neustarts persistieren.

0
hinzugefügt

[Update: ab Go 1.8, GOPATH ist standardmäßig $ HOME/go , aber Sie können dies immer noch nützlich finden, wenn Sie den GOPATH Layout, anpassen, etc.]

Die offizielle Go-Site erläutert GOPATH und wie man ein Arbeitsbereichsverzeichnis erstellt .

export GOPATH="$HOME/your-workspace-dir/" -- run it in your shell, then add it to ~/.bashrc or equivalent so it will be set for you in the future. Go will install packages under src/, bin/, and pkg/, subdirectories there. You'll want to put your own packages somewhere under $GOPATH/src, like $GOPATH/src/github.com/myusername/ if you want to publish to GitHub. You'll also probably want export PATH=$PATH:$GOPATH/bin in your .bashrc so you can run compiled programs under $GOPATH.

Optional können Sie über Rob Pike auch CDPATH festlegen, damit es schneller geht cd um Pakete in bash zu packen: export CDPATH =.: $ GOPATH/src/github.com: $ GOPATH/src/golang.org/x bedeutet, dass Sie einfach Geben Sie cd net/html statt cd $ GOPATH/src/golang.org/x/net/html ein.

Keith Rarick Notizen können Sie GOPATH = $ HOME setzen Go's < Code> src/, pkg/ und bin/ Verzeichnisse direkt unter Ihrem Homedir. Das kann nett sein (zum Beispiel, Sie haben möglicherweise bereits $ HOME/bin in Ihrem Pfad), aber natürlich verwenden einige Leute mehrere Arbeitsbereiche usw.

0
hinzugefügt
Danke für die Information. Müssen Sie Ihren Arbeitsbereich für jedes einzelne Projekt ändern?
hinzugefügt der Autor Doug Molineux, Quelle
@ Tyguy7 Chancen sind Sie export es nicht; Führen Sie /bin/bash -c "echo \ $ GOPATH" aus, um zu überprüfen, ob die Unterprozesse $ GOPATH sehen können; Wenn es leer ist, führe export GOPATH aus und dann go get ...
hinzugefügt der Autor sanmai, Quelle
Im Allgemeinen, nein, Sie können einen Arbeitsbereich verwenden, dessen src/ z. github.com/youruser/x und github.com/youruser/y . Das ist, was ich tue. Die Leute könnten ihre Gründe haben, etwas anderes zu tun (Firmenpolitik, um Projekte auseinander zu halten?), Aber ich kann nicht damit sprechen.
hinzugefügt der Autor twotwotwo, Quelle
Welche Plattform (Windows oder Linux/OS X/anderes Unix)? Wenn nicht Windows, was sagt echo $ GOPATH ? Es könnte sich lohnen, eine separate Frage zu stellen. Es hört sich an, als wären Sie in einer ungewöhnlichen Situation, und das Debuggen von Kommentaren kann schwierig sein.
hinzugefügt der Autor twotwotwo, Quelle
$ GOPATH ist gesetzt, aber "kann nicht heruntergeladen werden, $ GOPATH ist nicht gesetzt. Für weitere Details siehe: go help gopath" erscheint trotzdem.
hinzugefügt der Autor Tyguy7, Quelle

Wenn dieses Problem auftritt, nachdem Sie $ GOPATH eingerichtet haben, liegt das möglicherweise daran, dass Sie es mit einer nicht unterstützten Shell ausführen. Ich habe fish verwendet und es hat nicht funktioniert, das Starten mit bash hat gut funktioniert.

0
hinzugefügt

Ein Video angucken

Generell empfehle ich dieses offizielle Video von Go, um einen schnellen Überblick zu bekommen:

http://www.youtube.com/watch?v=XCsL89YtqCs

Es ist einfacher, gezeigt zu werden als erzählt zu werden.

@jwfearn paraphrased the important part of the video:

export GOPATH = "$ {HOME}/gocode"; export PATH = "$ {PATH}: $ {GOPATH}/bin"; mkdir -p "$ {GOPATH}"

0
hinzugefügt
Ausgezeichnetes Einführungsvideo - ich verstehe es immer besser, wenn es mir gezeigt wird.
hinzugefügt der Autor Joshua Pinter, Quelle
Danke @jwfearn - Videos sind für Musik und andere Unterhaltung; kann nicht von ihnen kopieren und einfügen :-)
hinzugefügt der Autor kguest, Quelle

Dieser hat funktioniert

Go-Entwicklungsumgebung auf Ubuntu einrichten und $ GOPATH/$ GOROOT reparieren

Schritte

mkdir ~/go

Setze $ GOPATH in .bashrc,

export GOPATH=~/go
export PATH=$PATH:$GOPATH/bin
0
hinzugefügt
Link ist jetzt tot.
hinzugefügt der Autor Aman Deep Gautam, Quelle

Für MAC funktionierte das gut für mich.

sudo nano /etc/bashrc

und füge das unten am Ende der Datei hinzu

export PATH=$PATH:/usr/local/opt/go/libexec/bin
export GOPATH=/usr/local/opt/go/bin

Dies sollte das Problem beheben. Versuchen Sie, ein neues Terminal zu öffnen und $ GOPATH auszugeben, Sie sollten den korrekten Wert sehen.

0
hinzugefügt

(für MAC)

Ich habe alle diese Antworten ausprobiert, und aus irgendeinem noch unbekannten Grund arbeitete keiner von ihnen.

Ich musste den GOPATH "forcieren", indem ich die Umgebungsvariable für jeden Befehl einstellte, der sie benötigte. Beispielsweise:

sudo env GOPATH=$HOME/goWorkDirectory go build ...

Even glide was giving me the GOPATH not set error. Resolved it, again, by "force feeding": Ich habe alle diese Antworten ausprobiert, und aus irgendeinem noch unbekannten Grund arbeitete keiner von ihnen.

Ich musste den GOPATH "forcieren", indem ich die Umgebungsvariable für jeden Befehl einstellte, der sie benötigte.

sudo env GOPATH=$HOME/goWorkDirectory glide install

Hoffe, das hilft jemandem.

0
hinzugefügt

Ich fand es einfacher, es so zu machen:

export GOROOT=$HOME/go
export GOPATH=$GOROOT/bin
export PATH=$PATH:$GOPATH
0
hinzugefügt

Sie können die "Export" -Lösung genau so verwenden, wie andere vorgeschlagen haben. Ich möchte Ihnen eine weitere Lösung für dauerhaften Komfort zur Verfügung stellen: Sie können einen beliebigen Pfad als GOPATH verwenden, wenn Sie Go-Befehle ausführen.

Zuerst müssen Sie ein kleines Tool mit dem Namen gost herunterladen: https://github .com/byte16/gost/releases . Wenn Sie ubuntu verwenden, können Sie die Linux-Version herunterladen ( https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz ).

Dann müssen Sie die folgenden Befehle ausführen, um es zu entpacken:

$ cd /path/to/your/download/directory 
$ tar -xvf gost_linux_amd64.tar.gz

Sie würden eine ausführbare gost erhalten. Sie können es zur bequemeren Verwendung nach /usr/local/bin verschieben:

$ sudo mv gost /usr/local/bin

Führen Sie den folgenden Befehl aus, um den Pfad, den Sie als GOPATH verwenden möchten, in den Pfadbereich gost einzufügen. Es ist erforderlich, dem Pfad einen Namen zu geben, den Sie später verwenden würden.

$ gost add foo /home/foobar/bar     # 'foo' is the name and '/home/foobar/bar' is the path

Führen Sie einen beliebigen Go-Befehl im folgenden Format aus:

gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]

Beispiel: Sie möchten go get github.com/go-sql-driver/mysql mit /home/foobar/bar als GOPATH ausführen, tun Sie es einfach wie unten beschrieben :

$ gost get -p foo -- github.com/go-sql-driver/mysql  # 'foo' is the name you give to the path above.

Es würde Ihnen helfen, den GOPATH einzustellen und den Befehl auszuführen. Aber denken Sie daran, dass Sie den Pfad in gost s pathspace eingefügt haben. Wenn Sie sich unter einer beliebigen Ebene von Unterverzeichnissen von /home/foobar/bar befinden, können Sie einfach den folgenden Befehl ausführen, der das Gleiche kurz tun würde:

$ gost get -- github.com/go-sql-driver/mysql

gost is a Simple Tool of Go which can help you to manage GOPATHs and run Go commands. For more details about how to use it to run other Go commands, you can just run gost help goCmdName. For example you want to know more about install, just type words below in:

$ gost help install

You can also find more details in the README of the project: https://github.com/byte16/gost/blob/master/README.md

0
hinzugefügt

Führe 'go env' aus und schaue, wohin dein GOPATH gerade zeigt. Wenn Sie in dieses Verzeichnis wechseln, sollte Ihr Befehl 'go get..etc' funktionieren.

0
hinzugefügt

Dieses Problem ist mir in Raspberry Pi aufgefallen. Ich hatte mich über den VNC-Client angemeldet Das Problem blieb trotz Einstellung und Export des GOPATH bestehen. Dann lief der Befehl "go get" ohne Sudo und es funktionierte perfekt.

0
hinzugefügt