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.
To make deployment easier, they want to integrate these packages in a package archive that can be directly used by APT. For obvious maintenance reasons, they wish to separate internal packages from locally-rebuilt packages. The goal is for the matching entries in a /etc/apt/sources.list.d/falcot.list file to be as follows:
deb http://packages.falcot.com/ updates/
deb http://packages.falcot.com/ internal/
The administrators therefore configure a virtual host on their internal HTTP server, with /srv/vhosts/packages/ as the root of the associated web space. The management of the archive itself is delegated to the mini-dinstall command (in the similarly-named package). This tool keeps an eye on an incoming/ directory (in our case, /srv/vhosts/packages/mini-dinstall/incoming/) and waits for new packages there; when a package is uploaded, it is installed into a Debian archive at /srv/vhosts/packages/. The mini-dinstall command reads the *.changes file created when the Debian package is generated. These files contain a list of all other files associated with the version of the package (*.deb, *.dsc, *.diff.gz/*.debian.tar.gz, *.orig.tar.gz, or their equivalents with other compression tools), and these allow mini-dinstall to know which files to install. *.changes files also contain the name of the target distribution (often unstable) mentioned in the latest debian/changelog entry, and mini-dinstall uses this information to decide where the package should be installed. This is why administrators must always change this field before building a package, and set it to internal or updates, depending on the target location. mini-dinstall then generates the files required by APT, such as 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.