29 августа 2016 г., 22:43 пользователь Victor Wagner <vi...@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