Могу ли я собрать rpm-пакет, содержащий файл, который он не устанавливает?

Могу ли я собрать rpm-пакет, содержащий файл, который он не устанавливает?

У меня возникла ситуация, когда мне нужно создать файл конфигурации, заполненный значениями по умолчанию при первом запуске моего приложения. Это не типичный файл конфигурации, в котором мы глубоко заботимся о любых изменениях, внесенных пользователями. Во время обновления я хочу просто удалить файл конфигурации, чтобы новый код запустился и автоматически заново создал файл конфигурации со значениями по умолчанию (это не мое решение — просто неохотно выполняю приказы).

Есть ли способ создать пакет RPM, владеющий файлом, который он не устанавливает, чтобы во время удаления он удалил этот файл?

Я знаю, что всегда могу добавить скрипт pre-remove, который удалит файл, — мне просто интересно, можно ли заставить rpm делать это автоматически.

решение1

Это можно сделать с помощью %ghostдирективы:

%files
%ghost /path/to/future.file

издокументация:

Директива %ghost

Как мы уже упоминали в разделе «Список %files», если файл указан в списке %files, этот файл будет автоматически включен в пакет. Бывают случаи, когда файл должен принадлежать пакету, но не устанавливаться — файлы журналов и файлы состояния являются хорошими примерами случаев, когда вы можете захотеть, чтобы это произошло.

решение2

Нет, это невозможно.

Кстати: RPM предназначен для доставки приложений и библиотеки. Для управления конфигурацией следует использовать Ansible.

Связанный контент