Login
Newsletter
Werbung

Do, 2. Dezember 2010, 15:00

Apt-Repositorium erstellen (Variante 2: reprepro)

Für die Erstellung eines eigenen Apt-Repositoriums gibt es mehrere Möglichkeiten. In diesem Artikel geht es um die zweite Methode mit »reprepro«.

Im zweiten Teil widmen wir uns reprepro. Zwar ist apt-ftparchive, was die Verzeichniss­truktur und Flexibilität anbelangt, reprepro vorzuziehen, jedoch sind Repositorien (Repos) auf Basis von reprepro einfacher zu handhaben, so dass sich auch Einsteiger schnell zurecht finden dürften.

Die vorherige Lektüre des ersten Teils ist empfehlenswert, da der zweite Teil Bezug darauf nimmt und voraussetzt, dass ein GPG-Schlüssel sowie ein Paket vorhanden sind.

Unter Debian und diversen Derivaten lässt sich reprepro ganz einfach via apt-get install reprepro installieren. reprepro generiert Repos mit standardkonformer Verzeichnisstruk­tur, so dass wir - anders als bei apt-ftparchive - nicht weiter Hand anlegen müssen.

Konfigurationsdateien anlegen

Die Hauptkonfigurationsdatei liegt als conf/distributions im Wurzelverzeichnis des Repos. Im Beispiel verwenden wir /var/www/apt.

Codename: stardust
Suite: unstable
Architectures: i386 source
Components: main
SignWith: yes
DebIndices: Packages Release . .gz .bz2
DscIndices: Sources Release . .gz .bz2

Im Vergleich zu apt-ftparchive ist das Feld SignWith neu. Dieses Feld gibt an, das wir die »Release«-Datei signieren möchten, was wir in jedem Fall tun. Sollte statt dem Stan­dardschlüssel ein anderer zum Signieren verwendet werden, so ersetzen wir yes durch den Namen des Schlüssels.

Führt man in seinem Repo auch Debian-Installer-Pakete, so fügt man die UDeb-Eintrage analog zu denen der Standardpakete ein:

UDebComponents: main
UdebIndices: Packages Release. .gz .bz2

Zudem gibt es eine Reihe optionaler Felder. »Version«, »Description«, »Origin« und »Label« sind hierbei rein informativ. Im ersten Artikel haben wir ein Repo mit den Codenamen photonic und der Suite photonic erstellt, dahingegen erstellen wir in diesem ein Repo mit dem Codenamen stardust und der Suite unstable. Möchte man nun die Pakete aus photonic auch in stardust einbinden, muss man nicht das Paket mit der geänderten Distribution neu paketieren, sondern behilft sich mit dem Feld »AlsoAcceptFor«.

Version: 2010
Origin: ProLinux
Label: ProLinux
AlsoAcceptFor: photonic

Zudem gibt es die Möglichkeit, »Contents«-Dateien erstellen zu lassen, welche in menschenlesbarer Form den Inhalt des Repos wiedergeben, oder sich mit »apt-file« durchsuchen lassen:

Contents: . .gz .bz2
ContentsArchitectures: i386
ContentsComponents: main

Im Beispiel werden die »Contents«-Dateien nur für Standardpakete erstellt, Debian-Installer-Pakete werden dezent ignoriert. Zudem lassen sich die Komponenten bzw. Architekturen, welche in die »Contents«-Dateien einfließen sollen, einstellen.

Es gibt noch eine Reihe weniger gebräuchlicher Felder, welche man in der Hilfeseite von reprepro findet.

Normalerweise würde »apt-get update« jedesmal die vollständigen Indizes aus dem Repo herunterladen. Um nur die zwischenzeitlichen Änderungen zu holen, gibt es die Möglich­keit, »pdiff«-Dateien zu erstellen (deren Mehrwert nicht garantiert ist). reprepro in der Version 4.1 oder neuer bringt hierzu bereits das passende Hook-Skript mit, sodass man die Felder »DebIndices« und »DscIndices« wie folgt erweitert:

DebIndices: Packages Release . .gz .bz2 /usr/bin/rredtool
DscIndices: Sources Release . .gz .bz2 /usr/bin/rredtool

Unsere Datei conf/distributions ist soweit vollständig. Möchte man eine weitere Distribution hinzufügen, so lässt man einfach eine Leerzeile und beginnt einen neuen Block.

Bevor wir nun das erste Paket hinzufügen, erstellen wir noch die Datei conf/options. Falls der Schlüssel ein Passwort verlangt, muss hier ask-passphrase eingetragen werden, das reprepro sonst nicht nach dem Passwort fragt. Ansonsten können alle Kommandozeilenparameter von reprepro hier eingetragen werden, allerdings nur die langen Formen, ohne Präfix (also z.B. verbose statt -v oder --verbose).

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung