ich habe ein selbsterstelltes Paket 'own-package' welches eine Konfigurationsdatei eines anderen Paketes 'other-package' austauscht. Dazu nutze ich dpkg-divert, um die Originaldatei zu erhalten. 'other-package' ist dabei in Pre-Depends von 'own-package'. Nun gibt es ein Problem bei der Installation und eines beim Entfernen.
--- Installation ---
Installiere ich das Paket, so wird die diversion auf die Datei richtig ausgeführt und ich habe "file.orig" im Verzeichnis liegen. Im Verlauf der Installation von 'own-package' werde ich jedoch gefragt, ob ich von "file" die Version des Maintainers behalten, oder meine eigene Version installieren möchte. Zu dem Zeitpunkt sollte jedoch die Datei "file" nicht mehr vorhanden sein und "file.orig" heißen. Schaue ich in das entsprechende Verzeichnis mit ls -l ist dem auch so. Hier der dpkg-divert Aufruf im preinst-Script:
Code: Alles auswählen
if [ install = "$1" -o upgrade = "$1" ]; then
dpkg-divert --package own-package --add --rename --divert /etc/file.orig /etc/file
fi
Entferne ich das Paket wieder mit apt-get --purge, so gibt es verwirrendes Verhalten.
Folgender Code im postrm-Script sollte dafür sorgen, dass der Zustand von vor der Installation von 'own-package' wieder hergestellt wird:
Code: Alles auswählen
dpkg-divert --package own-package --remove --rename --divert /etc/file.orig /etc/iwatch/file
Code: Alles auswählen
Removing own-package ...
Removing `diversion of /etc/file to /etc/file.orig by own-package'
dpkg-divert: rename involves overwriting `/etc/file' with
different file `/etc/file.orig', not allowed
dpkg: error processing own-package (--purge):
subprocess post-removal script returned error exit status 2
Errors were encountered while processing:
own-package
E: Sub-process /usr/bin/dpkg returned an error code (1)
Wenn ich im postrm-Script eintrage, dass die Datei "/etc/file" entfernt werden soll (mit rm -f), bevor dpkg-divert angewendet wird, so ist anschließend auch die Originaldatei weg (wird durch --purge mit dem Paket 'own-package' entfernt).
Wo liegt hier mein Denk- und/oder Konfigurationsfehler? Welche Infos fehlen vielleicht noch zur Problemfindung und -lösung?
McAldo