Debian postrm läuft zweimal und schlägt fehl

308
Stewart

Das paket:

CMakeLists.txt:

cmake_minimum_required(VERSION 3.7) project(sim-runtime) install(PROGRAMS $/sim-runtime-info DESTINATION bin) set(CPACK_GENERATOR "DEB") set(CPACK_PACKAGE_NAME sim-runtime) set(CPACK_PACKAGE_VERSION "1.5") set(CPACK_DEBIAN_PACKAGE_DEPENDS "geographiclib-tools") set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "$/postinst;$/postrm") include(CPack) 

postinst:

#! /bin/sh /usr/sbin/geographiclib-get-gravity wgs84 

postrm:

#! /bin/sh rm /usr/share/GeographicLib/gravity/wgs84.egm 

/usr/sbin/geographiclib-get-gravityist ein Skript, das von der geographiclib-toolsAbhängigkeit bereitgestellt wird . Wenn ich es in postinst anrufe, wird es heruntergeladen/usr/share/GeographicLib/gravity/wgs84.egm

Da dadurch eine verwaiste Datei erstellt wird, ist es sinnvoll, sie zu löschen, wenn das Paket deinstalliert wird. Deshalb habe ich den rmBefehl in hinzugefügt postrm.

Das Problem:

dpkg -i sim-runtime-1.5-Linux.debfunktioniert gut. postinstlädt die Datenbanken entsprechend herunter und installiert alle Dateien. Dann:

stew@stewbian:~$ sudo dpkg -P sim-runtime (Reading database ... 228685 files and directories currently installed.) Removing sim-runtime (1.5) ... Purging configuration files for sim-runtime (1.5) ... rm: cannot remove '/usr/share/GeographicLib/gravity/wgs84.egm': No such file or directory dpkg: error processing package sim-runtime (--purge): subprocess installed post-removal script returned error exit status 1 Errors were encountered while processing: sim-runtime 

Nachdem Sie diesen Befehl ausgeführt haben, sind alle vom Paket installierten Dateien gelöscht, die Datenbanken, in die wir heruntergeladen haben, postinstsind nicht mehr vorhanden. Alles sieht gut aus, aber das Paket selbst wurde nicht als entfernt markiert.

Einige Untersuchungen:

  • Mein erster Gedanke ist, dass vielleicht etwas anderes gelöscht wurde, bevor diese Dateien postrmaufgerufen wurden. Ich habe versucht zu entfernen postrm. Das Paket wird ordnungsgemäß deinstalliert, die Datenbank bleibt jedoch verwaist.

Die Frage:

Wie kann eine Datei, die erstellt wurde, entfernt werden postinst?

0

1 Antwort auf die Frage

0
Stewart

Ok, ich habe hier eine Antwort gefunden .

Die Lösung bestand darin postrm, dies zu ändern :

#! /bin/sh if [ $1 = 'purge' ] then rm /usr/share/GeographicLib/gravity/wgs84.egm fi