Я создаю новую версию своего собственного пакета debian, что-то было изменено, и некоторые файлы теперь должны быть удалены (например, старые сценарии выскочки, которые больше не должны выполняться). Я только что удалил эти файлы из пакета debian и похоже, что они отсутствуют в результирующем deb-файле. Также, если я устанавливаю новую версию на чистую машину, все в порядке, но когда я обновляю удаленную установку, удаленные файлы все еще присутствуют и присутствуют в списке файлов, принадлежащих пакетам: dpkg -L <package name>
(или в /var/lib/dpkg/info/<package-name>.list
что, очевидно, одно и то же).
Итак, мой вопрос: как мне правильно удалить эти файлы?
Ответ заключается в том, что когда дело доходит до conffiles, пользователь пакета предназначен для самостоятельной очистки от мусора.
Я не уверен в деталях с точки зрения политики упаковки Debian, но если вам нужно удалить, переместить или изменить конфигурационный файл при обновлении, вы можете обработать это в одном из различных сценариев ловушек preinst / postinst. Я знаю, что видел это в определенной степени в существующих пакетах.
Вот пример из постинста grub /var/lib/dpkg/info/grub-common.postinst
сценарий. Призыв к dpkg-maintscript-помощник rm_conffile удалит конфигурацию при определенных условиях.
#!/bin/sh
set -e
# Automatically added by dh_installdeb
dpkg-maintscript-helper rm_conffile /etc/grub.d/10_freebsd 2.00-14~ -- "$@"
# End automatically added section
# Automatically added by dh_installdeb
dpkg-maintscript-helper rm_conffile /etc/grub.d/10_hurd 2.00-14~ -- "$@"
# End automatically added section