Go Home Page
Die Programmiersprache Go

Installing Go from source — Deutsche Übersetzung

Das Original:
https://golang.org/doc/install-source.html
Version of May 26, 2021
Diese Übersetzung:
https://bitloeffel.de/DOC/golang/install-source_20210817_de.html
Stand: 04.08.2021
© 2015-21 Hans-Werner Heinzen @ Bitloeffel.de
Die Nutzung dieses Werks ist unter den Bedingungen der "Creative Commons Attribution 3.0"-Lizenz erlaubt.
Für Fachbegriffe und ähnliches gibt es hier noch eine Wörterliste.

Go installieren (aus den Quellen)

Einführung[Top]

Go ist ein quelloffenes Projekt, das unter einer Lizenz ähnlich der BSD-Lizenz veröffentlicht wurde. Dieses Dokument erklärt, wie man an die Quellen herankommt und wie man sie auf dem eigenen Rechner kompiliert und zum Laufen bringt.

Den meisten wird es genügen, stattdessen nur die vorkompilierten Pakete zu installieren, so wie es in "Download and install" (de) beschrieben ist — das ist viel einfacher. Wenn Sie allerdings beim Entwickeln der genannten Pakete mithelfen wollen, dann lesen Sie weiter!

Es gibt zwei offizielle Werkzeugsätze zum Kompilieren von Go. Dieses Dokument hat den gc-Go-Compiler und zugehörige Tools im Blick. Informationen zu dem eher traditionellen Compiler gccgo, der das GCC-Back-End benutzt, finden Sie in "Setting up and using gccgo".

Die Go-Compiler unterstützen die folgenden Befehlssätze.

amd64, 386
Der x86-Befehlssatz, 64- and 32-Bit.
arm64, arm
Der ARM-Befehlssatz, 64-Bit (AArch64) und 32-Bit.
mips64, mips64le, mips, mipsle
Der MIPS-Befehlssatz, Big- und Little-Endian, 64- und 32-Bit.
ppc64, ppc64le
Der 64-Bit-PowerPC-Befehlssatz, Big- und Little-Endian.
riscv64
Der 64-Bit RISC-V-Befehlssatz.
s390x
Die IBM z/-Architektur.
wasm
WebAssembly.

Die Compiler können die Betriebssysteme AIX, Android, DragonFly BSD, FreeBSD, Illumos, Linux, macOS/iOS (Darwin), NetBSD, OpenBSD, Plan 9, Solaris und Windows zum Ziel haben (wenn auch nicht jedes Betriebssystem alle Architekturen unterstützt).

Eine Liste der Portierungen, die als "First Class" angesehen werden, gibt es auf der Wiki-Seite first class ports

Die vollständige Liste möglicher Kombinationen befindet sich weiter unten bei der Diskussion der Umgebungsvariablen.

Auf der Haupt-Installationsseite finden Sie die allgemeinen Systemvoraussetzungen (de). Für Systeme, die nur aus dem Quellkode erzeugt werden können, gilt außerdem noch folgendes:

Installieren Sie die Go-Compiler-Binärdateien als Starthilfe[Top]

Der gesamte Go-Werkzeugsatz wurde in Go geschrieben. Um ihn umwandeln zu können, müssen Sie schon einen Go-Compiler installiert haben. Die Skripte, die die Werkzeuge erstmalig umwandeln, suchen nach einem Kommando go in $PATH. Wenn Sie also Go auf Ihrem System installiert und in Ihrem $PATH konfiguriert haben, sind Sie auch bereit, Go aus dem Quellkode zusammenzubauen. Wenn Sie möchten, können Sie aber auch $GOROOT_BOOTSTRAP auf die Wurzel Ihrer Go-Installation setzen, um damit den neuen Go-Werkzeugsatz mzu bauen; $GOROOT_BOOTSTRAP/bin/go wird dann als go-Kommando benutzt.

Es gibt vier verschiedene Wege, an den Starthilfe-Werkzeugsatz zu kommen:

Diese Wege werden im Folgenden detailliert besprochen.

"Bootstrap"-Werkzeugsatz einer Binär-Auslieferung

Wenn Sie ein Binär-Release als Starthilfe-Werkzeugsatz benutzen wollen, finden Sie die auf der Download-Seite; oder nutzen Sie das Go-Paket einer beliebigen Distribution.

"Bootstrap"-Werkzeugsatz fremdkompiliert aus den Quellen

Um einen "Bootstrap"-Werkzeugsatz aus den Quellen fremdzukompilieren, was für Systeme nötig ist, für die es kein Go 1.4 gibt (zum Beispiel linux/ppc64le), installieren Sie zunächst Go auf einem anderen System und führen dann bootstrap.bash aus.

Wenn Sie beispielsweise so starten:

$ GOOS=linux GOARCH=ppc64 ./bootstrap.bash

