# 2. Die Programme einrichten

Es gibt einiges zu tun, bevor Du mit der Ubuntu-Entwicklung loslegen kannst. Dieser Artikel wird Dir helfen, dein System so einzurichten, dass Du mit Paketen arbeiten und Deine Pakete auf Ubuntu’s Hosting-Platform, Launchpad, hochladen kannst. Hierüber werden wir reden:

- Paketierungs-Software installieren. Dies beinhaltet:

  - Ubuntu-spezifische Paketierungs-Werkzeuge

  - Verschlüsselungssoftware so dass Deine Arbeit als Deine eigene verifiziert werden kann

  - Weitere Verschlüsselungssoftware so dass Du sichere Dateitransfers machen kannst

- Deinen Account auf Lauchpad erstellen und einrichten

- Deine Entwicklungsumgebung aufsetzen, so dass Du lokale Builds von Paketen machen, mit anderen Entwicklern interagieren und Deine Änderungswünsche in Launchpad unterbreiten kannst.

Bemerkung

Es macht Sinn, Paketierungaufgaben direkt in der Entwicklungsversion von Ubuntu zu machen. Dies wird es Dir erlauben Deine Änderungen in derselben Umgebung zu testen, wo diese später eingepflegt und verwendet werden.

Mach dir deswegen aber keine Sorgen, du kannst Testdrive or chroots verwenden um sicher eine Entwicklerversion zu benutzen.

## 2.1. Grundlegende Paketierungs-Software installieren

Es gibt eine Anzahl von Werkzeugen die dir das Leben als Ubuntu-Entwickler um einiges einfacher machen. Du wirst diesen zu einem späteren Zeitpunkt in diesem Handbuch begegnen. Um die meisten davon zu installieren, kannst du folgenden Befehl ausführen:

    $ sudo apt-get install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file

Merke: Seit Ubuntu 11.10 “Oneiric Ocelot” (oder falls du Zurückportierungen für eine derzeit unterstütze Version aktiviert hast) wird der folgenden Befehl das obige und weitere Werkzeuge installieren, welche für die Ubuntu-Entwicklung sehr gebräuchlich sind.

    $ sudo apt-get install packaging-dev

Dieser Befehl wird folgende Software installieren

- `gnupg` – GNU Privacy Guard enthält Werkzeuge, die du für die Erstellung eines kryptographischen Schlüssels benötigst. Mit dem Schlüssel kannst du die Dateien unterschreiben welche du zu Launchpad hochladen willst.

- `pbuilder` – ein Werkzeug um reproduzierbare Builds eines Pakets in einer sauberen und isolierten Umgebung zu machen.

- `ubuntu-dev-tools` (und `devscripts`, eine direkte Abhängkigkeit) – eine Sammlung von Werkzeugen, die viele Paketierungsaufgaben einfacher machen.

- `bzr-builddeb` (und `bzr`, eine direkt anhängiges Paket) – verteilte Versionskontrolle mit Bazaar, einem neuen Weg mit Paketen in Ubuntu zu arbeiten der es einfach macht mit vielen Entwicklern am selben Quellcode zusammenzuarbeiten während es einfach bleibt Änderungen einfließen zu lassen.

- `apt-file` ist eine einfache Möglichkeit das Binärpaket zu finden welches eine gegebene Datei enthält.

### 2.1.1. Deinen GPG-Schlüssel erstellen

GPG bedeutet GNU Privacy Guard und implementiert den OpenPGP-Standard, mit dem Sie Nachrichten und Dateien unterschreiben und verschlüsseln können. Dies bringt eine Reihe von Vorteilen mit sich. In unserem Fall ist diese Funktion wichtig, damit Sie Dateien signieren können und so kenntlich machen, dass Sie daran gearbeitet haben. Wenn Sie ein Paket in Launchpad hochladen möchten funktioniert dies nur, wenn mit absoluter Sicherheit festgestellt werden kann, wer die Datei hochgeladen hat.

