[devel] systemd

Alexey Shabalin a.shabalin на gmail.com
Пт Янв 27 14:08:50 MSK 2012


26 января 2012 г. 23:41 пользователь Dmitry V. Levin <ldv на altlinux.org> написал:
>> >>> Меня волнуют технические препятствия в сизифе (да и в p6/t6).
>> Следующая проблема (о которой тоже давно упоминалось).
>> имена systemd-файла (%s.service) и init-файла (init.d/%s) должны
>> совпадать. (есть пара исключений - udev и dbus)
>
> Они могут быть должны сколько угодно, но они уже порой не совпадают.
>
>> Симлинк помогает systemd только для start|stop, но не для enable|disable.
>> Т.к. systemd "новая" система для сизифа, будем привязываться к старым
>> init именам.
>
> Тут надо сперва хорошо подумать, какую совместимость мы хотим реализовать в
> ситуации, когда имена не совпадают, и какие у нас есть варианты.  Мы можем
> хотеть, например,
> - совместимость наших systemd-имен с нашими sysv-именами по service/chkconfig;
> - совместимость наших systemd-имен с чужими systemd-именами.
>
> Если мы хотим совпадения наших systemd- и sysv-имен, то у нас не остается
> другого выбора кроме как переименовывать systemd-имена в соответствии с
> sysv-именами.

В ALTLinux всегда "строили свою луну", посматривая по сторонам, но
имея своё мнение.
Так, например, почти ко всем init-скриптам добавилась буква 'd' на конце.
Можно и дальше строить свою луну.

> Если нам важна совместимость наших systemd-имен с чужими, и нам достаточно
> совместимости между systemd- и sysv-именами по service/chkconfig, то мы
> можем попробовать реализовать какую-нибудь несложную трансляцию имен
> sysv <-> systemd.

А с использованием systemd, мантейнер может доверится(в большинстве
случаев - всегда найдётся исключение) .service файлу от апстрима, и не
заниматься адаптацией к ALTLinux, как в случае с init-скриптами. Даже
что-то адаптировав можно отослать в апстрим. В этом случае выгодно
иметь совместимость с чужими.
Я склоняюсь к этому варианту, но боюсь у меня не хватит сил его реализовать.

Что нужно? в чем проблема?
Проблема: systemd не умеет enable и disable для симлинков.
Когда-то давно я это обходил таким способом:
http://git.altlinux.org/people/shaba/packages/systemd.git?p=systemd.git;a=blobdiff;f=src/systemctl.c;h=7575d966d16b430f3d21608d86145073597aae5b;hp=22382c841d127f2fed825847449c1a87bdd9ce14;hb=2e7db930548337a25728b693adb54f187de3878f;hpb=102a0a85ddff4bb0d3db97adb71ce5ad80b8fa60

Потом этот код переписали, и так просто мне это ограничение не обойти.

Варианты решения:
- всё таки добавить в systemctl возможность работы с симлинками. (прошу помощи).
- systemctl сейчас напрямую нигде не вызывается(я имею ввиду post/pre
rpm-скрипты), используются service и chkconfig.
  можно модифицировать chkconfig, что бы он разименовывал симлинки и
редиректил в systemd уже имя реального файла.
- ...? (может есть ещё варианты?)

> Наверное, возможны и другие варианты.
>> Надо бы проверку в сборочницу, что бы ошибочные пакеты не пропускать.
> Только сперва нам нужно формализовать, какие пакеты являются ошибочными.


-- 
Alexey Shabalin


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