Ich versuche, mein benutzerdefiniertes Paket für meine Datei main.go zu installieren. Als ich jedoch rannte
go install custom.go
Ich habe diesen Fehler bekommen
go install: no install location for .go files listed on command line (GOBIN not set)
Wie stelle ich GOBIN ein?
go install
Installiert Pakete, nicht einzelne Dateien. Bitte lesen Sie golang.org/cmd/go und sehen Sie, wie Sie Ihre Dateien einrichten.Antworten:
Überprüfen Sie Ihre
GOPATH
Variable.Stelle sicher:
Siehe GOPATH-Umgebungsvariable (wobei 'DIR' ein
GOPATH
Ordner ist):Dieser Thread zeigt beispielsweise, was passiert, wenn ein Go-Build außerhalb von
GOPATH/src
:Siehe Go Build
Wenn Sie fertig sind
go build
, können Sie auch eingo install
(Neincustom.go
) versuchen : Sie möchten das Paket installieren, nicht eine einzelne Datei.quelle
Ich habe den GOBIN-Pfad festgelegt und das hat bei mir funktioniert
quelle
cannot install, GOBIN must be an absolute path
:(..
oder~
in dem von Ihnen angegebenen Pfad verwendet? Ich habe diesen Fehler bekommen und bin einfach zu einem absoluten Pfad wie/home/ben/bin/
oder sogar gewechselt$HOME/bin/
. Mein voller Befehl war (in Fischschale, gehen Sie v1.11)env GOBIN=$HOME/bin/ go install testfile.go
.Als Anfänger bin ich auf diesen Fehler gestoßen, als ich verschiedene go-Befehle ausprobiert habe (Erstellen, Ausführen und Installieren). Kurz gesagt, kann man nicht gehen installiert eine filename.go . Sie können nur ein Paket installieren.
Das war verwirrend, weil ich das gelernt hatte:
funktioniert super. Aber ich konnte nicht herausfinden, warum die Installation nicht funktionieren würde:
Egal in welchem Verzeichnis ich war:
Diese Verwirrung ist, weil nur laufen gehen mit Go-Quelldateien (Dateinamen, die auf .go enden) funktioniert und go install nur Pakete akzeptiert. Pakete werden nach ihren Importpfaden oder dem Dateisystempfad benannt. So:
Alle arbeiten großartig. Der erste bezieht sich auf das Paket nach Importpfad (vorausgesetzt, $ GOPATH = "/ home / nate / work", die go-Tools suchen in / home / nate / work / src nach Quellcode), die anderen werden als Dateisystem interpretiert Wege wegen der führenden Perioden.
Siehe auch die GOPATH-Dokumente .
quelle
go install
funktioniert in Verzeichnissen und wenn Sie eine bestimmte go-Datei angeben, kann dies zu diesem bestimmten Problem führen.Eigentlich gibt es 2 verschiedene Verhaltensweisen.
Dies ist in Kompilieren und Installieren von Paketen und Abhängigkeiten dokumentiert. Sie benötigen GOBIN nicht, wenn Sie GOPATH richtig eingestellt haben.
Dies ist nicht dokumentiert und Sie benötigen in diesem Modus die Variable GOBIN env.
quelle
go install <gofile>
dokumentiert ist,go help packages
auf die sichgo install --help
bezieht. Das Problem ist, dassgo install
(in 1.9.2 und früher) ein inkonsistentes Verhalten vorliegt, in einem Fall erfordert es und in einem anderen erfordert es nicht, dass GOBIN explizit festgelegt wird.Wie bereits erwähnt, müssen Sie die GOBIN-Umgebungsvariable nicht festlegen, wenn Ihre GOPATH-Umgebung korrekt auf Ihren Arbeitsbereich eingestellt ist.
Bitte überprüfen Sie Ihre go-Umgebungsvariablen, indem Sie $ go env | ausführen grep -i "^ GO" und achten Sie auf GOROOT und GOPATH, um zu überprüfen, ob GOROOT auf Ihre GO-Quellinstallation und GOPATH auf Ihren Arbeitsbereich zeigt.
Wenn alles korrekt ist, navigieren Sie zu dem Unterverzeichnis, in dem sich yourpkg.go befindet. Führen Sie dann zuerst $ go build (ohne Dateinamen) und dann $ go install (erneut ohne Dateinamen) aus, wenn auf dem Bildschirm keine Fehlermeldung angezeigt wird Das Paket ist in Ihrem Arbeitsbereich bereit / pkg / youros /../ yourpackage.a
quelle
Unter Windows mit Cygwin scheint es eine gute Idee zu sein, GOBIN auf $ GOPATH / bin einzurichten.
und denken Sie daran, das Windows-Dateinamen-Trennzeichen ordnungsgemäß zu umgehen:
quelle
Überprüfen Sie für das
*nix
System, wogo
es installiert ist, und führen Sie den folgenden Befehl aus:Welche Ausgabe sagen wir:
Fügen Sie dann folgende Einträge in
~/.bash_profile
oder in hinzu~/.zshrc
:PS: Vergessen Sie nicht zu beschaffen
~/.bash_profile
oder~/.zshrc
wie folgt:quelle
/usr/local/go/bin
?In Bezug auf die Einstellung der
GOBIN
variablen Version, die dies nicht erfordert und sich nur auf Folgendes verlässtGOPATH
:GOBIN
ist erforderlich, wenn wir kein Paket haben, dh die Datei befindet sich direkt imGOPATH
Verzeichnis. Dies ist wahrscheinlich, wenn wir die Go-Funktionen als Lernende ausprobierenBei typischen Go-Projekten befinden sich die Dateien in den Paketverzeichnissen. Für diese
GOPATH
ist gut genug.Mit anderen Worten, beide der folgenden Lösungen würden funktionieren: a. Stellen Sie
GOBIN
explizit als $ GOPATH / bin [nur für Lernzwecke, vermeiden kann] b. Erstellen Sie ein Unterverzeichnis, das Ihrem Paketnamen entspricht, und verschieben Sie die .go-Dateien dorthinIch denke, Go-Dienstprogramme sollten den obigen Fehler beseitigen und das Szenario besser behandeln - basierend darauf, ob das Argument ein Verzeichnis oder eine Quelldatei ist
quelle
In Windows:
Bestätigen Sie mit dem
go env
Befehl, dass GOBIN gesetzt ist, undgo install
speichern Sie die ausführbare Datei ordnungsgemäß im bin-Verzeichnis.quelle
Ich hatte auch die gleichen Probleme (GOBIN muss nicht separat eingestellt werden), stellen Sie sicher, dass Sie die folgenden haben
go install <your_module>
quelle
Sie brauchen $ GOBIN nicht, wenn Sie $ GOPATH richtig eingestellt haben. Wenn ja, überprüfen Sie einfach erneut, ob sich Ihr Projekt im Ordner $ GOPATH / src befindet .
quelle
Von https://golang.org/cmd/go/#hdr-Environment_variables :
und https://golang.org/cmd/go/#hdr-GOPATH_environment_variable :
und https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more
Grundsätzlich können Sie GOBIN verwenden, um den Standardspeicherort für die binäre Installation (dh
$GOPATH/bin
) vorübergehend oder dauerhaft zu überschreiben . Ich hatte Erfolg bei der Installation eines 1-Datei-Go-Skripts mitenv GOBIN=$HOME/bin/ go install testfile.go
. Dies wurde mit go v1.11 durchgeführt.quelle
Für WINDOWS- Benutzer
Öffnen Sie eine Eingabeaufforderung (
Win
+r
danncmd
eingeben) oder ein Powershell-Fenster (Win
+x
dann eingebeni
).GOPATH einstellen
Weitere Details finden Sie unter dem folgenden Link: https://github.com/golang/go/wiki/SettingGOPATH#windows
GOBIN einstellen
Ich empfehle, das von golang bereitgestellte Codebeispiel zu überprüfen. Es hat mir sehr geholfen. https://golang.org/doc/code.html#Command
quelle