Debian postrm работает дважды и не работает

281
Stewart

Посылка:

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-gravityскрипт, предоставляемый geographiclib-toolsзависимостью Когда я звоню в postinst, он скачивает/usr/share/GeographicLib/gravity/wgs84.egm

Поскольку это создает потерянный файл, имеет смысл удалить его, когда мы удаляем мой пакет. Вот почему я добавил rmкоманду в postrm.

Эта проблема:

dpkg -i sim-runtime-1.5-Linux.debработает отлично. postinstзагружает базы данных соответствующим образом и устанавливает все файлы. Затем:

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 

После выполнения этой команды все файлы, установленные пакетом, исчезли, базы данных, которые мы загрузили postinst, исчезли. Все выглядит отлично, но сам пакет не был помечен как удаленный.

Некоторое расследование:

  • Моя первая мысль - возможно, что-то еще автоматически удалило эти файлы до того, как postrmбыло вызвано. Я пытался удалить postrm. Пакет удаляется должным образом, но эта база данных остается бесхозной.

Вопрос:

Как удалить файл, который был сгенерирован postinst?

0

1 ответ на вопрос

0
Stewart

Хорошо, я нашел ответ здесь .

Решение было изменить postrmна это:

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

Похожие вопросы