SpecTips/triggers: различия между версиями

Материал из ALT Linux Wiki
м (более точная категория)
Строка 4: Строка 4:


Для справки: порядок, в котором выполняются скрипты при обновлении одного пакета (<code>/usr/share/doc/rpm-4.0.4/manual/triggers</code>):
Для справки: порядок, в котором выполняются скрипты при обновлении одного пакета (<code>/usr/share/doc/rpm-4.0.4/manual/triggers</code>):
<pre>new-%pre для новой версии пакета (которая устанавливается)
<pre> new - %pre для новой версии пакета (которая устанавливается)
   ... (установка всех новых файлов)
   ... (установка всех новых файлов)
   new-%post для новой версии пакета (которая устанавливается)
   new-%post для новой версии пакета (которая устанавливается)


   any-%triggerin (%triggerin из других пакетов, сработавшие на установку новой версии)
   any - %triggerin (%triggerin из других пакетов, сработавшие на установку новой версии)
   new-%triggerin
   new - %triggerin
   old-%triggerun
   old - %triggerun
   any-%triggerun (%triggerun из других пакетов, сработавшие на удаление старой версии)
   any - %triggerun (%triggerun из других пакетов, сработавшие на удаление старой версии)


   old-%preun для старой версии пакета, которая удаляется
   old - %preun (для старой версии пакета, которая удаляется)
   ... (удаление всех старых файлов)
   ... (удаление всех старых файлов)
   old-%postun для старой версии пакета, которая удаляется
   old - %postun (для старой версии пакета, которая удаляется)


   old-%triggerpostun
   old - %triggerpostun
   any-%triggerpostun (%triggerpostun из других пакетов, сработавшие на удаление старой версии)</pre>
   any - %triggerpostun (%triggerpostun из других пакетов, сработавшие на удаление старой версии)</pre>


=== Примеры ===
=== Примеры ===

Версия от 08:19, 12 мая 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

Ссылки