Paketinstallation ohne entfernte Quelle
Debian Programmpakete ohne offizielle Paketquelle lokal verwalten
Viele Entwickler bieten ihre Programme mittlerweile abseits der offiziellen Paketquellen über Downloads zur Installation mit dpkg an. Bei der Installation mit dpkg können bestehende Abhängigkeiten jedoch nicht aufgelöst werden. Das Paket local-apt-repository schafft hier Abhilfe.
Die Standardwerkzeuge für die Installation und Deinstallation von Programmen auf Debian-basierten Linux-Systemen sind dpkg
und apt
. Während dpkg
("Debian Package") das grundlegende Programm zum Installieren und Manipulieren von Debian-Binärpaketen ist, bietet apt
("Advanced Packaging Tool") eine komfortable Schnittstelle zu dpkg
und zusätzliche Möglichkeiten wie die Suche und das Herunterladen von Paketen sowie das Auflösen von Abhängigkeiten – alles Funktionen, die dpkg
alleine nicht beherrscht. apt
kann somit als benutzerfreundliches Frontend zum im Hintergrund arbeitenden dpkg
gesehen werden.
Zur Installation von Debian-Binärpaketen, die nicht aus einem Debian-Repository stammen, ist es möglich, diese nach dem Herunterladen mit dem Befehl dpkg -i <packagename>
zu installieren. Dies funktioniert jedoch nur dann reibungslos, wenn es keine Abhängigkeiten zu Paketen gibt, die noch nicht auf dem Rechner installiert sind. Sollte es diese geben, müssen sie anschließend mit dem Befehl apt-get -f install
aufgelöst werden.
Diesen Schritt kann man sich sparen, wenn man das Paket local-apt-repository
installiert und verwendet. Ein positiver Nebeneffekt ist, das auf diese Art und Weise Debian-Binärpakete, die ohne Paketquelle heruntergeladen wurden, übersichtlich in einem bestimmten Verzeichnis und nicht an möglicherweise verschiedenen Stellen auf dem Computer gespeichert werden.
Das Paket local-apt-repository
wird ganz normal mit apt-get
installiert. Als einzige Arbeit nach der Installation muss das Verzeichnis /srv/local-apt-repository/
erstellt werden, denn wie man sieht, wird bei der Installation ein systemd-Service implementiert, der dieses Verzeichnis auf Änderungen überwacht:
$ sudo apt-get install local-apt-repository
...
Vorbereitung zum Entpacken von .../local-apt-repository_0.4+deb9u1_all.deb ...
Entpacken von local-apt-repository (0.4+deb9u1) ...
local-apt-repository (0.4+deb9u1) wird eingerichtet ...
Created symlink /etc/systemd/system/paths.target.wants/local-apt-repository.path
→ /lib/systemd/system/local-apt-repository.path
$ cat /lib/systemd/system/local-apt-repository.service
[Unit]
Description=Local apt repository recreation
[Service]
Type=oneshot
ExecStart=/usr/lib/local-apt-repository/rebuild
$ cat /lib/systemd/system/local-apt-repository.path
[Path]
PathChanged=/srv/local-apt-repository
[Install]
WantedBy=paths.target
$ sudo mkdir -p /srv/local-apt-repository
$
Sobald ein Debian-Binärpaket in diesem Verzeichnis gespeichert wird, startet im Hintergrund das Skript /usr/lib/local-apt-repository/rebuild
, das mit Hilfe des Programms apt-ftparchive
die Meta-Daten zu diesem Paket im Verzeichnis /var/lib/local-apt-repository/
erstellt. Dieses wiederum wurde bei der Installation von local-apt-repository
zur Liste der Paketquellen in /etc/apt/sources.d/
hinzugefügt.
Nach einem üblichen apt-get update
kann jetzt das Debian-Binärpaket mit apt-get
inklusive automatischer Auflösung der Abhängigkeiten installiert werden.
Das ursprüngliche Binärpaket bleibt im Verzeichnis /srv/local-apt-repository/
gespeichert.