[devel] Re: [sisyphus] Доигрался...

Ivan Zakharyaschev =?iso-8859-1?q?vanyaz_=CE=C1_mccme=2Eru?=
Вт Янв 9 21:45:05 MSK 2001


On Tue, 9 Jan 2001, Dmitry V. Levin wrote:

> On Tue, Jan 09, 2001 at 05:36:38PM +0300, Ivan Zakharyaschev wrote:

> > 3. Проописать в новом пакете соответсвующий trigger на старый пакет.
> Вот
> > так это сделано в console-tools из Сизифа:
> >
> > %triggerpostun -- console-tools < 0.2.3-ipl1mdk
> > /sbin/chkconfig --add keytable || echo "chkconfig failed adding
> keytable:
> > add it manually if you need"
> >
> > (он-то исполнится после всего, т.е. после этапа 2)
> >
> > Недостаток в том, что загромождается spec-файл пакета.
>
> Конечно, добавить магические строки типа
> %triggerpostun -- %name < %version-%release
> /sbin/chkconfig --add %name ||:
> не так уж и сложно.
>
> Просто поезд уже ушел, а у меня неправильных пакетов уже давно нет в
> системе. Не знаю, стоит ли это делать...
>
> > 4. Запихать все такие триггеры в один пакет, например initscripts или
> > специально для этого созданный. Тогда spec-файлы отдельных пакетов
> можно
> > оставить такими, какими они есть.
>
> В initscripts нельзя, он устанавливается в системе много раньше других.

Так это наоборот хорошо: этим гарантируется, что ни один "старый" пакет не
будет заменен без исполнения предназначенного для него trigger'а. После
установки initscripts trigger'ы будут в системе, и в конце обновления
каждого из затронутых пакетов будет исполнен один из них. Нужно только к
уже написанным магическим строчкам добавить проверку на то, происходит ли
просто удаление или обновление пакета (не уверен, что это можно сделать).

> > Дополнение к 3: в соответсвии с packaging HOWTO, учитывая то, что
> этот
> > кусок spec-файла (trigger-script) будет использован многократно,
> нужно
> > создать макрос для него, например %{chkconfigSince:scriptname
> version}.
>
> Тогда уж лучше так:
> %ChkconfigAddSince packagename packageversion scriptname
>
> > Если до этого дойдет дело, то тогда можно попробовать создать и
> макрос
> > более широкого назначения для пакетов, предоставляющих стартовые
> скрипты:
> > %{initscript:name chkconfigSince}.
>
> Не понял.

Я сам только смутно его представляю: который бы делал все то, что
прописывается вручную в spec-файле в связи с установкой init-скрипта:
вызовы chkconfig в postinstall, в preun -- с нужными проверками на
количество пакетов, а также уже описанный chkconfigAddSince. И еще, что
уже совсем на грани фантастики, добавление /etc/rc.d/init.d/scriptname в
секцию %files.

Не знаю, позволяют ли технические возможности такой макрос написать: нужна
возможность "нанизывать" команды в секции %post, %preun (в которых кроме
установки init-скрипта могут совершаться и другие действия, в том числе и
установка второго такого скрипта); можно во избежание этих трудностей
вместо %post и %preun использовать соответствующие triggers -- ограничиния
на их число, наверное, нет. Тогда на каждый init-скрипт по три триггера
(один из которых борется со "старыми" пакетами).

-- 
Best regards,
      Ivan Z.

_______________________________________________
Devel mailing list
Devel на linux.iplabs.ru
http://www.logic.ru/mailman/listinfo/devel



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