Um Deinen GPG-Schlüssel zu erstellen, starte:

    $ gpg --gen-key

GPG fragt zuerst, welche Art von Schlüssel Sie generieren möchten. Die Standardauswahl (RSA und DSA) ist eine gute Wahl. Als nächstes werden Sie nach der Schlüsselgröße gefragt. Die Standardauswahl (zur Zeit 2048) ist zwar eine gute Wahl, aber 4096 bietet deutlich mehr Sicherheit. Danach müssen Sie angeben, ob der Schlüssel zu einem bestimmten Zeitpunkt ungültig werden soll. Auch hier ist die Stadardauswahl »0« ein guter Wert, der bedeutet, dass der Schlüssel unbegrenzt gültig ist. Zum Schluss werden noch Ihr Name sowie Ihre E-Mail Adresse abgefragt. Geben Sie hier die E-Mail Adresse an, mit der Sie bei der Entwicklung bei Ubuntu tätig sein möchten. Bei Bedarf können später weitere hinzugefügt werden. Die letzte Angabe ist eine Passphrase (eine Passphrase ist ein Passwort, in dem auch Leerzeichen enthalten sein dürfen). Sie sollte sehr sicher sein.

Jetzt wird GPG einen Schlüssel für dich generieren, was ein bisschen dauern kann. Es braucht zufällige Bytes, also ist eine gute Idee das System ein wenig auszulasten. Beweg den Mauszeiger hin und her, schreib ein paar Zeilen und lade ein paar Webseiten.

Wenn das getan ist, wirst Du in etwa solch eine Meldung erhalten:

    pub   4096R/43CDE61D 2010-12-06
          Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D
    uid                  Daniel Holbach <dh@mailempfang.de>
    sub   4096R/51FBE68C 2010-12-06

In diesem Fall ist `43CDE61D` die key ID.

Als nächstes muss du den öffentlichen Teil deines Schlüssels auf einen Keyserver hochladen, sodass man Nachrichten und Dateien dir zuordnen kann. Um das zu tun, führe folgenden Befehl aus:

    $ gpg --send-keys --keyserver keyserver.ubuntu.com <KEY ID>

Dies wird deinen Schlüssel auf den Ubuntu-Schlüsselserver laden, aber ein Netzwerk aus Schlüsselservern wird den Schlüssel untereinander weiterreichen. Ist der Vorgang erst einmal abgeschlossen, ist dein unterschriebener öffentlicher Schlüssel bereit alle deine Beiträge auf der ganzen Welt zu verifizieren.

### 2.1.2. Deinen SSH-Schlüssel erstellen

SSH steht für Secure Shell und ist ein Protokoll, welches es Ihnen erlaubt, Daten sicher über ein Netzwerk auszutauschen. Es ist üblich per SSH Zugang zur Kommandozeile eines andern Rechners zu erhalten und es zur sicheren Dateiübertragung zu verwenden. Für unsere Zwecke nutzen wir SSH hauptsächlich zum sicheren Hochladen von Paketen zu Launchpad.

Um Deinen SSH-Schlüssel zu erstellen, starte:

    $ ssh-keygen -t rsa

Der Standardname ergibt normalerweise Sinn, deshalb kann er auch einfach so bleiben. Aus Sicherheitsgründen ist es ratsam eine Passphrase zu verwenden.

### 2.1.3. pbuilder einrichten

`pbuilder` ermöglicht es Ihnen, Pakete lokal auf Ihrem Rechner zu erstellen. Das dient mehreren Zwecken:

- Die Erstellung wird in einer minimalen und sauberen Umgebung vorgenommen. Das hilft sicherzustellen, dass der Vorgang in einer wiederholbaren Weise abläuft ohne Ihr System zu modifizieren.

- Du brauchst nicht alle nötigen Build-Abhängigkeiten lokal installieren.

- Du kannst mehrere Instanzen für diverse Ubuntu- und Debian-Versionen einrichten

`pbuilder` einzurichten ist sehr einfach, starte:

    $ pbuilder-dist <release> create

