У меня возникла ситуация, когда мне нужно создать файл конфигурации, заполненный значениями по умолчанию при первом запуске моего приложения. Это не типичный файл конфигурации, в котором мы глубоко заботимся о любых изменениях, внесенных пользователями. Во время обновления я хочу просто удалить файл конфигурации, чтобы новый код запустился и автоматически заново создал файл конфигурации со значениями по умолчанию (это не мое решение — просто неохотно выполняю приказы).
Есть ли способ создать пакет RPM, владеющий файлом, который он не устанавливает, чтобы во время удаления он удалил этот файл?
Я знаю, что всегда могу добавить скрипт pre-remove, который удалит файл, — мне просто интересно, можно ли заставить rpm делать это автоматически.
решение1
Это можно сделать с помощью %ghost
директивы:
%files
%ghost /path/to/future.file
издокументация:
Директива %ghost
Как мы уже упоминали в разделе «Список %files», если файл указан в списке %files, этот файл будет автоматически включен в пакет. Бывают случаи, когда файл должен принадлежать пакету, но не устанавливаться — файлы журналов и файлы состояния являются хорошими примерами случаев, когда вы можете захотеть, чтобы это произошло.
решение2
Нет, это невозможно.
Кстати: RPM предназначен для доставки приложений и библиотеки. Для управления конфигурацией следует использовать Ansible.