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

0

Посылка:

CMakeLists.txt:

cmake_minimum_required(VERSION 3.7)
project(sim-runtime)
install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/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  "${CMAKE_CURRENT_SOURCE_DIR}/postinst;${CMAKE_CURRENT_SOURCE_DIR}/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?

Stewart
источник

Ответы:

0

Хорошо я нашел ответ Вот ,

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

#! /bin/sh
if [ $1 = 'purge' ]
then
  rm /usr/share/GeographicLib/gravity/wgs84.egm
fi
Stewart
источник