where <release> is for example raring, saucy, trusty or in the case of Debian maybe sid. This will take a while as it will download all the necessary packages for a “minimal installation”. These will be cached though.

## 2.2. Alles einrichten um mit Launchpad arbeiten zu können

Mit einer grundlegenden lokalen Konfiguration vor Ort ist dein nächster Schritt dein System auf die Arbeit mit Launchpad einzurichten. Dieses Kapitel legt den Schwerpunkt auf folgende Themen:

> - Was Launchpad ist und einen Launchpad Account erstellen

> - Deinen GPG- und SSH-Schlüssel auf Launchpad hochladen

> - Bazaar einrichten um mit Launchpad arbeiten zu können

> - Bash einrichten um mit Launchpad arbeiten zu können

### 2.2.1. Über Launchpad

Launchpad ist das Kernstück der Infrastruktur in Ubuntu. Es speichert nicht nur unsere Pakete und unseren Code, sondern auch Dinge wie Übersetzungen, Fehlerberichte, Informationen über Personen die an Ubuntu arbeiten sowie deren Mitgliedschaften in Entwicklerteams. Du wirst Launchpad ebenso dazu benutzen um deine Lösungen zu veröffentlichen und andere Ubuntu-Entwickler dazu zu bringen sie zu überprüfen und zu finanzieren.

Du wirst dich mit Launchpad anmelden und ein Minumum an Informationen preisgeben müssen. Das gibt dir die Möglichkeit Code runter- und hochzuladen, Fehlerberichte auszustellen und vieles mehr.

Neben Ubuntu kann Launchpad jedes beliebige Projekt mit freier Software beherbergen. Für weitere Informationen siehe im Launchpad Hilfe Wiki.

### 2.2.2. Einen Launchpad Account erstellen

Falls du noch keinen Launchpad-Account hast, kannst du einfach einen einrichten. Falls du schon einen Account besitzt, aber dich nicht mehr an deine Launchpad-ID erinnern kannst, findest du sie auf https://launchpad.net/~ nach dem Zeichen ~ in der URL.

Der Registrierungsprozess von Launchpad wird nach einem Anzeigenamen verlangen. Es ist empfehlenswert hier seinen echten Namen zu verwenden, damit die anderen Ubuntu-Entwickler eine Möglichkeit haben dich besser kennenzulernen.

Sobald du einen neuen Account registrierst, wird dir Launchpad eine E-Mail mit einem Weblink senden, der deine E-Mail-Adresse bestätigt. Falls du keine E-Mail erhältst, solltest du deinen Spam-Ordner überprüfen.

Die neue Hilfe-Seite auf Launchpad gibt mehr Information über den Ablauf und zusätzliche Einstellungen, die du ändern kannst.

### 2.2.3. Deinen GPG-Schlüssel auf Launchpad hochladen

First, you will need to get your fingerprint and key ID.

Um Deinen GPG-Fingerabdruck zu finden, starte:

    $ gpg --fingerprint email@address.com

und es wird Dir etwa sowas ausgegeben:

    pub   4096R/43CDE61D 2010-12-06
          Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D
    uid                  Daniel Holbach <dh@mailempfang.de>
    sub   4096R/51FBE68C 2010-12-06

Then run this command to submit your key to Ubuntu keyserver:

    $ gpg --keyserver keyserver.ubuntu.com --send-keys 43CDE61D

where `43CDE61D` should be replaced by your key ID (which is in the first line of output of the previous command). Now you can import your key to Launchpad.

Gehe auf https://launchpad.net/~/+editpgpkeys und kopiere den “Key fingerprint” in das Textfeld. Im oben genannten Beispiel wäre das `5C28 0144 FB08 91C0 2CF3 37AC 6F0B F90F 43CD E61D`. Klicke jetzt auf “Import Key”.

