[devel] Q: systemd policy ?

Alexey Shabalin a.shabalin на gmail.com
Чт Май 10 11:46:08 MSK 2012


7 мая 2012 г., 18:50 пользователь Михаил написал:
> On 7 мая 2012 13:28:09 Igor Vlasenko wrote:
>> On Sun, May 06, 2012 at 01:07:05AM +0300, Igor Vlasenko wrote:
>> > Если каноническое systemd имя сервиса
>> > и традиционное альтовское название sysV скрипта расходятся,
>> > что писать аргументом %post_service?
>>
>> Как я понимаю, systemd имя сервиса переименовывать
>> нельзя, если не желаем разложить граблей - это междистрибутивный
>> инвариант и часть системы зависимостей systemd.
>>
>> При желании можно переименовывать sysV скрипты.
>>
>> Вопрос, какая у нас будет политика если имена разные?
>> Будем усложнять %post_service или переименовывать sysV скрипт?
> Можно символическую ссылку сделать на сервис в дереве systemd, с таким же
> именем как у init скрипта (см. bluetooth сервис) или в unit скрипте Alias
> прописать.

Обязательно прочитайте:
http://lists.altlinux.org/pipermail/devel/2012-January/193131.html

В текущем состоянии, симлинки спасают только частично.
И при обновлении пакета с разными именами сервиса для sysV и systemd
все равно будет ошибка(при вызове chkconfig).
Поэтому настоятельно рекомендую использовать одинаковые имена.
А вот что-куда переименовывать, придется решать мантейнеру. Желательно
дать ему несколько рекомендаций:
- на ваш сервис никто и никогда не будет ссылаться (на него не будет
зависимостей), например web-приложение, которое само зависит от
сервисов httpd и mysql, но от него никто не зависит. В этом случае не
важно как будет именоваться ваш сервис (как в апстриме или как в
altlinux).
- от вашего сервиса будут зависеть другие сервисы. Если имя сервиса
будет отличаться от апстримного, то придётся вносить правки во все
зависимые сервисы. Возможно стоит озадачится, и привести имя sysV в
соответствие с именем systemd unit-файла в апстриме.

Зависимость на сервисы, которые могут предоставляться различными
программами, надо указвать не конкретную программу, а target (
http-daemon.target, а не -
httpd.service,nginx.service,lighttpd.service;
mail-transport-agent.target -
postfix.service,sendmail.service,exim.service; и т.п.) Конечно,
существуют исключения, когда приложение может работать только с
конкретной программой, тогда в зависимостях указывается только она.
Естественно, эти сервисы должны позаботиться о себе сами, и добавить
себя в нужные target.

PS: оказываю посильную помощь в написании unit-файлов для systemd. :)

-- 
Alexey Shabalin


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