Ответ 1
То, что вы ищете, это dpkg-triggers.
Одним из решений с использованием debhelper для создания пакетов debian является следующее:
Шаг 1)
Создайте файл debian/<serverPackageName>.triggers
(замените <serverPackageName>
на имя вашего пакета сервера).
Шаг 1a)
Определите триггер, который смотрит каталог вашего пула. Содержимое файла будет:
interest /path/to/my/pool
Шаг 1b)
Но вы также можете определить именованный триггер, который должен быть запущен явно (см. шаг 3).
содержимое файла:
interest cdn-pool-changed
Имя триггера cdn-pool-changed является бесплатным. Вы можете взять все, что захотите.
Шаг 2)
Добавить обработчик для триггера в файл debian/<serverPackageName>.postinst
(замените <serverPackageName>
на имя вашего пакета сервера).
Пример:
#!/bin/sh
set -e
case "$1" in
configure)
;;
triggered)
#here is the handler
/etc/init.d/<serverPackageName> restart
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#
exit 0
Замените <serverPackageName>
на имя вашего пакета сервера.
Шаг 3) (только для названных триггеров, шаг 1b))
Добавьте в каждый пакет содержимого файл debian/<contentPackageName>.triggers
(замените <contentPackageName>
на имена ваших пакетов содержимого).
содержимое файла:
activate cdn-pool-changed
Используйте одно и то же имя для триггера, определенного на шаге 1.
Более подробная информация
Лучшее описание для dpkg-триггеров, которые я мог найти, это " Как использовать триггеры dpkg". Соответствующий репозиторий git с примерами, которые вы можете получить здесь:
git clone git://anonscm.debian.org/users/seanius/dpkg-triggers-example.git