30.4. mini-dinstall

Das Projekt mini-dinstall verfolgt den gleichen Zweck wie minidak: eine kleinere Version von dak und zielt auf das Betreiben eigener APT-Repositories ab. Daher ist es mit weniger Automatismen und Komfort als die größeren Varianten ausgelegt. Es steht als gleichnamiges Debianpaket für die aktuelle, stabile Veröffentlichung von Debian bereit [Debian-Paket-mini-dinstall].

Hinzukommen entweder das Paket dput [Debian-Paket-dput] oder dessen Neufassung dput-ng [Debian-Paket-dput-ng]. Beide Werkzeuge dienen dazu, Softwarepakete auf Übereinstimmung mit den Debian-Richtlinien zu prüfen und diese dann in das bereits von ihnen vorbereitete APT-Repository hochzuladen.

Bislang ist die Dokumentation zu mini-dinstall recht überschaubar. Eine Übersicht zur Benutzung anhand von Beispielen sowie den einzelnen Einträgen in der Konfigurationsdatei findet sich in der beigefügten Dokumentation zum Paket mini-dinstall sowie in der Manpage des Programms. Für die nachfolgende Beschreibung hat auch das intensive Lesen und Vergleichen verschiedener Blogbeiträge sehr viel geholfen.

30.4.1. Voraussetzungen

Die grundlegende Voraussetzung ist ein Verzeichnis für das APT-Repository — sprich: wo möchten Sie ihre Pakete ablegen. mini-dinstall ist da recht flexibel und folgt ihren Angaben. Soll das APT-Repository lediglich lokal bereitstehen, genügt ein Pfad wie bspw. /opt/paketarchiv vollkommen. Soll das APT-Repository hingegen auch von anderen Rechnern aus via HTTP oder HTTPS erreichbar sein, benötigen Sie neben einem Webserver wie Apache oder Nginx auch einen Pfad unterhalb des Wurzelverzeichnisses des Webservers, bspw. /var/www/debian. Genau diesen Fall zeigen wir hier.

30.4.2. Einrichtung

Verzeichnisstruktur des APT-Repositorys

Als erstes stellen Sie sicher, dass das Verzeichnis des APT-Repositorys vorhanden ist und legen es an, falls es noch nicht existiert:

Verzeichnis für das APT-Repository anlegen. 

# mkdir -vp /var/www/debian
mkdir: Verzeichnis '/var/www/debian' angelegt
#

Danach legen Sie ein Unterverzeichnis an, indem die neuen, von Ihnen später hochgeladenen Pakete zunächst landen. In unserem Fall heißt dieses lediglich neuepakete:

Verzeichnis für neue Pakete anlegen. 

# mkdir -vp /var/www/debian/neuepakete
mkdir: Verzeichnis '/var/www/debian/neuepakete' angelegt
#

Konfiguration für mini-dinstall

Als nächstes legen Sie eine Konfigurationsdatei für mini-dinstall an. Der übliche Name dafür ist .mini-dinstall.conf in dem Home-Verzeichnis des Benutzers, der die Pakete später in das APT-Repository hochlädt. Eine einfache Konfigurationsdatei .mini-dinstall.conf sieht wie folgt aus:

Basiseinstellungen zu .mini-dinstall.conf

[DEFAULT]
archivedir = /var/www/debian
archive_style = flat
architectures = all, amd64
mail_on_success = false

Damit liegt das APT-Repository unter /var/www/debian mit einer flachen Struktur (alle Binärpakete landen im gleichen Unterverzeichnis) und Unterverzeichnisse werden nur für die beiden Architekturen amd64 und all angelegt. Es erfolgt keine Benachrichtigung bei einem erfolgreichen Upload. Die Einstellungen gelten für alle Archive (Abschnitt [DEFAULT]), spezifische Einstellungen pro Veröffentlichungsstatus bestehen nicht.

Mit obigen Angaben ist ihr APT-Repository bereits benutzbar. APT und aptitude erwarten jedoch noch zusätzliche Informationen, um die Pakete in ihrem eigenen Repository auch als vertrauenswürdig anzuerkennen. Schritt 1 ist eine Release-Datei. Dafür ergänzen Sie die folgende Zeile am Ende der obigen Datei .mini-dinstall.conf:

Ergänzungen zu .mini-dinstall.conf

generate_release = 1

Laden Sie später ein Paket hoch oder rufen Sie mini-dinstall direkt auf, erzeugt es eine solche Release-Datei mit den Hashwerten der Pakete in ihrem Repository. Diese hat dann bspw. den folgenden Inhalt:

Inhalt der Release-Datei. 

# cat /var/www/debian/unstable/Release
Origin: root
Label: root
Suite: unstable
Codename: unstable
Date: Wed, 13 Nov 2019 17:02:23 UTC
Architectures: all amd64
MD5Sum:
 d41d8cd98f00b204e9800998ecf8427e               0 Packages
 f88f7e4006faa70eb958d8db16b863c3              33 Packages.gz
 4059d198768f9f8dc9372dc1c54bc3c3              14 Packages.bz2
 d41d8cd98f00b204e9800998ecf8427e               0 Sources
 e86c520b4bec9c320a71529fdf92275f              32 Sources.gz
 4059d198768f9f8dc9372dc1c54bc3c3              14 Sources.bz2
SHA1:
 da39a3ee5e6b4b0d3255bfef95601890afd80709               0 Packages
 91199c61d2cf161208659f6218378c86498df72e              33 Packages.gz
 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2              14 Packages.bz2
 da39a3ee5e6b4b0d3255bfef95601890afd80709               0 Sources
 17beadd3c12ddc3e8079627fc4a7f31f203c5705              32 Sources.gz
 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2              14 Sources.bz2
