#linux #build #rpm
Собираю rpm-пакет.
Имеется некоторый файл, содержимое которого одна строка с символов '1'.
В spec-файле имею следующие настройки сборки
%files
%defattr(-, root, root)
%config(noreplace) /path/file.config
%preun
echo "222" >> /path/file.config
То есть данный файл помечен как файл конфигурации. При удалении пакета я его модифицирую,
записываю туда некую строчку(в моем случае строку с 3-мя символа '2')
Собираю пакет, устанавливаю пакет на дистрибутив OpenSuse 13.2. Делаю установку пакета...
После установки вижу, создался файл /path/file.config со строкой с символом '1'(исходное
содержимое файла).
Меняю этот файл(чтобы он сохранился при удалении пакета), заменяю символ '1' на символ
'3'.
Теперь пробую удалить мой установленный пакет.
При удалении пакета я прописал, чтобы у меня добавилась новая строка в этот файл "222".
После удаления пакета я ожидаю увидеть сохраненный файл, содержащий 2 строки
3
222
В итоге, я вижу файл с одной строкой(только последние изменения, сделанные до удаления
пакета)
3
То есть все изменения, которые я сделал в postun-скрипте для этого файла, они были
утеряны. Почему так происходит?
Установку делаю с помощью команды rpm -i, удаление пакета с помощью rpm -e.
Можно ли сделать так, чтобы конфигурационный файл менялся в postun-скрипте, и чтобы
rpm учитывала эти изменения при сохранении конфигурационного файла после удаления пакета?
Ответы
Ответ 1
попробуйте проверить, выполняется ли вообще скрипт из секции %preun, добавив в него, например, такую строку: %preun ... touch /tmp/somefile если файл /tmp/somefile не появится после удаления пакета, то стоит попробовать перенести секцию %preun выше секции %files: ... %preun ... %files ... обновление возможно, подходящим вариантом может быть отказ от управления нужным вам файлом средствами программы rpm. попробуйте вообще убрать его из секции %files, и просто создавать его (при необходимости) из образцового файла где-нибудь в секции, например, %post. этот вариант мне кажется более простым и менее затратным, чем попытки выяснить точную последовательность действий программы rpm при работе с файлами, объявленными как %config. что вы при этом «потеряете»? насколько я понимаю, лишь возможность проверить принадлежность файла с помощью rpm -qf /ваш/файл.
Комментариев нет:
Отправить комментарий