dann kompiliert bootstrap.bash einen Werkzeugsatz für diese GOOS/GOARCH-Kombination und hinterlässt den sich ergebenden Ordnerbaum in ../../go-${GOOS}-${GOARCH}-bootstrap. Der Baum kann nun zu einer Maschine des angegebenen Zieltyps kopiert werden und als GOROOT_BOOTSTRAP genutzt werden, um dort einen lokalen Werkzeugsatz zu erzeugen.

Gccgo als "Bootstrap"-Werkzeugsatz

Um gccgo als "Bootstrap"-Werkzeugsatz nutzen zu können, müssen Sie dafür sorgen, dass $GOROOT_BOOTSTRAP/bin/go das Go-Tool ist, das als Teil von gccgo 5 geliefert wird. Beispielsweise auf Ubuntu Vivid:

$ sudo apt-get install gccgo-5
$ sudo update-alternatives --set go /usr/bin/go-5
$ GOROOT_BOOTSTRAP=/usr ./make.bash

"Bootstrap"-Werkzeugsatz aus den C-Quellen

Um den "Bootstrap"-Werkzeugsatz aus den C-Quelldateien zu bauen, benutzen Sie entweder aus dem Git-Repositorium den Zweig release-branch.go1.4, oder sie besorgen sich go1.4-bootstrap-20171003.tar.gz, worin sich der Quellkode von Go 1.4 befindet, mit einer Reihe von Korrekturen, die dafür sorgen, dass die Werkzeuge auch auf neueren Betriebssystemen laufen. (Go 1.4 war die letzte Go-Version, deren Compiler in C geschrieben war.) Nachdem Sie den Go-1.4-Quellkode ausgepackt haben, wechseln Sie zum Unterordner src, setzen Sie die Umgebungsvariable CGO_ENABLED=0 und starten Sie make.bash, oder für Windows make.bat.

Haben Sie die Go-1.4-Quellen erstmal in ihrem GOROOT_BOOTSTRAP-Ordner ausgepackt, so müssen Sie diese mit git clone erzeugte Instanz weiterhin im Zustand release-branch.go1.4 halten. Versuchen Sie also nicht, sie für den späteren Arbeitsschritt "Kopieren Sie das Repositorium" wiederzuverwenden. Der Go-1.4-Starthilfe-Werkzeugsatz muss in der Lage sein die Go-1.4-Quellen dort zu durchsuchen, wo sie sie unterhalb dieses Wurzelverzeichnisses sucht.

Beachten Sie, dass Go 1.4 nicht auf all den Systemen läuft, auf denen spätere Go-Versionen das tun. Insbesondere unterstützt Go 1.4 nicht die aktuellen macOS-Versionen. Auf solchen Systemen müssen Sie den "Bootstrap"-Werkzeugsatz mit einer der genannten Methoden erzeugen.

Installieren Sie Git, wenn nötig[Top]

Für den nächsten Schritt müssen Sie Git installiert haben; kontrollieren Sie also, ob das Kommando git zur Verfügung steht.

Haben Sie noch kein arbeitsfähiges Git, folgen Sie den Anweisungen auf der "Git Downloads"-Seite.

(Optional) Installieren Sie einen C-Compiler[Top]

Wenn Ihre Go-Installation cgo unterstützen soll, damit Go-Programme auch C-Bibliotheken importieren können, so müssen Sie zunächst einen C-Compiler wie gcc oder clang installieren. Tun Sie das mit der für Ihr System üblichen Methode.

Um Go ohne cgo-Unterstützung zu installieren, setzten Sie CGO_ENABLED=0 bevor Sie all.bash oder make.bash (siehe unten) starten.

Kopieren Sie das Repositorium[Top]

Go wird in einem Ordner namens go installiert. Wechseln Sie in den Ordner, in dem Sie Go installieren wollen, und stellen Sie sicher, dass dort ein Ordner goroot noch nicht existiert. Dann klonen Sie das Repositorium und buchen zur letzten Freigabemarke (zum Beispiel go1.16) aus:

$ git clone https://go.googlesource.com/go goroot
$ cd goroot
$ git checkout <marke>

Dabei steht <marke> für den Versionsstring des Releases.

Go wird in dem Ordner installiert, in den es ausgebucht wird. Wird beispielsweise Go nach $HOME/goroot ausgebucht, so wandern die Laufzeitmodule nach $HOME/goroot/bin. Der Ordner kann beliebig benannt werden - beachten Sie aber, dass, wenn Sie nach $HOME/go ausbuchen, das mit dem Standard für $GOPATH kollidiert. Siehe unten unter GOPATH.

Nicht vergessen: Wenn Sie sich weiter oben für das Kompilieren des Starthilfe-Werkzeugsatzes aus den Quellen entschieden haben, müssen Sie hier noch einmal git clone einsetzen (um bei der neuesten <Marke> auszubuchen), denn Sie müssen das Go-1.4-Repositorium getrennt halten.

