Kann mir jemand erklären, warum GOPATH bequem ist und wie es verwendet werden soll, im Allgemeinen?
Ich bin neu in Go-Programmierung Sprache und jedes tutorial beginnt von der Einstellung GOPATH zu aktuellen Projekt-Ordner.
Bin ich etwas fehlt? Der Programmierer wirklich setzen sollen GOPATH manuell, wenn er cd
zu seinem neuen Projekt-Ordner Gehen? Ich habe gelesen, mehrere FAQ-Einträge über GOPATH aber konnte immer noch nicht umbrochen, mein Kopf herum.
Und warum GOROOT existieren dann? Was ist Ihr Zweck?
Gibt es automatische tools, die erkennt, wenn aktuelle Verzeichnis wird root-Ordner des Go-Projekts (zum Beispiel durch einige versteckte Datei) und änderungen GOPATH auf dieses Verzeichnis automatisch?
Vielen Dank, alle Ratschläge wirklich appriciated
ps. Zum Beispiel entwickle ich völlig zusammenhanglos, Gehen die Projekte A, B und C, sollte Sie Leben in Einzel - "Arbeitsbereich" Umwelt? Ich denke mal nicht, aber was soll ich tun mit GOPATH und GOROOT dann?
- GOROOT Punkte zu Ihrem Go-installation, GOPATH Punkte auf der Wurzel von Ihrem Arbeitsbereich. Gehen kann nicht folgern, diese automatisch von design, so dass Sie haben, um Sie festzulegen. In der Regel ist es gut, mehrere Projekte in einem GOPATH, da jedes Projekt befindet sich in einem anderen Unterordner (by design).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Ziel, die
GOPATH
ist zu zentralisieren, alle Pakete in einem gemeinsamen Arbeitsbereich. Es ist nicht wirklich ein neues Konzept von selbst (man denke an die Java-Classpath zum Beispiel), aber Gehen ist drastisch vereinfacht ohne Unterstützung von packages Versionierung.Gehen die Programmierer sollen nicht eingestellt
GOPATH
manuell bei der Eingabe einer neuen Projekt-Ordner. Jedes Projekt Ordner soll ein Paket von selbst, und befinden sich in derGOPATH
entlang der anderen Pakete, soGOPATH
sollte nur einmal gesetzt werden. Tutorials beginnen, durch die Einstellung derGOPATH
um zu isolieren, die tutorial-Arbeitsbereich von etwas anderem (oder einfach die Annahme, dass ein Benutzer noch nicht dieGOPATH
noch).GOROOT
ist so eingestellt, dass das standard-Pakete an den Programmierer Gehen, brauchen Sie nicht, etwas zu tun. Kurz gesagt, es gibt nur eine Regel für dieGOROOT
: nie, nie, es zu berühren. Nicht installieren nichts in ihm, nicht ändern standard-Pakete, etc..Ich bin mir nicht bewusst, ein Werkzeug zu erkennen, Gehen die Projekte in das aktuelle Verzeichnis, aber es sollte nicht sehr aufwendig zu erstellen.
Wie Sie die Handhabung der verschiedenen Projekte ist bis zu Ihnen. Die Gehen Weg zu legen, um jedes Projekt als ein Paket in der
$GOPATH/src
Verzeichnis-und alles zu tun gibt. Da ich nicht wirklich, wie es ist, ich meinGOPATH
zu$HOME/.go
. Dann lege ich jedes Projekt in einem eigenen Verzeichnis woanders (irgendwo in meinem computer) und symlink des Projekt-Verzeichnis in meinem$GOPATH/src
dir. Ich kann dann mit jedem Go-toolchain-Befehl (z.B.go build myproject
), ein Projekt als Paket für eine andere, etc.go get
checken Sie immer die passenden Zweig der Veröffentlichung tagged das gleiche wiego version
Listen statt des Kopfes. Es ist "angeblich" verwendet werden, für die Pakete, einschließlich der features Hinzugefügt, später Go-Versionen (z.B. 1.3 Hinzugefügtsync.Pool
), aber viele Entwickler-Paket wird nur brechen API auf version änderungen und Missbrauch dieser Tatsache.gopkg.in
Dienstleistung, die eine alternative Annäherung an das problem aus einem anderen Blickwinkel. Lesen Sie dieser und dieser und suchen Sie die ML für die Worte "Paket-management".go get
ist es nicht (ein häufiges Missverständnis ist, zu behandelngo get
als Paket-manager). Es gibt eine Reihe von tools, die den Umgang mit dem problem; so tun Sie Ihre Forschung, Blick auf einige von Ihnen, wählen Sie Ihren Favoriten und verwenden Sie es.go get
gemeint ist das package managerdep
sind die änderung der Art der Kontrolle gehen Abhängigkeiten. Nur vermeiden Sie die Abhängigkeit der Versionsverwaltung ist schön zu denken, aber wirklich schwer, sich zu bewerben.GOPATH können Sie sammeln Abhängigkeit Quellcode und die daraus resultierende kompilierte Binärdateien in einem Ort. Dies scheint wie eine wirklich attraktive Idee. Allerdings fand ich selbst die Arbeit auf mehrere völlig unabhängige Projekte Gehen und ein alternativer Ansatz, der passte besser zu mir.
Dies ist eine ähnliche, aber andere Strategie zu Elwinar ist symlnks. Ich starte ein neues Projekt in einen leeren Ordner und erstellen
src
. Und ich drop in den Ordner, der das shell-Skript namens env.sh:Jedes mal, wenn ich anfangen zu arbeiten, ich benutze
Hinweis: die Punkt-und Raum - Sie sind wichtig.
Nun, alles, was ich an diesem Projekt lokalisiert ist, die in diesem Ordner. Es ist vielleicht nicht die am meisten verbreitete Strategie, aber es funktioniert gut für mich.
Und noch was: wenn Ihr Abhängigkeiten machen Verwendung von Umgebungsvariablen für Prüfungen etc, kannst du Sie in
env.sh
zu. Zum Beispiel, Gorp hatNachtrag
In der jüngsten Go-Versionen
GOPATH
ist optional; wenn Sie ihn nicht eingestellt, die standardmäßig in $HOME/go. Wenn Sie es auch wollen, verwenden Sie die neuen Module haben, legen SieGO111MODULES=on
auch.www
und es gab keinen bequemen Weg nach split Dinge, ohne etwas zu beschädigen gelegentlich)Sie nicht benötigen, um Ihre GOPATH oder GOROOT. GOPATH standardmäßig ist unter Ihrem Benutzer-Verzeichnis/home.
Gehen-Module
Andere als diese, gibt es jetzt Gehen-Module unterstützen (da Gehen 1.11), so dass Sie nicht haben, um zu verwenden GOPATH mehr. Dies ist jedoch noch ein experimentelles feature.
Zum Beispiel, können Sie gehen, um jedes beliebige Verzeichnis in Ihrem system (außerhalb von $GOPATH), und Sie können initialisieren einer neuen Go-Modul gibt, und Sie können dort arbeiten. Keine GOPATH benötigt wird.
Müssen Sie nur einmal (, während in einem Verzeichnis):
$GOPATH: Go speichert diese Dateien unter:
$GOROOT: wo Gehen Quell-code befindet sich wie Go-Standardbibliothek.
Außerdem laufen alle
go install
ed ausführbare Datei irgendwo auf Ihrem system, möchten Sie vielleicht$GOPATH/bin
zu Ihrer path-Umgebungsvariable wie diese:Mehr Informationen check out diese.