GOPATH und GOROOT: Richtige Werte und häufige Fehler
\n\nWenn Sie gerade erst anfangen, Go zu lernen, werden Sie früher oder später auf die mysteriösen Abkürzungen GOPATH und GOROOT stoßen. Die Frage „What should be the values of GOPATH and GOROOT?“ ist eine der beliebtesten auf Stack Overflow – und das aus gutem Grund. Anfänger verwechseln die Werte, setzen sie falsch und erhalten seltsame Fehler beim Bauen ihrer Projekte.
In diesem Artikel erklären wir Ihnen einfach und verständlich, wozu diese Variablen gut sind, welche Standardwerte Sie verwenden sollten und wie Sie auf den modernen Ansatz mit go modules umsteigen. Los geht's!
Was ist GOROOT?
\n\nGOROOT ist der Pfad zu dem Ordner, in dem der Go-Compiler selbst installiert ist. In diesem Ordner befinden sich die Standardpakete (wie fmt, net, os usw.) sowie die Binärdateien go, gofmt und andere Werkzeuge.
Die meisten Entwickler müssen GOROOT nicht explizit setzen. Wenn Sie Go über das offizielle Installationsprogramm oder einen Paketmanager installiert haben, kennt der Compiler seinen eigenen Speicherort.
\n\nWie überprüfe ich den aktuellen Wert von GOROOT?
\nÖffnen Sie ein Terminal und führen Sie folgenden Befehl aus:
\ngo env GOROOT\n\nBeispielausgabe unter Linux:
\n/usr/local/go\n\nUnter Windows (bei Standardinstallation):
\nC:\\Program Files\\Go\n\nWann sollte ich GOROOT ändern?
\n- \n
- Wenn Sie den Go-Ordner an einen anderen Ort verschoben haben. \n
- Wenn Sie mehrere Go-Versionen installiert haben und zwischen ihnen wechseln möchten. \n
- Wenn Sie Go aus dem Quellcode kompilieren und in ein nicht standardmäßiges Verzeichnis installiert haben. \n
In allen anderen Fällen lassen Sie GOROOT in Ruhe – Go kümmert sich selbst darum.
\n\nWas ist GOPATH?
\n\nGOPATH ist dagegen eine viel interessantere Variable. Historisch gesehen verlangte Go, dass Ihr gesamter Code in einem einzigen Arbeitsbereich liegt. Dieser Bereich wurde durch GOPATH festgelegt.
Standardmäßig zeigt GOPATH auf:
- \n
- Linux/macOS:
$HOME/go\n - Windows:
%USERPROFILE%\\go\n
Innerhalb dieses Ordners gibt es eine Standardstruktur:
\ngo/\n├── bin/ # kompilierte Binärdateien\n├── pkg/ # erstellte Objektdateien und Cache\n└── src/ # Quellcode Ihrer Projekte\n ├── github.com/\n │ └── benutzer/\n │ └── meinprojekt/\n └── example.com/\n └── meineapp/\n\nWie überprüfe ich den aktuellen Wert von GOPATH?
\ngo env GOPATH\n\nWas sollten GOPATH und GOROOT sein? (Die richtigen Werte)
\n\nHier ist die kurze Antwort auf die Hauptfrage:
\n\n| Variable | \nStandardwert (Linux/macOS) | \nStandardwert (Windows) | \n
|---|---|---|
GOROOT | \n /usr/local/go | \n C:\\Program Files\\Go | \n
GOPATH | \n $HOME/go | \n %USERPROFILE%\\go | \n
Wichtig: GOPATH und GOROOT müssen unterschiedliche Ordner sein. Setzen Sie sie niemals auf denselben Wert!
Typische Fehler und wie man sie behebt
\n\nFehler 1: „GOPATH not set“ oder „cannot find package“
\nWenn Sie den alten Ansatz (vor Version 1.11-1.13) verwenden, sucht Go nach Paketen innerhalb von $GOPATH/src. Wenn Sie Ihr Projekt an einem anderen Ort abgelegt haben, findet der Compiler es nicht.
Lösung:
\n- \n
- Entweder verschieben Sie Ihr Projekt in
$GOPATH/src. \n - Oder