SpecTips/triggers: различия между версиями
< SpecTips
м (форматирование) |
м (более точная категория) |
||
Строка 1: | Строка 1: | ||
[[ | [[category:RPM spec]] | ||
=== Порядок выполнения скриптов === | === Порядок выполнения скриптов === | ||
Строка 23: | Строка 23: | ||
Наиболее типичная проблема, которая может потребовать этого знания, описана в [[PseudoUserPolicy]]. | Наиболее типичная проблема, которая может потребовать этого знания, описана в [[PseudoUserPolicy]]. | ||
Вторая — переименование сервиса; примером предложен пакет [http://sisyphus.ru/srpm/etcnet/spec etcnet]: | |||
<pre> | <pre> | ||
$ rpm -q --triggers etcnet | $ rpm -q --triggers etcnet |
Версия от 02:58, 15 января 2009
Порядок выполнения скриптов
Для справки: порядок, в котором выполняются скрипты при обновлении одного пакета (/usr/share/doc/rpm-4.0.4/manual/triggers
):
new-%pre для новой версии пакета (которая устанавливается) ... (установка всех новых файлов) new-%post для новой версии пакета (которая устанавливается) any-%triggerin (%triggerin из других пакетов, сработавшие на установку новой версии) new-%triggerin old-%triggerun any-%triggerun (%triggerun из других пакетов, сработавшие на удаление старой версии) old-%preun для старой версии пакета, которая удаляется ... (удаление всех старых файлов) old-%postun для старой версии пакета, которая удаляется old-%triggerpostun any-%triggerpostun (%triggerpostun из других пакетов, сработавшие на удаление старой версии)
Примеры
Наиболее типичная проблема, которая может потребовать этого знания, описана в PseudoUserPolicy.
Вторая — переименование сервиса; примером предложен пакет etcnet:
$ rpm -q --triggers etcnet triggerun script (through /bin/sh) -- etcnet < 0.5.1 if [ $2 -gt 0 ]; then # This is etcnet upgrade. /sbin/chkconfig --del etcnet /sbin/chkconfig --add network fi
Определение типа операции с пакетом
1) пакет ставится в систему в первый раз
[ $1 -eq 1 ]
в %post
и %pre
2) пакет обновляется (удаляется старый и ставится одновременно новый)
[ $1 -eq 2 ]
в %post
и %pre
, [ $1 -eq 1 ]
в %preun
и %postun
3) пакет вообще удаляется из системы
[ $1 -eq 0 ]
в %preun
and %postun