Go Home Page
Die Programmiersprache Go

Installing Go from source — Deutsche Übersetzung

Das Original:
http://golang.org/doc/install-source.html
Version of August 15, 2016 (Go 1.7)
Diese Übersetzung:
http://www.bitloeffel.de/DOC/golang/install-source_20160815_de.html
Stand: 15.8.2016
© 2015-16 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

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 "Getting Started" [deutsch: "Anfangen", A.d.Ü.] 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 sechs Befehlssätze. Die Qualität der Compiler für die verschiedenen Architekturen ist sehr unterschiedlich.

amd64 (alias x86-64)
Eine ausgereifte Implementierung. Neu in 1.7 ist sein SSA-basiertes Back-End, welches kompakten, effiziente Kode generiert.
386 (alias x86 oder x86-32)
Vergleichbar mit amd64, aber noch ohne das SSA-basierte Back-End. Der Compiler besitzt einen effektiven Optimierer (Registrator) und generiert guten Kode (auch wenn gccgo das manchmal deutlich besser kann).
arm (alias ARM)
Liefert Binärdateien für Linux, FreeBSD, NetBSD und Darwin; weniger verbreitet als die anderen.
arm64 (alias AArch64)
Liefert Binärdateien für Linux und Darwin; neu in Go 1.5 und noch nicht so ausgereift wie die anderen.
ppc64, ppc64le (64-bit PowerPC Big- und Little-Endian)
Liefert Binärdateien für Linux; neu in Go 1.5 und noch nicht so ausgereift wie die anderen.
mips64, mips64le (64-bit MIPS Big- und Little-Endian)
Liefert Binärdateien für Linux; neu in Go 1.6 und noch nicht so ausgereift wie die anderen.
s390x (IBM System z)
Liefert Binärdateien für Linux; neu in Go 1.7 und noch nicht so ausgereift wie die anderen.

Abgesehen von systemnahem Kode etwa für Betriebssystemschnittstellen ist das Laufzeitsystem für alle Portierungen gleichwertig; es verfügt über eine automatische Speicherbereinigung mit einem Markier-Fege-Algorithmus [englisch: mark-and-sweep, A.d.Ü.], ein effizientes Aufschneiden von Arrays und Strings, sowie über Unterstützung für effiziente Goroutinen, etwa Kellerspeicher [englisch: stack, A.d.Ü.], der je nach Bedarf wächst oder schrumpft.

Die Compiler können die Betriebssysteme DragonFly BSD, FreeBSD, Linux, NetBSD, OpenBSD, OS X (Darwin), Plan 9, Solaris und Windows zum Ziel haben. 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

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 bereits vorhandenen Werkzeugsatz in $HOME/go1.4. (Dieser Pfad kann mit der Umgebungsvariablen GOROOT_BOOTSTRAP überschrieben werden.)

Wandeln Sie mit Go Version 1.4 um (oder 1.4.1 oder 1.4.2). Die Binärdateien für Go 1.4 finden Sie auf der Download-Seite.

Kopieren Sie Zip-Datei oder Tarball von Go 1.4 passend zu Ihrer Plattform, und entpacken Sie nach $HOME/go1.4 (oder dahin, wo Ihr GOROOT_BOOTSTRAP hinzeigt).

Wird Ihr System von Go 1.4 noch nicht unterstützt (wie etwa linux/ppc64) oder linux/mips64le), so können Sie auf einem anderen System, das Go 1.5 ganz normal einrichten kann, bootstrap.bash benutzen, oder mit gccgo 5 arbeiten.

Startet man zum Beispiel ein Fremdkompilieren mit:

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

so erzeugt bootstrap.bash den Werkzeugsatz für diese GOOS/GOARCH-Kombination und hinterlegt den erzeugten Verzeichnisbaum unter ../../go-${GOOS}-${GOARCH}-bootstrap. Diesen Verzeichnisbaum kann man nun auf's Zielsystem übertragen und als GOROOT_BOOTSTRAP für den lokalen Bau der Werkzeuge benutzen.

Wenn Sie gccgo benutzen wollen, so müssen Sie dafür sorgen, dass das go-Tool, welches Teil von gccgo 5 ist, über $GOROOT_BOOTSTRAP/bin/go zu finden ist. Hier zum Beispiel, unter Ubuntu Vivid:

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

Installieren Sie Git, wenn nötig

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

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

Go wird in einem Ordner namens go installiert. Wechseln Sie in den Ordner, der der übergeordnete werden soll, und stellen Sie sicher, dass dort ein Ordner go noch nicht existiert. Dann klonen Sie das Repositorium und buchen zur letzten Freigabemarke (zum Beispiel go1.7) aus:

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

<Marke> steht hier für den Version-String der Freigabe [release, A.d.Ü.].

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

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.

Zusätzliche Info 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).

Die Installation testen

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

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" [deutsch: "Wie man mit Go arbeitet", A.d.Ü.] beschreibt wichtige Arbeitsschritte vor dem Benutzen der Go-Werkzeuge.

Installieren von Zusatzwerkzeugen

Der Quellkode verschiedener Go-Werkzeuge, darunter der für godoc befindet sich in einem getrennten go.tools-Repositorium. Um sie alle auf einmal zu installieren, rufen Sie das Kommando go get so:

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

Oder, wenn nur ein einzelnes Kommando (in diesem Fall godoc) installiert werden soll, so:

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

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

Außerdem muss ein Arbeitsbereich (GOPATH) festgelegt sein; genaueres in "Wie man mit Go arbeitet".

Achtung: Das go-Kommando installiert die Binärdatei godoc nach $GOROOT/bin (oder $GOBIN) und die Binärdateien cover und vet nach $GOROOT/pkg/tool/$GOOS_$GOARCH. Die beiden letzteren benutzt man mit "go tool cover" bzw. "go tool vet".

Die Go-Gemeinde als Ressource

An den üblichen Versammlungsplätzen der Go-Gemeinde wie #go-nuts beim Freenode-IRC-Server oder der "Go Nuts"-Verteilerliste finden Sie aktive Entwickler, die Ihnen bei Problemen mit Ihrer Installation und Entwicklerproblemen 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

Neue Freigaben [englisch: releases, A.d.Ü.] werden in golang-announce angekündigt. Jede Ankündigung enthält die Freigabemarke, zum Beispiel go1.7.

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

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

<Marke> steht hier für den Version-String der Freigabe [release, A.d.Ü.].

(Optional) Umgebungsvariablen

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 GOROOT=$HOME/go
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!