So erstellen Sie Go from Source unter Ubuntu 16.04

Einführung

Go ist eine moderne Open-Source-Programmiersprache, die von Google entwickelt wurde. Es ist einfach und verfügt über eine Reihe robuster Bibliotheken und Tools, mit denen sich auf einfache Weise zuverlässige und effiziente Anwendungen erstellen lassen.

Wenn Sie Ihre Go-Anwendung mit der neuesten Version der Sprache testen, einen Beitrag zur Go-Codebasis leisten oder eine bessere Go-Versionsverwaltung haben möchten, müssen Sie Go aus dem Quellcode erstellen. In diesem Tutorial erfahren Sie, wie Sie Go erstellen, einige praktische Überlegungen anstellen und eine Testanwendung "Hello, World" erstellen.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

Schritt 1 - Build-Abhängigkeiten installieren

Stellen Sie vor dem Start sicher, dass Ihr Repository-Cache auf dem neuesten Stand ist.

sudo apt-get update

Standardmäßig enthält Ubuntu nicht alle zum Erstellen von Go erforderlichen Pakete, wie Compiler, Bibliotheken und Tools. Es ist einfach, die Build- und Kompilierungsabhängigkeiten zu installieren, indem Sie "+ build-essential" installieren, ein Paket, das "+ gcc " zum Kompilieren von C, " g +" zum Kompilieren von C und "+ make +", ein Build-Automatisierungswerkzeug, enthält.

sudo apt-get install build-essential

Nach Abschluss der Installation verfügen Sie über alle erforderlichen Tools, um Go aus dem Quellcode zu erstellen. Als Nächstes benötigen Sie die Binärdateien für Go 1.4.

Schritt 2 - Go installieren 1.4.3

Für das Erstellen von Go 1.5+ ist Go 1.4 erforderlich. Dies liegt daran, dass die Toolketten für Go 1.5+ in Go selbst geschrieben sind. Sie können Go 1.4 oder ein beliebiges Point Release (1.4.1, 1.4.2 oder 1.4.3) verwenden. In diesem Tutorial verwenden wir Go 1.4.3.

Go-Binärdateien mit SHA1-Prüfsummen finden Sie auf der Download-Seite von Go. Laden Sie die Datei + go1.4.3.linux-amd64.tar.gz + in Ihr Home-Verzeichnis herunter.

cd ~
curl -O https://storage.googleapis.com/golang/

Obwohl diese Datei von einer Originalquelle heruntergeladen wurde, ist es immer noch eine gute Sicherheitspraxis, die Integrität der heruntergeladenen Dateien zu überprüfen. Dies geschieht am einfachsten, indem der auf der Downloadseite angegebene Datei-Hash mit dem Hash der heruntergeladenen Datei verglichen wird.

Holen Sie sich zuerst den Hash der heruntergeladenen Datei.

sha1sum go1.4.3.linux-amd64.tar.gz

Vergleichen Sie die Ausgabe dieses Befehls mit der bereitgestellten Prüfsumme auf der Seite Herunterladen.

Output332b64236d30a8805fc8dd8b3a269915b4c507fe  go1.4.3.linux-amd64.tar.gz

Wenn die Prüfsummen übereinstimmen, können Sie die Dateien entpacken.

tar xvf go1.4.3.linux-amd64.tar.gz

Das + x + Flag steht für e X tract, + v + weist + tar + an, V erbose-Ausgabe zu verwenden (d. H. um die zu extrahierenden Dateien aufzulisten), und + f + lässt uns den F -Dilennamen angeben.

Go 1.4 wird jetzt in ein Verzeichnis mit dem Namen "+ go " entpackt, aber das Go-Build-Skript sucht standardmäßig in " ~ / go1.4 " nach Go 1.4-Binärdateien. Benennen Sie das Verzeichnis mit dem Befehl ` mv +` um.

mv go go1.4

Jetzt haben Sie die notwendigen Abhängigkeiten, um Go aus dem Quellcode zu erstellen. Wenn Sie Go 1.4 aus Ihrem Ausgangsverzeichnis an einen anderen Ort verschieben möchten, können Sie den nächsten Schritt ausführen. Wenn nicht, können Sie mit Schritt 4 fortfahren, um die Go-Quellen zu klonen.

Schritt 3 - Umzug von Go 1.4.3 (optional)

Wenn das Go-Build-Skript ausgeführt wird, sucht es nach Go 1.4 basierend auf einer Umgebungsvariablen mit dem Namen "+ GOROOT_BOOTSTRAP ". Wenn diese Variable nicht gesetzt ist, was standardmäßig der Fall ist, geht das Build-Skript davon aus, dass sich das Verzeichnis ` go1.4 ` in Ihrem Ausgangsverzeichnis befindet. Sie können die Variable ` GOROOT_BOOTSTRAP` verwenden, wenn Sie Go 1.4 an einen anderen Ort verschieben möchten. Hier verschieben wir es nach "+ / usr / local / go1.4 +".