Wenn Sie Go-Quellkode verändern und mit Ihren Änderungen zum Projekt beitragen wollen, dann stellen Sie Ihr Repositorium vom "release"-Zweig auf den "master"-Zweig (Entwicklungszweig) um. Wenn nicht, überspringen Sie diesen Schritt.

$ git checkout master

Installieren Sie Go[Top]

Um Go zusammenzubauen, geben Sie ein:

$ cd src
$ ./all.bash

(In Windows benutzen Sie all.bat.)

Wenn alles gut geht, wird am Ende etwa folgendes ausgegeben:

ALL TESTS PASSED

---
Installed Go for linux/amd64 in /home/you/go.
Installed commands in /home/you/go/bin.
*** You need to add /home/you/go/bin to your $PATH. ***

Dabei beziehen sich die Details der letzten Zeilen auf Betriebssystem, Architektur und den Ordner, der bei der Installation als Wurzel verwendet wurde.

Weitere Infos darüber, wie man den Zusammenbau steuern kann, gibt's weiter unten bei der Diskussion der Umgebungsvariablen. Bei all.bash (oder all.bat) laufen auch wichtige Tests, die eventuell viel mehr Zeit brauchen als das reine Zusammenbauen von Go. Wenn Sie auf die Tests verzichten wollen, starten Sie alternativ make.bash (oder make.bat).

Testen der Installation[Top]

Prüfen Sie die Korrektheit der Installation, indem Sie ein einfaches Programm umwandeln und laufen lassen.

Erzeugen Sie eine Datei mit Namen hello.go und darin folgendes Programm:

package main

import "fmt"

func main() {
    fmt.Printf("Hallo Welt\n")
}

Starten Sie das Programm mit dem Kommando go:

$ go run hello.go
Hallo Welt

Wenn die Nachricht "Hallo Welt" zu sehen ist, dann wurde Go korrekt installiert.

Vorbereiten der Entwicklungsumgebung[Top]

Sie sind fast fertig - nur noch wenige vorbereitende Schritte.

How to Write Go Code Learn how to set up and use the Go tools

Das Dokument "How to Write Go Code" ("Wie man mit Go arbeitet") beschreibt wichtige Arbeitsschritte vor dem Benutzen der Go-Werkzeuge.

Installieren von Zusatzwerkzeugen[Top]

Der Quellkode verschiedener Go-Werkzeuge, darunter der für godoc befindet sich in einem getrennten go.tools-Repositorium. Um eines der Werkzeuge zu installieren (in diesem Fall godoc), starten Sie:

$ go get golang.org/x/tools/cmd/godoc

Das Kommando go get setzt hier das Vorhandensein von Git voraus.

Außerdem müssen ein Arbeitsbereich (GOPATH) festgelegt haben; genaueres in "Wie man mit Go arbeitet".

Die Go-Gemeinde als Ressource[Top]

An den üblichen Versammlungsplätzen der Go-Gemeinde, die unter Hilfe gelistet sind, finden Sie aktive Entwickler, die Ihnen bei Problemen beim Installation und Entwickeln helfen können. Wer immer auf dem neuesten Stand sein will, für den empfängt die Verteilerliste golang-checkins für jedes Einbuchen ins Go-Repositorium eine zusammenfassende Nachricht.

Fehler können Sie melden beim Go-Fallbearbeitungssystem.

Schritt halten mit den Freigaben[Top]

Neue Freigaben (releases) werden in golang-announce angekündigt. Jede Ankündigung enthält die Freigabemarke, zum Beispiel go1.9.

Um Ihren Ordnerbaum auf die letzte Freigabe zu aktualisieren, schreiben Sie:

$ cd go/src
$ git fetch
$ git checkout <marke>
$ ./all.bash

Dabei steht <marke> für den Versionsstring des Releases.

(Optional) Umgebungsvariablen[Top]

Die Go-Umwandlungsumgebung kann durch Umgebungsvariablen angepasst werden. Es sind zwar keine nötig, aber vielleicht wollen Sie ein paar Voreinstellungen überschreiben.

Beachten Sie, dass $GOARCH und $GOOS für das Zielsystem stehen, nicht für Ihre Entwicklungsumgebung. Das bedeutet, dass es sich eigentlich immer um Fremdkompilieren handelt. Mit Architektur ist die Art Binärdatei gemeint, die auf einem Zielsystem laufen kann: Auf einem x86-64-System, auf dem nur ein 32-Bit-Betriebssystem läuft, muss GOARCH auf 386 (und nicht amd64) gesetzt sein.

Wenn Sie Vorgabewerte überschreiben wollen, tun Sie das in Ihrer Shell-Profildatei ($HOME/.bashrc, $HOME/.profile oder einer Entsprechung). Das mag dann so aussehen:

export GOARCH=amd64
export GOOS=linux

Allerdings, um's nochmal zu wiederholen: Keine dieser Variablen muss fürs Kompilieren, Installieren oder Weiterentwickeln des Go-Verzeichnisbaums gesetzt werden!