[devel] Поддержка systemd в post/preun_service скриптах

Pavel Shilovsky piastry на altlinux.org
Чт Фев 7 13:01:12 MSK 2013


7 февраля 2013 г., 2:48 пользователь Dmitry V. Levin <ldv на altlinux.org> написал:
> On Wed, Feb 06, 2013 at 08:44:15PM +0400, Alexey Shabalin wrote:
>> 5 февраля 2013 г., 4:14 пользователь Dmitry V. Levin написал:
>> > On Mon, Feb 04, 2013 at 04:35:26PM +0400, Alexey Shabalin wrote:
>> >> 4 февраля 2013 г., 16:29 пользователь Pavel Shilovsky написал:
>> >> > 4 февраля 2013 г., 16:11 пользователь Alexey Shabalin написал:
>> >> >> 4 февраля 2013 г., 16:02 пользователь Pavel Shilovsky написал:
>> >> >>> Добрый день!
>> >> >>>
>> >> >>> Сейчас работаю над поддержкой и systemd и sysvinit в спеках OpenStack
>> >> >>> (сейчас там жёстко пробито использование systemd, что делалось на
>> >> >>> скорую руку). Обнаружил, что для нормальной поддержки обеих систем не
>> >> >>> хватает того, что скрипты post_service и preun_service умели понимать,
>> >> >>> что система работает с systemd и вызывали соответствующие команды.
>> >> >>> Нашёл багу, где аналогичное уже сделано для скрипта service:
>> >> >>> https://bugzilla.altlinux.org/show_bug.cgi?id=24989
>> >> >>
>> >> >> Если Вы заметили, то баг закрыт, т.е. исправлен.
>> >> >> Больше ничего делать не надо.
>> >> >> service умеет понимать, зачем этому же учить post/preun_service?
>> >> >
>> >> > Скрипты post/preun_service вызывают помимо service команду chckonfig.
>> >> chkconfig тоже обучен работе с systemd. сервисы успешно регистрируются.
>> >
>> > Обучить post/preun_service по аналогии с service все равно нужно для того,
>> > чтобы проще было поддерживать сервисы, в которых есть service-файлы и
>> > уже нет init-скриптов.  Но это надо сделать более тонко, чем в
>> > вышеупомянутом патче.
>>
>> В общем да. Существуют такие dbus-сервисы (например
>> accounts-daemon.service) для которых нет init-скрипта, но которые не
>> мешало бы рестартовать при systemd.
>>
>> >
>> >> Другое дело, что они по умолчанию в ALTLinux не включаются.
>> >
>> > Хорошо бы запаковать каталоги, описанные в systemd.preset(5), а также
>> > /lib/systemd/system-preset/99-default.preset оттуда же.
>> Я упаковал пока федорину копию /lib/systemd/system-preset/90-default.preset
>
> Что-то там уж больно много всякой всячины разрешено.
> И федоризмы остались, такие как atd (у нас atd встроен в crond).
>
>> Теперь нужно ещё добавить вызовы systemctl preset.
>
> Вот прямо в post_service его и надо будет вставить.
>
>> Я пока не пакую никаких макросов для rpm.
>> Надо придумать куда лучше их вставить:
>> http://cgit.freedesktop.org/systemd/systemd/tree/src/core/macros.systemd.in
>
> По идее, после доработки {post,preun}_service нам будет достаточно
> нынешних %{post,preun}_service.
>
> Насколько я понимаю, в случае sd_booted реализация post_service должна
> делать примерно то же, что %systemd_post и %systemd_postun_with_restart
> вместе взятые, в preun_service - примерно то же, что %systemd_preun.

Сделал что-то похожее на предложенное выше:
http://git.altlinux.org/people/piastry/packages/?p=service.git;a=commitdiff;h=950540de8cf8e5987c5694a529efded393ed8bfa

-- 
Best regards,
Pavel Shilovsky.


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