Verschieben Sie zunächst das Verzeichnis selbst.

sudo mv go1.4

Als nächstes müssen Sie den Pfad in Ihrer Umgebung festlegen, indem Sie die Datei "+ ~ / .profile +" ändern.

sudo nano ~/.profile

Fügen Sie am Ende der Datei die folgende Zeile hinzu:

~ / .profile

. . .
export GOROOT_BOOTSTRAP=go1.4

Speichern Sie die Datei und beenden Sie sie. Aktualisieren Sie Ihr Profil, damit diese Änderung wirksam wird.

source ~/.profile

Als nächstes klonen Sie die Go-Quellen.

Schritt 4 - Bezugsquellen ermitteln

Der empfohlene Speicherort für Go-Binärdateien ist "+ / usr / local +". Dies wird in diesem Lernprogramm verwendet. Sie können es jedoch an einem beliebigen Ort aufbewahren.

Bewegen Sie sich nach + / usr / local + und klonen Sie das Repository mit Git.

cd
sudo git clone https://go.googlesource.com/go

Wir müssen + git clone + mit root-Rechten ausführen, da + / usr / local + im Besitz von * root * ist. Wenn Sie klonen Wechseln Sie in ein Verzeichnis, in dem Ihr Benutzer über Schreibberechtigungen verfügt, und führen Sie diesen Befehl ohne sudo aus.

Sobald der Klon erfolgreich abgeschlossen wurde, wird ein "+ go " -Verzeichnis in " / usr / local" erstellt. In dieses Verzeichnis verschieben.

cd go

Vor dem Erstellen müssen wir die gewünschte Go-Version auswählen.

Schritt 5 - Auswählen einer Go-Version

Go-Quellen haben für jede verfügbare Version einen anderen Git-Zweig. Die Namen der Zweige sind:

  • + master + für die neueste Version in der Entwicklung

  • + go + für stabile Versionen

Hier verwenden wir Go 1.7.4, was bedeutet, dass wir den Zweig + go1.7.4 + verwenden möchten.

Verwenden Sie zum Ändern von Zweigen den Befehl + git checkout +. Sie müssen diese Befehle mit root-Rechten ausführen, da + / usr / local und` + / usr / local / go 1.4 + `im Besitz von * root * sind.

sudo git checkout

Mit diesem Schritt haben Sie den Go-Quellcode Ihrer bevorzugten Version heruntergeladen. Sie können nun mit dem Hauptteil dieses Lernprogramms fortfahren: Erstellen von Go selbst.

Schritt 6 - Building Go

Zum Erstellen von go müssen Sie ein Bash-Skript ausführen, + src / all.bash +, das mit dem Quellcode geliefert wird. Das Skript überprüft, ob alle erforderlichen Abhängigkeiten vorhanden sind, führt einige Tests durch und schließt den Build ab.

Führen Sie das Skript aus, aber beachten Sie, dass Sie, wenn Sie die Position der Go 1.4.3-Binärdateien geändert haben, das Flag "+ -E " hinzufügen müssen (d. H. ` sudo -E bash. / all.bash +`) um Umgebungsvariablen zu erhalten.

cd src
sudo bash ./all.bash

Das Skript benötigt eine kurze Zeit, um fertig zu sein. Sobald der Build abgeschlossen ist, wird die folgende Ausgabe angezeigt:

Output of src/all.bashALL TESTS PASSED

---
Installed Go for linux/amd64 in /usr/local/go
Installed commands in /usr/local/go/bin
*** You need to add /usr/local/go/bin to your PATH.

Nachdem Go erstellt wurde, müssen Sie einige Umgebungsvariablen dafür festlegen.

Schritt 7 - Festlegen von Go-Variablen

Umgebungsvariablen sind eine leistungsstarke Möglichkeit, Ihre Go-Installation anzupassen. Wir werden die wichtigsten und nützlichsten durchgehen.

Um Go zu verwenden, müssen Sie den Pfad für die Go-Binärdateien + go / bin + zu den Umgebungsvariablen + PATH + und + GOPATH + hinzufügen. In "+ GOPATH " werden der Go-Anwendungscode und die Binärdateien gespeichert, die wir als " ~ / work +" angeben. Sie können dies jedoch anpassen.

Fügen Sie diese Variablen der Datei "+ ~ / .profile +" hinzu. Öffnen Sie es mit Ihrem bevorzugten Texteditor:

nano ~/.profile

Fügen Sie am Ende der Datei die folgenden Zeilen hinzu:

~ / .profile

. . .
export GOPATH=
export PATH=$PATH:go/bin:$GOPATH/bin

