Re: [debian-devel] Обсуждение удаления sysvinit-скриптов из пакетов.
29 августа 2016 г., 22:43 пользователь Victor Wagner
<vitus@wagner.pp.ru> написал:
>> > Может быть стоит пойти по другому пути - embrace and extend -
>> > написать интерпретатор service-файлов systemd, который бы не
>> > выпендривался а вел себя примерно как start-stop-daemon.
>>
>> Я бы сказал, в том числе как start-stop-daemon.
>> Скажем, иногда очень удобен runit, в котором демонов лучше запускать в
>> скрипте через exec.
>> То есть, следует отделить интерпретацию и собственно методы запуска,
>> чтобы данным скриптом можно было пользоваться не только для sysvinit.
>
> Именно это я и считаю unix way - когда основной способ разделения
> системы на компоненты это вызов программы, которая общается с
> вызывавшей через командную строку и стандартные каналы ввода-вывода.
> Для конкретного случая можно специфицировать некое подмножество этого
> протокола.
> Например, вызов с параметрами start/stop/restart.
Если этот вызов для админа, а не для загрузки - не вижу проблем.
В том же runit достаточно сделать симлинк в /etc/init.d с нужным
именем на /usr/bin/sv при наличии конфиг-каталога с таким же именем и
получаем почти такой же интерфейс.
Почти - потому что 1) другой формат вывода, 2) нет хелпа по параметрам
(вероятно, стоит отметить как баг), 3) поведение в некоторых случаях
немного отличается.
> И еще нужен протокол для работы с зависимостями. Нечто аналогичное LSB
> comments, но только встроенное в стандартный юниксовый протокол.
Как вариант - проверка наличия работающих зависимостей.
Возможно, автозапуск при старте, но это может быть спорно.
>> > Чтобы можно было использовать service-файлы, которые будут
>> > поддерживаться и фикситься мейнтейнерами в рамках системы sysvinit
>> > основным преимуществом которой является минимизация функциональности
>> > init и использование внешних программ для всего остального.
>>
>> В остальном - однозначно поддерживаю. Не скажу, что толку от меня
>> будет много, но, если на работе опять будет какой-нибудь проект с
>> новым софтом, который работает только под systemd - писать подобное
>> просто придётся (у нас стандарт - sysvinit + runit для части
>> сервисов).
> Возможно, если речь идет об одном или двух демонах, проще вручную
> перевести сервис-файл на какой-нибудь имеющийся в системе язык
> программирования.
Для одного двух демонов я ещё напишу скрипты. А вот для пары десятков
уже будет геморрой.
Как вариант - написать конвертор, что будет универсальней, хотя и хуже
выглядеть.
Какой-нибудь хук при установке пакета и при наличии данных для systemd
- натравливать конвертор на них.
Дальнейшие действия конвертора - зависят от того, какой инит указан текущим.
Другой вариант - всё же написать интерпретатор, в котором для запуска
будут использоваться разные методы в зависимости от init.
К сожалению, иногда - чересчур разные...
> Вообще этот вопрос у меня в ЖЖ примерно два года назад уже обсуждался.
>
> http://vitus-wagner.livejournal.com/1032172.html
Видел, но там, помнится, до чего-то конкретного не дошло, только
обсуждения преимуществ/недостатков разных подходов инитов.
--
Stanislav
Reply to: