Dpkg-divert

Aus Foxwiki
Version vom 24. Dezember 2024, 13:16 Uhr von Dirkwagner (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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 angewandt 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

Unix GNU Parameter Beschreibung
--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 <Directory> 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