Wenn Sie Go in einem nicht standardmäßigen Pfad installiert haben, d. H. Für etwas anderes als "+ / usr / local / go " müssen Sie die Variable " GOROOT +" definieren. Fügen Sie in diesem Fall auch die folgenden Zeilen hinzu:

~ / .profile

export GOROOT=
export GOPATH=
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Speichern Sie die Datei und beenden Sie sie. Aktualisieren Sie Ihr Profil, damit diese Änderungen wirksam werden.

source ~/.profile

Wenn dieser Schritt erfolgreich abgeschlossen wurde, haben Sie eine voll funktionsfähige Go-Installation. Als Nächstes testen wir, ob alles wie erwartet funktioniert.

Schritt 8 - Testen der Go-Installation

Eine übliche Methode zum Testen von Go ist das Schreiben und Ausführen einer einfachen "Hello, World" -Anwendung.

Dazu erstellen wir zunächst ein Verzeichnis für die App-Dateien und verschieben es in ein Verzeichnis, das auf Ihrem + GOPATH + basiert. Sie können wählen, was Sie in Ihrem Go-Pfad möchten, aber als Beispiel richten wir hier die Art von Hierarchie ein, die Sie benötigen, wenn Sie use GitHub verwenden Code verwalten. Diese Hierarchie funktioniert jedoch auch ohne einen GitHub-Account.

mkdir -p $GOPATH/src/github.com//test_project
cd $GOPATH/src/github.com//test_project

Als nächstes erstellen Sie eine "Hello, World" Go-Datei mit dem Namen "+ hello.go +".

nano hello.go

Fügen Sie der Datei den folgenden Code hinzu:

hallo.go

package main

import "fmt"

func main() {
   fmt.Printf("Hello World!\n")
}

In diesem Beispiel wird das Paket "+ fmt " verwendet, das E / A-Funktionen wie " Printf () " implementiert und die Funktion " main () +" definiert, die * Hello World * druckt, wenn das Programm ausgeführt wird.

Speichern Sie die Datei und beenden Sie sie. Kompilieren Sie sie dann mit dem Befehl "Go" (+ Installieren).

go install github.com//test_project

Wenn die Kompilierung abgeschlossen ist, können Sie sie mit dem folgenden Befehl ausführen:

hello

Auf dem Terminal wird * Hello World! * Angezeigt, was bedeutet, dass Ihre Go-Installation funktioniert.

Schritt 9 - Go-Versionen ändern (optional)

In diesem Tutorial wird Go 1.7.4 eingerichtet. Wenn Sie eine andere Version verwenden möchten, müssen Sie den aktiven Git-Zweig ändern und Go neu erstellen.

Um Ihre aktuelle Go-Version zu überprüfen, können Sie + go version + verwenden.

go version
Outputgo version go1.7.4 linux/amd64

Als Beispiel stellen wir auf die Go-Version 1.6.4 um. Diese Version befindet sich im Zweig + go1.6.4 +, wechseln Sie also dorthin.

cd /go
sudo git checkout

Um sicherzustellen, dass alles auf dem neuesten Stand ist, führen Sie "+ Git Pull" aus, um die neuesten Änderungen für den ausgewählten Zweig abzurufen.

sudo git pull origin

Führen Sie nun das Build-Skript wie zuvor aus und stellen Sie sicher, dass Sie das Flag "+ -E +" hinzufügen, wenn Sie Go 1.4 in Schritt 3 verschoben haben.

cd src
sudo bash ./all.bash

Dies wird einige Zeit in Anspruch nehmen. Nach Abschluss des Builds wird die folgende Ausgabe angezeigt:

Output of src/all.bashALL TESTS PASSED

---
Installed Go for linux/amd64 in /usr/local/go
Installed commands in /usr/local/go/bin
*** You need to add /usr/local/go/bin to your PATH.

Sie haben bereits Go-Variablen in "+ ~ / .profile +" aus Schritt 5 eingerichtet. Dies ist also alles, was Sie tun müssen, um die Versionen zu ändern.

Fazit

Durch die Erstellung aus dem Quellcode und das Einrichten von Pfaden verfügen Sie jetzt über eine hervorragende Basis für die Entwicklung und das Testen von Go-Anwendungen oder für Beiträge zur Go-Codebasis.

Weitere Informationen finden Sie unter anleitungen für den Einstieg mit Go oder https://www. digitalocean.com/community/tutorials/how-to-use-martini-to-serve-go-applications-behind-an-nginx-server-on-ubuntu[So dienen Sie Go-Anwendungen mit Martini], einem Go-Web Rahmen. Wenn Sie Inspiration suchen, um zu Go Open Source beizutragen, können Sie sich über go-qemu und informieren go-libvirt projekte.