|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Kirill Smelkov 2:5030/885.37 02 Jun 2002 22:30:54 To : lAll Subject : Вопрос про rpm -------------------------------------------------------------------------------- Ситуация такова: Есть мой rpm-пакет который при установке пишет несколько строк в файл (неважно какой, пусть для примера /etc/services) при удалении он эти строки стирает. Сейчас это реализовано примерно так: ----------xxx.spec---------: ... %post [ "$1" != "1" ] && exit 0 echo "xxx 12345/tcp # xxx" >> /etc/services %preun [ "$1" != "0" ] && exit 0 __TMPFILE=$(mktemp %_tmppath/%{name}.XXXXXX) || exit 1 %__sed -e '\@^xxx 12345/tcp # xxx$@d' < /etc/services > $__TMPFILE || exit 1 %__chmod --reference=/etc/services $__TMPFILE || exit 1 %__chown --reference=/etc/services $__TMPFILE || exit 1 %__mv -f $__TMPFILE /etc/services || exit 1 unset __TMPFILE --------------------------- такой вариант хорошо работает когда рассматривается только установка или удаление. Теперь вопрос: ??? Как корректно осуществить подобное для upgrade'ов ??? Дело в том, что по логике вещей старый пакет должен удалить свою строку перед тем как начнётся исполнение скриптов нового пакета. Однако rpm делает всё наоборот - сначала отрабатывают скрипты нового, а затем старого пакетов. Результат: новый пакет ничего не пишет в /etc/services, старый ничего не удаляет - осталась строчка от старого пакета, а в том случае когда содержимое строки меняется от пакета к пакету такое поведение некорректно. По видимому проблема состоит в том, что _всегда_ вначале отрабатывают скрипты устанавливаемого пакета. Всего хорошего, Кирилл. --- Gold Editor * Origin: *** Romantic Robot Station *** (2:5030/885.37) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/40323cfb29bf.html, оценка из 5, голосов 10
|