[devel] Вопрос по rpm
Sergey Vlasov
=?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Пн Апр 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.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: Digital signature
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20070430/b1d925f1/attachment-0001.bin>
Подробная информация о списке рассылки Devel