Назад | Перейти на главную страницу

Как удалить устаревшие файлы из новой версии пакета?

Я создаю новую версию своего собственного пакета 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