SHA256:
 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855               0 Packages
 adffd98c43936b6d4263f0ae73f49ca71b98675143f3bd76d62182dafd7f25dc              33 Packages.gz
 d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058              14 Packages.bz2
 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855               0 Sources
 2340b8ea571b7f6c0ed490857b3828d19334bf03693cb846114f82770b9facaf              32 Sources.gz
 d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058              14 Sources.bz2

Anmerkung

Eine Übersicht zu den einzelnen Schaltern von mini-dinstall und den zulässigen Einträgen in der Konfigurationsdatei finden Sie unter Abschnitt 30.4.4, „Schalter und Konfiguration“.

Konfiguration für dput

Nun folgt dput oder dput-ng. Die beiden Werkzeuge sind nicht unbedingt erforderlich. Beide vereinfachen Ihnen nur das Hochladen von Paketen. Ohne dput müssen Sie das manuell machen.

Ein üblicher Name für die Konfigurationsdatei ist .dput.cf im Home-Verzeichnis des Benutzers, der die Pakete später in das APT-Repository hochlädt. Darin stellen sie dput passend zum weiter oben genannten APT-Repository ein, bspw. wie folgt:

.dput.cf-Beispiel: 

[local]
fqdn = localhost
method = local
incoming = /var/www/debian/neuepakete
run_dinstall = 0
post_upload_command = mini-dinstall -b

Die Angabe [local] bezeichnet den Namen des Repositorys und alle danach folgenden Angaben beziehen sich auf dieses Repository. fqdn kürzt den Begriff fully-qualified domain name ab und bezeichnet die URL bzw. den Rechnernamen, auf dem sich das APT-Repository befindet. Der Pfad bei incoming gibt das Unterverzeichnis an, indem neue Pakete landen. Die Angabe run_dinstall = 0 legt fest, dass kein Aufruf von dinstall -n erfolgen soll, sprich: kein Installationstest für das Paket. Die letzte Zeile (post_upload_command) gibt das Kommando an, welches nach dem Hochladen ausgeführt wird. Die Angabe von mini-dinstall -b versetzt mini-dinstall in den Batchbetrieb, d.h. mini-dinstall integriert neue Pakete in das Paketarchiv, sobald diese im Unterverzeichnis für die hochgeladenen Pakete gelandet sind.

Paket in das Repository hochladen

Jetzt laden Sie ihr Paket hoch. Das nachfolgende Beispiel nutzt das in Kapitel 22, Metapakete bauen erzeugte Metapaket meta-mc.

Der Schalter -u im Aufruf kürzt --unchecked ab und überspringt den Test der kryptographischen Signaturen zum Paket. Das ist zum Testen ganz praktisch.

Hochladen eines Paketes mit dput

# dput -u local /home/frank/projekte/metapackage/meta-mc_1.0_amd64.changes
Uploading to local (via local to localhost):
Successfully uploaded packages.
#

Benutzen Sie kein dput oder dput-ng, laden Sie alle Dateien, die in der .changes-Datei zum Paket benannt sind, in das Unterverzeichnis, indem neue Pakete landen (dput macht nichts anderes).

  • Einrichtung (was noch schön wäre)

    • gpg-Schlüssel zum Signieren der bereitgestellten Pakete

30.4.3. Laufender Betrieb

  • APT-Repository zu ihren Paketquellen hinzufügen

    • neuer Eintrag in der /etc/apt/sources.list
# local repo
deb file:/var/www/debian/ unstable/
deb-src file:/var/www/debian/ unstable/
  • apt-get update
  • Ergänzungen

    • cron oder daemon

30.4.4. Schalter und Konfiguration

mini-dinstall kommt mit einer ganzen Reihe von Schaltern daher. Auch die Einträge für die Konfigurationsdatei sind etwas länger. Als Schalter unterstützt mini-dinstall die folgenden:

-b (Langform --batch)
laufe im Stapelmodus (batch mode)
-c (Langform --config=file)
benutze file als Konfigurationsdatei. Der Standardwert ist ~/.mini-dinstall.conf
-d (Langform --debug)
Gib zusätzliche Debuginformationen im Terminal und dem Logfile aus
-k (Langform --kill)
beende den laufenden Daemon sofort
-n (Langform --no-act)
führe keine Änderungen aus. Der Schalter ist nützlich in Kombination mit dem Schalter -v
-q (Langform --quiet)
zeige so wenig Informationen an, wie nur möglich
-r (Langform --run)
teile dem aktuell laufenden Daemon mit, dass er die Abarbeitungsschlange sofort bearbeiten soll
-v (Langform --verbose)
zeige ausführliche Informationen an
--help
zeige eine kurze Liste der Schalter an
--no-db
schalte das Nachschauen in der Paketdatenbank ab. apt-ftparchive läuft ohne den Schalter --db.
--no-log
schreibe kein Logfile
--version
zeige die Version von mini-dinstall an

In der Konfigurationsdatei sind die folgenden Einträge zulässig:

archivedir
The root of the mini-dinstall archive. Must be set, either here or on the command line.
extra_keyrings
Additional GnuPG keyrings to use for signature verification.
incoming_permissions
The permissions for the incoming directory. mini-dinstall will attempt to set the directory’s permissions at startup. A value of zero (´ or ´0000´) will disable permission setting. Doing this, you MUST set permission for incoming by hand! Defaults to 0750.
keyrings
GnuPG keyrings to use for signature verification of changes files. Setting this parameter will modify the default list; it is generally better to modify extra_keyrings instead. Defaults to the keyrings from the debian-keyring package.

30.4.5. Lesematerial