Страницы

Поиск по вопросам

четверг, 23 января 2020 г.

Config файл при сборке Rpm-пакета

#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 /ваш/файл.

Комментариев нет:

Отправить комментарий