Файловые триггеры позволяют запускать произвольные скрипты при добавлении или удалении определенных файлов в систему. Каждый триггер foo состоит из двух файлов:

Эти файлы устанавливаются в директорию /var/lib/rpm/filetriggers (в spec-файле настоятельно рекомендуется использовать макрос %_filetriggers_dir).

Типичные примеры использования файловых триггеров:

Использование

Если вы хотите, что бы ваш пакет добавил в систему файловый триггер, вы должны установить соответствующие файлы filter и script в директорию %_filetriggers_dir.

Файл filter должен содержать обычное регулярное выражение, с которым будут сравниваться имена файлов. Чтобы различать добавление и удаление файлов, перед именем файла ставится дополнительный символ - '+' соответствует добавлению файла, '-' - удалению. Например, триггер с регулярным выражением \+/etc/gconf/schemas/[^/]*\.schemas$ сработает при добавлении файлов с расширением '.schema' в поддиректории /etc/gconf/schemas/. Если вы хотите обрабатывать как добавление, так и удаление файлов, можете использовать в начале регулярного выражения точку ('.'), которая соответствует любому символу.

Стандартный пример - это триггер, запускающий ldconfig при добавлении новых библиотек в директории /lib, /lib64, /usr/lib или /usr/lib64:

$ cat /var/lib/rpm/filetriggers/ldconfig.filter
^.((/lib|/usr/lib)(64)?/[^/]*\.so\.|/etc/ld.so.conf.d/[^/]*\.conf)

$ cat /var/lib/rpm/filetriggers/ldconfig.script
#!/bin/sh
ldconfig -X