Die nachfolgend vorgestellte Lösung ist ähnlich zu der in
Abschnitt 30.1, „Verzeichnis mit Paketen“. Es ergänzt diese jedoch
noch um passende Metadaten (auch Packages index files genannt). Die
Basis bildet hier ebenfalls ein Verzeichnis, welches Sie als Ablage für
ihre Softwarepakete benutzen möchten. Hier heißt dieses Verzeichnis
beispielhaft /opt/paketarchiv/local
. Sofern es noch nicht vorhanden
ist, legen Sie dieses im 1. Schritt noch wie folgt an:
Schritt 1: Verzeichnis für das Paketarchiv anlegen.
# mkdir -p /opt/paketarchiv/local
Im 2. Schritt kopieren Sie alle gewünschten .deb
-Pakete in dieses
Verzeichnis:
Schritt 2: Daten hineinkopieren.
# cp -v *.deb /opt/paketarchiv/local
Im 3. Schritt erzeugen Sie noch zusätzliche Metadaten für ihr
Paketarchiv. Dabei kommt das Werkzeug dpkg-scanpackages
aus dem Paket
dpkg-dev [Debian-Paket-dpkg-dev] zum Einsatz. Sofern Sie bisher noch
keine Debian-Pakete selbst gebaut haben, dürfte dieses Paket noch nicht
auf ihrem System vorhanden sein und Sie müssen es daher vor der
Benutzung nachinstallieren.
Nun erstellen Sie die benötigten Metadaten mittels dpkg-scanpackages
.
Als minimale Angabe erwartet dpkg-scanpackages
den Pfad zum
Paketarchiv und schreibt dann seine Ausgabe auf stdout
. Besser ist es,
die Ausgabe mittels Umleitungsoperator >
gleich in eine passende Datei
namens Packages
umzulenken (Schreibweise des Dateinamens mit großem
P
). Der nachfolgende Aufruf geht noch einen Schritt weiter und
komprimiert die Ausgabe zusätzlich mittels gzip
, so dass als Ergebnis
die Datei Packages.gz
entsteht:
Schritt 3: Metadaten zum Paketarchiv erzeugen (Packages.gz
).
# cd /opt/paketarchiv # dpkg-scanpackages local/ | gzip -c > local/Packages.gz dpkg-scanpackages: Information: 6 Einträge wurden in Ausgabe-Paketdatei geschrieben. #
Liegen bspw. 6 Debian-Pakete in Form von .deb
-Dateien im Paketarchiv,
liest dpkg-scanpackages
deren Metadaten, gibt eine Meldung wie oben
aus und leitet die Informationen an gzip
weiter. gzip
komprimiert
die empfangenen Daten zunächst und speichert diese dann als Datei
Packages.gz
im Verzeichnis des Paketarchivs. Die erzeugte Datei
Packages.gz
beinhaltet Informationen pro Paket in der folgenden Form:
Paketinformationen zum beispielhaft verwendeten Paket meta-mc.
# cat local/Packages Package: meta-mc Version: 1.0 Architecture: all Maintainer: Frank Hofmann <frank.hofmann@efho.de> Installed-Size: 9 Depends: mc, mc-data Filename: local/meta-mc_1.0_all.deb Size: 3392 MD5sum: e8889ea18c25b40ba4cac00b7faf1518 SHA1: 58e5f6b03643d6da7fa471f63f387335a2df5e55 SHA256: fb6ee7948c5a5b243b6940b172af96fa72123d9c031caca62541d8c4f14aa7de Section: misc Priority: optional Multi-Arch: foreign Description: Installs the Midnight Commander Installs the Midnight Commander ... #
Die Pfadangabe, die Sie dpkg-scanpackages
geben, ist jedoch tückisch.
Laut Manpage und den von uns online gefundenen Beispielen kann jeder
Pfad verwendet werden, in unseren Tests können wir das jedoch nicht
bestätigen. Die von uns oben genutzte Form funktioniert auch später mit
APT und aptitude
zur Installation von Paketen.
Bitte beachten Sie, dass Sie diesen Schritt mittels dpkg-scanpackages
jedes Mal wiederholen müssen, wenn Sie Pakete im Paketarchiv hinzufügen
oder Pakete daraus entfernen. Mit dem folgenden Shellskript lässt sich
der Schritt automatisieren:
Automatisierung mit Hilfe eines Shellskriptes.
#! /bin/bash dpkg-scanpackages /opt/paketarchiv/local | gzip -c > /opt/paketarchiv/local/Packages.gz
Idealerweise legen Sie das Skript unter einen passenden Pfad wie bspw.
/usr/bin
ab. Damit vereinfacht sich ihr Aufruf.
Nun folgt der 4. Schritt — das Hinzufügen ihres soeben erzeugten,
lokalen Paketarchivs zur Liste der von Ihnen genutzten Repositorys
(siehe Abschnitt 3.4, „Die Datei /etc/apt/sources.list
verstehen“). Entweder ergänzen Sie die
Datei /etc/apt/sources.list
um eine Zeile mit ihrem Paketarchiv oder
Sie erstellen eine separate Datei im Verzeichnis
/etc/apt/sources.list.d
. Für obiges Beispiel sieht die Zeile wie folgt
aus, um ihr Paketarchiv zunächst lokal einzubinden:
Schritt 4: Zusätzlicher Eintrag in der Datei /etc/apt/sources.list
.
deb [trusted=yes] file:///opt/paketarchiv local/
Die Angabe [trusted=yes]
teilt APT mit, dass die Pakete aus der
angegebenen, lokalen Paketquelle vertrauenswürdig sind. Damit sparen Sie
sich (zunächst) den kryptographischen Überbau und können ihr Archiv
sofort verwenden.
Um das Paketarchiv nun auch für andere Benutzer via HTTP oder HTTPS zugänglich zu machen, stellen Sie das Verzeichnis bspw. mit Hilfe eines lokalen Webservers bereit. Ein gültiger Eintrag wäre bspw. der folgende:
Zusätzlicher Eintrag in der Datei /etc/apt/sources.list
(Webserver).
deb [trusted=yes] https://www.webserver.com/paketarchiv local/
Ab APT in der Version 1.5 (verfügbar ab Debian 10 Buster) unterstützt es HTTPS von sich aus. Nutzen Sie (noch) eine frühere Veröffentlichung und möchten ihr Paketarchiv ebenfalls via HTTPS anzubieten, greifen Sie zusätzlich auf das Paket apt-transport-https [Debian-Paket-apt-transport-https] zurück. Mehr Informationen dazu finden Sie unter [LambAptHTTPS].
Mit obigem Eintrag vertraut APT nun allen Paketen aus ihrem Paketarchiv.
Aktualisieren Sie nun Ihre Liste der verfügbaren Pakete — bspw. mit
apt-get update
— „lernt“ APT ihr Paketarchiv und kann
Softwarepakete daraus in ihr System einbinden.
Bitte beachten Sie, dass es bei dieser Lösung keine Authentifizierung und Integritätsprüfung der Pakete im Archiv gibt. Die Verantwortung über die bereitgestellten Softwarepakete liegt vollständig bei Ihnen.