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.