Я обрабатываю почти 30 пакетов и имею все файлы и скрипты, которые устанавливаются.
Некоторые из этих сценариев могут выполняться во время установки пакета, но после удаления (против очистки) они
Как это управляется в стандартных пакетах Ubuntu / Debian?
Например, у меня есть файл logrotate, который устанавливается с помощью:
[ f1]Бинар /usr/bin/snapsignal исчезнет, если все пакеты будут удалены, но этот скрипт logrotate останется на месте ... поэтому, когда он запускается, он не работает на этом одном вызове.
I подумал, что я могу сделать удаление в сценарии postrm, как в:
if [ "$1" = "remove" ]
then
rm -f /etc/logrotate.d/snapmanagerdaemon
fi
Это работает для этапа удаления, но если пользователь переустанавливает пакет, он не возвращается (он не получает распакован.) Таким образом, я не получил ожидаемого вращения журнала. По крайней мере, пока я не выберу этот файл и не переустановил его вручную.
Я вижу несколько решений, но я хотел бы знать, как это делается в надлежащем пакете Debian. [!d7 ]
Одно из решений, которое будет работать, - это добавить тест, чтобы узнать, установлен ли snapsignal.
postrotate
if test -x /usr/bin/snapsignal
then
/usr/bin/snapsignal snapmanagerdaemon/LOG
fi
endscript
Только это означает, что logrotate продолжает выполнять эту запись навсегда, даже если это пакет ушел. У меня есть сходство с другими сценариями, которыми я управляю. После удаления пакета не должно быть необходимости, чтобы этот скрипт все еще выполнялся.
Обратите внимание, что логротат - это один пример, демонстрирующий проблему. Мы действительно заметили это с файлом конфигурации dpkg, сценарий, который мы размещаем под:
/etc/dpkg/dpkg.conf.d/...
, который остается на месте после удаления.
Другой тип скрипта, который остается позади и будет также вызывают проблемы: файлы CRON. Те, которые вы устанавливаете в /etc/cron.daily, /etc/cron.monthly и т. Д. Если какой-либо из этих сценариев пытается получить доступ к одному из ваших двоичных файлов после удаления, он не сработает.