Product SiteDocumentation Site

15.3. Ein Paket-Depot für APT erstellen

Falcot Corp. hat sukzessive damit begonnen, eine Anzahl von Debian-Paketen zu betreuen, die entweder aus bestehenden Paketen lokal geändert oder von Grund auf neu erstellt wurden, um interne Daten und Programme zu verteilen.
Um ihren Einsatz zu erleichtern, möchten sie diese Pakete in ein Paketarchiv integrieren, das direkt von APT benutzt werden kann. Aus offensichtlichen verwaltungstechnischen Gründen möchten sie dabei interne Pakete von lokal neu erstellten Paketen trennen. Am Ende sollen die entsprechenden Einträge in der Datei /etc/apt/sources.list.d/falcot.list wie folgt aussehen:
deb http://packages.falcot.com/ updates/
deb http://packages.falcot.com/ internal/
Die Administratoren konfigurieren daher auf ihrem internen HTTP-Server einen virtuellen Host, bei dem /srv/vhosts/packages/ das Wurzelverzeichnis des dazugehörigen Speicherplatzes ist. Die Verwaltung des Archivs selbst wird dem Befehl mini-dinstall (im ähnlich genannten Paket) übertragen. Dieses Hilfsprogramm behält ein Verzeichnis namens incoming/ im Auge (in unserem Fall /srv/vhosts/packages/mini-dinstall/incoming/) und wartet dort auf neue Pakete; wenn ein neues Paket hochgeladen wird, wird es unter /srv/vhosts/packages/ in ein Debian-Archiv installiert. Der Befehl mini-dinstall liest die Datei *.changes, die erstellt wird, wenn das Debian-Paket erzeugt wird. Diese Dateien enthalten eine Liste aller übrigen Dateien, die dieser Version des Pakets zugeordnet sind (*.deb, *.dsc, *.diff.gz/*.debian.tar.gz, *.orig.tar.gz oder ihre Entsprechungen bei anderen Komprimierungsprogrammen), und diese lassen mini-dinstall wissen, welche Dateien installiert werden sollen. Die Dateien des Typs *.changes enthalten im jüngsten debian/changelog-Eintrag auch den Namen der Zieldistribution (häufig unstable), und mini-dinstall verwendet diese Information, um zu entscheiden, wo das Paket installiert werden soll. Deshalb müssen Administratoren dieses Feld immer ändern, bevor sie ein Paket erstellen und es in Abhängigkeit vom Zielort auf internal oder updates einstellen. mini-dinstall erzeugt dann die von APT benötigten Dateien, wie zum Beispiel Packages.gz.
Zur Konfigurierung von mini-dinstall muss eine Datei namens ~/.mini-dinstall.conf eingerichtet werden; im Falle von Falcot Corp. sieht ihr Inhalt folgendermaßen aus:
[DEFAULT]
archive_style = flat
archivedir = /srv/vhosts/packages

verify_sigs = 0
mail_to = admin@falcot.com

generate_release = 1
release_origin = Falcot Corp
release_codename = stable

[updates]
release_label = Recompiled Debian Packages

[internal]
release_label = Internal Packages
Eine beachtenswerte Entscheidung betrifft die Erzeugung der Release-Dateien für jedes Archiv. Dies ist für die Verwaltung der Prioritäten bei der Paketinstallation unter Verwendung der Konfigurationsdatei /etc/apt/preferences hilfreich (zu Einzelheiten siehe das Kapitel über die APT-Konfigurierung unter Abschnitt 6.2.5, „Paketprioritäten verwalten“).
Der Aufruf des Befehls mini-dinstall startet genau genommen den Daemon im Hintergrund. Solange dieser Daemon läuft, wird er jede halbe Stunde im Verzeichnis incoming/ nach neuen Paketen sehen; wenn ein neues Paket eintrifft, wird es ins Archiv verschoben, und die entsprechenden Dateien Packages.gz und Sources.gz werden erneuert. Falls es problematisch sein sollte, einen Daemon auszuführen, kann mini-dinstall auch jedes Mal, wenn ein Paket in das Verzeichnis incoming/ hochgeladen wird, manuell im Stapelverarbeitungsmodus (mit der Option -b) aufgerufen werden. Weitere von mini-dinstall angebotene Möglichkeiten sind auf seiner Handbuchseite mini-dinstall(1) dokumentiert.