4.45 dpkg-divert

Datei-diversions - im Deutschen in etwa Umleitungen, Ablenkungen oder auch Diversifikationen - erlauben es dem Debian Paketmanagement, Dateien nicht an der vorgesehenen, sondern an einer umgeleiteten Stelle im Dateisystem abzulegen. dpkg-divert kann innerhalb von Debian Paket-Skripten eingesetzt werden, um eine Datei aus einem anderen Paket zu überschreiben. Dabei wird, wie gleich noch gezeigt wird, die Datei nicht tatsächlich überschrieben, sondern nur umbenannt.

Während der Installation eines Pakets können so einzelne Dateien, beispielsweise Programme oder Manpages, durch andere Versionen ersetzt werden. Konfigurationsdateien sind von dieser Funktionalität ausgenommen. Um Konfigurationsdateien zu managen, ist entweder ein Paket zu erstellen, das das Ursprungspaket ersetzt oder mit diesem in Konflikt steht, oder aber es ist ein Paket zu erstellen, das Teile der Konfiguration enthält und diese mit dem Hauptpaket teilt (durch entsprechende Abhängigkeiten).

Beispielsweise kann ein Paket während der Installation ein Programm durch eine angepasste Version ersetzen. Hierzu ist sinngemäß Folgendes in das preinst-Skript des Pakets einzufügen:

if [ install = "$1" -o upgrade = "$1" ]; then 
   dpkg-divert --package smailwrapper --add --rename \ 
      --divert /usr/sbin/smail.real /usr/sbin/smail 
fi  

In der Datei postrm des Pakets muss dieser Vorgang wieder rückgängig gemacht werden:

if [ remove = "$1" ]; then 
   dpkg-divert --package smailwrapper --remove --rename \ 
      --divert /usr/sbin/smail.real /usr/sbin/smail 
fi 

Die Dateien aus dem Debian Paket bleiben unangetastet mit Ausnahme der Umbenennung.

Mittels dpkg-divert markierte Dateien werden bei einem späteren Update nicht von Dateien aus einem aktuelleren Paket überschrieben.

dpkg-divert kann ausschließlich auf Dateien und nicht auf Verzeichnisse angewendet werden.

Mit dpkg-divert können diese Umleitungen gesetzt, angezeigt oder auch wieder gelöscht werden. Weiterhin lassen sich die ursprünglichen Namen der umgeleiteten Dateien ermitteln. Die Syntax für das Kommando dpkg-divert lautet:

dpkg-divert [options] [--add] <file>
dpkg-divert [options] --remove <file>
dpkg-divert [options] --list <glob-pattern>
dpkg-divert [options] --truename <file>
  

Die möglichen Optionen von dpkg-divert lauten:

--add (Optional)

Wird keine Option angegeben, so wird automatisch --add verwendet. Diese Option fügt die angegebene Datei in die Liste der zu diversifizierenden Dateien ein.

--admindir <Verzeichnis>

Setzt das Verzeichnis, in dem sich die Daten für dpkg befinden (normalerweise: /var/lib/dpkg/).

--divert <Umlenken nach>

Bestimmt einen neuen Namen für die Datei.

--help

Zeigt eine kurze Anleitung zu dpkg-divert an.

--local

Bewirkt, dass alle verfügbaren Versionen eines Paketes diversifiziert werden.

--list [<file>]

Zeigt die bestehenden Diversifikationen an. Wird ein Dateiname angegeben, so werden nur die entsprechenden Dateien angezeigt.

--package <Paketname>

Der Name eines Pakets, in dem die Kopie der Datei <Dateiname> nicht umgeleitet wird.

--quiet

Es werden keine Ausgaben auf dem Bildschirm erzeugt.

--rename

Verschiebt eine Datei. Existiert die Zieldatei bereits, so wird die Aktion abgebrochen.

--remove <file>

Löscht die angegebene Datei aus der Liste der diversifizierten Dateien und stellt den ursprünglichen Zustand wieder her.

--test

Testmodus; es werden keine Veränderungen durchgeführt.

--version

Zeigt die Versionsnummer von dpkg-divert an.

Beim Hinzufügen von Umleitungen werden, wenn nicht anders angegeben, immer die Option --divert <Ursprungsname>.distrib und die Option --local verwendet.

Eine Liste der umgeleiteten Dateien wird in der Datei /var/lib/dpkg/diversions gespeichert.

 Impressum