Debian: Eigenes Package Repository mit reprepro

Ein Eigenes Debian Package Repository einzurichten und zu verwalten ist relativ aufwendig. So muss die richtige Verzeichnisstruktur angelegt, die Pakete an die passende Stelle kopiert und Index-Dateien erstellt so wie signiert werden. Dabei helfen kann jedoch die Software reprepro.

Erstellen des Repository

Im Folgenden wird beschrieben, wie ein eigenes Package Repository unter Ubuntu angelegt werden kann. Es beschränkt sich jedoch nicht auf Pakete für Debian oder Ubuntu, sondern kann für alle Linux Distributionen verwendet werden, die das Debian Package System verwenden.

Zunächst wird die Software reprepro installiert.

$ sudo apt-get install reprepro

Anschließend wird ein Wurzelverzeichnis angelegt und dort hinein gewechselt. Weiterhin werden in diesem Schritt noch zwei weitere Unterordner conf und htdocs erstellt. Dabei werden im Verzeichnis conf die Konfigurationsdateien hinterlegt und in htdocs landen alle Dateien, die über den Webserver bereitgestellt werden sollen.

$ mkdir -p /das/wurzelverzeichnis
$ cd /das/wurzelverzeichnis
$ mkdir -p conf htdocs

In die Datei options im conf Verzeichnis, muss folgendes geschrieben werden.

ask-passphrase
outdir ./htdocs/
basedir /das/wurzelverzeichnis

Hier steht ask-passphrase dafür, dass nach einem Passwort gefragt wird, wenn für den GPG-Schlüssel, der für die Signierung eins verwendet wird, eins benötigt wird. Mit outdir wird das Verzeichnis angegeben, in dem die zu veröffentlichenden Dateien landen sollen. In diesem Fall also das htdocs Verzeichnis und mit basedir wird das Wurzelverzeichnis angegeben.

Bevor mit der Konfiguration fortgefahren werden kann, muss ein GPG-Schlüssel für die Signierung der Dateien angelegt werden.

$ gpg --gen-key

Anschließend können alle Vorhandenen Schlüssel wie folgt angezeigt werden.

$ gpg --list-keys

Ist dies geschafft kann die Datei conf/distributions mit folgendem Inhalt angelegt werden.

Origin: Der Titel
Label: Eine kurze Beschreibung
Codename: [zum Beispiel squeeze oder lucid]
Architectures: i386 amd64 source
Components: main non-free [und weitere]
Description: Beschreibung
SignWith: ID des Key

Ist dies so weit geschafft, kann das erste Paket aufgenommen werden. Der folgende Befehl fügt das Paket dem Index für Debian Squeeze hinzu.

$ reprepro includedeb squeeze /tmp/paket_0.1-debian1_amd64.deb

Bevor die Dateien anderen Nutzern bereitstehen muss noch ein Webserver installiert bzw. eingerichtet werden. Da dies jedoch im Zusammenhang mit der Einrichtung von reprepro zu Umfangreich ist, wird dies hier nicht beschrieben.

Einbinden des Repository

Damit das Repository von anderen Nutzern eingebunden werden kann muss zunächst der öffentliche GPG-Schlüssel bereitgestellt werden. Dazu wird er wie folgt exportiert.

$ gpg --export --armor > mein.pub.key

Der Nutzer des Repository kann sich diesen Schlüssel dann herunterladen und zum Schlüsselbund von APT hinzufügen.

$ wget http://example.org/mein.pub.key
$ sudo apt-key add mein.pub.key

Anschließend muss folgende Zeile in die Datei /etc/apt/sources.list eingefügt oder eine neue Datei mit diesem Inhalt und der Endung .list in Verzeichnis /etc/apt/sources.list.d/ angelegt werden.

deb http://example.org/ sqeeze main

Zum Abschluss ist es Zeit für eine Aktualisierung des Paket-Index.

$ sudo apt-get update

Ist dies geschafft und war alles erfolgreich sollten nun die Pakete aus dem Repository installiert werden können.

Verwandte Artikel