[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: