Ein Launchpad-Repository (PPA – personal package archive) mit 1 GB freiem Speicherplatz hilft den eigenen Webserver zu entlasten. Der ersten Schritt zum eigenen Repository ist die Anmeldung bei Launchpad.
Erzeugen eines OpenPGP-Schlüssels
Um ein Repository zu bekommen, benötigt man außerdem einen OpenPGP Schlüssel. Diesen habe ich mit dem Befehl
gpg --gen-key
erzeugt. Dabei habe ich für Art, Gültigkeit und Schlüssellänge stets die vorgegebenen Standardwerte verwendet. Bei den persönlichen Angaben bitte keinen Kommentar eingeben. Zum Schluss erhält man auch eine Zeile mit der Ausgabe
pub 1024D/8E7FE678 2009-01-21
Die öffentliche Schlüssel-ID beträgt hier also 8E7FE678. Diese Ausgabe erhält man im Nachhinein übrigens mit einem
gpg --list-keys
für alle erzeugten Schlüssel bzw. für eine spezielle E-Mail-Addresse mit
gpg --list-keys your@mailaddress.com
Damit die öffentliche Schlüssel-ID allen Programmen zur Verfügung steht, setzen wir die entsprechende Umgebungsvariable durch Ergänzung der .bashrc um folgende Zeile (Schlüssel-ID anpassen):
export GPGKEY=8E7FE678
Außerdem sollte man sicherstellen, dass die Angaben zu den Packages, die aus den zwei Umgebungsvariablen DEBFULLNAME und DEBEMAIL gelesen werden, vorhanden sind. Die Schreibweise muss exakt mit den gemachten Angaben zur Erzeugung des OpenPGP-Schlüssels übereinstimmen:
export DEBFULLNAME='Your Name'
export DEBEMAIL='your@mailaddress.org'
Gibt es Differenzen erhält man nämlich bei der Erstellung von Paketen folgende Fehlermeldung: „geheimer schlüssel ist nicht vorhanden“ bzw. „secret key not available“. Als nächstes Übertragen wir den öffentlichen Schlüssel auf einen öffentlichen Schlüsselserver
gpg --send-keys --keyserver keyserver.ubuntu.com 8E7FE678
Die Schlüssel-ID ist hier natürlich ebenfalls anzupassen.
Aktivieren des Launchpad-Repositories
Zum Aktivieren des Launchpad-Repositories meldet man sich mit seinem Login an und klickt auf seinen Namen (rechts oben), so dass man zum eigenen Profil komt. Anschließend wählt dann den Punkt Change Details. Im Menü wählt man OpenPGP Keys und gibt dort die Finger-Print des Schlüssels ein, den man über ein
gpg --fingerprint 8E7FE678
erhält (wiederum für eigene Schlüssel-ID anpassen). Nach dem Importieren erhält man eine E-Mail, deren Inhalt einen verschlüsselten Link enthält, den man zum Aktivieren aufrufen muss. Zum Entschlüsseln wird der entsprechende Inhalt (ab einschließlich —–BEGIN PGP MESSAGE—– bis —–END PGP MESSAGE—–) in der Datei temp.txt gespeichert, die man dann durch ein
gpg --decrypt temp.txt
in den Klartext verwandelt. Durch Aufrufen des enthaltenen Links bestätigt man den Schlüssel nochmals und kann dann unter seinem Profil das PPA aktivieren. Im nächsten Schritt muss man Ubuntero werden, d.h. den Ubuntu Verhaltenskodex akzeptieren. Ist man dies nicht, werden hochgeladene Pakete mit der Fehlermeldung „PPA uploads must be signed by an ‚ubuntero‘. “ verworfen. Um Ubuntero zu werden ruft man nach dem Einloggen die Seite Ubuntu Code of Conduct auf, geht auf den Punkt Sign it!, lädt den Kodex herunter und signiert ihn mit einem
gpg --clearsign UbuntuCodeofConduct-1.0.1.txt
Den Inhalt der dadurch erzeugten Datei UbuntuCodeofConduct-1.0.1.txt.asc fügt man nun in das entsprechende Feld ein, schickt das Formular ab – und schon ist man Ubuntero.
Pakete erstellen und ins Repository übernehmen
Eigene Pakete muss man fortan beim Erstellen signieren, falls sie in das PPA-Repository aufgenommen werden sollen. Falls man ein bereits im Ubuntu-Repository vorhandenes Paket angepasst hat, also die Datei names xyz.orig.tar.gz von Beginn an vorhanden ist, so erstellt man mit
debuild -S -sd
die entsprechenden Dateien – ansonsten mit
debuild -S -sa
Zum Hochladen installiert man dput mit
sudo apt-get install dput
und erzeugt die Datei ~/.dput.cf mit diesem Inhalt (bitte launchpad-id anpassen):
[my-ppa]
fqdn = ppa.launchpad.net
method = ftp
incoming = ~your-launchpad-id/ubuntu/
login = anonymous
allow_unsigned_uploads = 0
Das erzeugte Source-Paket wird schließlich durch ein
dput my-ppa P_V_source.changes
ins Repository übertragen. P steht dabei für den Paketnamen und V für die Versionsnummer. Die Datei P_V_source.changes sollte sich natürlich im entsprechenden Verzeichnis befinden. Anfangs habe ich mich gefragt, weshalb man zum Hochladen kein Passwort oder dergleichen benötigt, aber da die erzeugten Pakete signiert sind, ist das ja gar nicht notwendig.
Die hochgeladenen Quelltext-Pakete werden dann von Launchpad für die Platformen i386, AMD64 und LPIA kompiliert und anschließend ins Repository gestellt. Das kann etwas dauern. Natürlich sollte man vorher selbst sicherstellen, dass das Kompilieren auf dem eigenen Rechner fehlerfrei abläuft. Während in der Vergangenheit die Packages auf dem Launchpad PPA nicht signiert wurden, soll dies zukünftig anders sein. Ich bin gespannt, wann meine Pakete signiert sind..
Kleine Tips zum Schluss
GPG-Agent nutzen
Der gpg-agent erlaubt eine etwas bequemere Anwendung von GPG, da bei mehrfacher Verwendung eines Schlüssels innerhalb einer bestimmten Zeitspanne nur beim ersten Mal nach dem Passwort gefragt wird. Installieren lässt sich der gpg-agent mit einem
sudo apt-get install gnupg-agent
Damit der gpg-agent bei jeder Sitzung gestartet wird, habe ich ihn unter System>Einstellungen>Sitzungen als Startprogramm mit dem Befehl
gpg-agent --daemon
hinzugefügt.
Schlüssel zurückziehen
Hat jemand Zugang zum privaten Schlüssel erhalten, so kann man den Schlüssel zurückziehen/als ungültig markieren (revoke). Die sehr gute revoke-Anleitung von Hackdiary hilft dabei. Lediglich den dort angegebenen MIT Server habe ich durch den Ubuntu Server ersetzt, an den ich meinen öffentlichen Schlüssel gesendet hatte. Das sollte eigentlich aber keinen Unterschied machen, da die Schlüsselserver die öffentlichen Schlüssel untereinander austauschen.
Super Anleitung. Du müsstest Dir in Deinem Blog noch das GP-Rating-Plugin installieren. Ich hätte Dir 9 Sterne gegeben 😉
Noch n kleiner Rechtschreibfehler: „…achten Angaben zur Erzeugung des OpenPGP-Schlüels übereinstimmen:..“
Vielen Dank für dein Feedback. Den Schreibfehler habe ich mittlerweile korrigiert.
Na gut.. 8 Sterne – Kannst Du noch etwas näher auf das Erstellen inkl. Signieren eingehen?
Danke
Das Erstellen von Paketen ist ein großes eigenes Thema, bei dem es auf das Paket selbst und die verwendeten Debian-Tools ankommt. Es würde daher einen eigenen Blog-Artikel verdienen. Mal sehen, evt. wenn ich mal etwas mehr Zeit habe..