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.

Top