Launchpad benutzt den Fingerabdruck, um Ihren Schlüssel am Ubuntu-Schlüsselserver abzufragen. Bei Erfolg erhalten Sie eine verschlüsselte E-Mail mit der Bitte, den Schlüsselimport zu bestätigen. Durchsuchen Sie dazu Ihr E-Mail Postfach nach dieser E-Mail. Unterstützt Ihr E-Mail Anbieter OpenPGP-Verschlüsselung, werden Sie nach dem Passwort gefragt, dass Sie bei der Erstellung des Schlüssels verwendet haben. Geben Sie dieses ein und klicken Sie auf den Link, um zu bestätigen, dass dies Ihr Schlüssel ist.

Launchpad verschlüsselt diese E-Mail unter Verwendung Ihres öffentlichen Schlüssels, um Sie als den Besitzer des Schlüssels zu bestätigen. Wenn Sie das unter Ubuntu standardmäßig installierte Thunderbird als Ihr E-Mail Programm benutzen, können Sie die Nachricht einfach entschlüsseln, indem Sie die Enigmail-Erweiterung installieren. Unterstützt Ihre eingesetzte E-Mail-Software keine OpenPGP-Verschlüsselung, können Sie den Inhalt auch manuell entschlüsseln. Geben Sie dazu in der Eingabeaufforderung den Befehl `gpg` ein und kopieren Sie den verschlüsselten Inhalt der E-Mail in das Fenster.

Zurück auf der Launchpad-Webseite, drück die Schaltfläche zur Bestätigung und Launchpad wird den Import deines OpenPGP-Schlüssels abschließen.

Weitere Informationen findest Du auf https://help.launchpad.net/YourAccount/ImportingYourPGPKey

### 2.2.4. Deinen SSH-Schlüssel auf Launchpad hochladen

Öffne https://launchpad.net/~/+editsshkeys in einem Webbrowser, und öffne auch `~/.ssh/id_rsa.pub` in einem Texteditor. Dies ist der öffentliche Teil Deines SSH-Schlüssels, also ist es sicher ihn auf Launchpad zu veröffentlichen. Kopiere den Inhalt der Datei und füge sie in die Textbox ein die mit “Add an SSH key” überschrieben ist. Klicke jetzt “Import Public Key”.

Für weitere Informationen über diesen Prozess, besuchen Sie die Seite Erstellung eines SSH-Schlüsselpaares auf Launchpad.

### 2.2.5. Bazaar einrichten

Bazaar ist das Werkzeug, das wir verwenden, um Quellcode-Änderungen in logischer Art und Weise zu speichern, um vorgeschlagene Änderungen auszutauschen und einzupflegen, und auch um gleichzeitig entwickeln zu können. Es wird für die Ubuntu Distributed Development Methode verwendet um an Ubuntu-Paketen zu arbeiten.

Um Bazaar zu sagen, wer Du bist, starte einfach:

    $ bzr whoami "Bob Dobbs <subgenius@example.com>"
    $ bzr launchpad-login subgenius

whoami teilt Bazaar mit welchen Namen und welche Email-Adresse benutzt werden soll für Commit-Nachrichten. Mit launchpad-login setzt man seine Launchpad ID. Dadurch wird Quellcode, den Du in Launchpad veröffentlichst, mit Dir verbunden.

Merke: Falls du dich nicht mehr an deine ID erinnern kannst, geh auf https://launchpad.net/~ und achte darauf, wohin es dich umleitet. Der Teil nach dem “~” in der URL ist deine Launchpad ID.)

### 2.2.6. Deine Shell einrichten

Genau wie mit Bazaar, müssen die Debian/Ubuntu Paketierungs-Werkzeuge auch mehr über Dich erfahren. Öffne einfach ~/.bashrc in einem Texteditor und füge etwas wie das hier a Ende hinzu:

    export DEBFULLNAME="Bob Dobbs"
    export DEBEMAIL="subgenius@example.com"

Speichere die Datei jetzt und starte entweder Dein Terminal neu oder starte:

    $ source ~/.bashrc

(Falls du nicht die Standardanwendung bash benutzt, passe bitte die Konfigurationsdatei für diese Anwendung dementsprechend an.)