[devel] Вопрос по rpm

Sergey Vlasov vsu на altlinux.ru
Пн Апр 30 11:01:09 MSD 2007


On Mon, Apr 30, 2007 at 06:39:39AM +0400, Денис Смирнов wrote:
> Есть такой чудесный пакет как asterisk. К нему в отдельные субпакеты
> кладутся модули.
> 
> При обновлении астериска он, ясное дело, перезапускается. Но его
> обновление происходит раньше обновления модулей, в связи с чем нет никакой
> гарантии что он таки перезапустится правильно. Хуже всего то, что ABI
> плагинов меняется без предупреждения и при этом точечно, что может
> привести к непредсказуемому поведению (из-за того что астериск загрузится
> с модулями от предыдущего).
> 
> Ставить перезапуск астериска в каждый субпакет это будет несколько
> неаккуратно.

Но, похоже, придётся...

Можно сделать объезд следующего вида:

- В asterisk-common (или как там называется пакет, на который у всех
  прочих пакетов имеется PreReq, и который всегда обновляется первым)
  в %pre кладётся скрипт, который в случае, если asterisk запущен,
  останавливает его и кладёт файл с информацией об этом, например, в
  %_localstatedir/%name.  Можно посмотреть пример такого способа в
  пакете samba (%preun common).

- В каждый пакет с модулями кладётся файл, в который пишется
  %version-%release от соответствующей ему сборки asterisk.

- В %post основного пакета asterisk и пакетов с модулями проверяются
  все файлы с версиями, и перезапуск asterisk производится только в
  том случае, если все обнаруженные модули относятся к текущей версии,
  и при этом существует файл, созданный в %preun при остановке сервиса
  (здесь же этот файл и удаляется).  Пример без проверок версий
  опять-таки в %post пакета samba.
----------- следущая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: Digital signature
Url     : http://lists.altlinux.org/pipermail/devel/attachments/20070430/b1d925f1/attachment.bin 


Подробная информация о списке рассылки Devel