On Tue, 30 Aug 2016 12:03:52 +0300 Dmitrii Kashin <free...@freehck.ru> wrote:
> Victor Wagner <vi...@wagner.pp.ru> writes: > > > On Tue, 30 Aug 2016 10:29:53 +0500 > > Stanislav Vlasov <stanislav....@gmail.com> wrote: > > > >> > > А уже потом, специфицировав этот протокол, делаем интерпретаторы для > > существующих декларативных конифгов и врапперы для прочих случаев, > > поддерживающие этот протокол. > > Я тут хотел бы также вклиниться, ибо уже не раз встречал что-то > подобное. Важно, чтобы этот интерфейс был на интерпретируемом языке. Я > слышал, что раньше было можно вместо init-скрипта подставить просто > бинарный файл, поддерживал бы он только необходимый набор аргументов > типа start/stop/etc... Имхо это конечно возможность интересная, но для > системного администратора совершенно негодно, ибо одно дело - > переписать скрипт на живой системе, и совсем другое - пересобрать > бинарь, выполняющий ту же функцию. А вот не нужно пересобирать бинарь. Надо скриптовый враппер вокруг него написать, если приспичило организовать нестандартное поведение. Бинарь он пришел из пакета находится под управлением пакетного менеджера и изменение его хэшсуммы - это security alert. Но 95% юзеров не нужно от демона ничего, чего не предоставляет бинарь. Собственно, на самом деле sysvinit начал проигрывать тогда, когда в среднем внутри оказалось аж три уровня врапперов - сначала start-stop-daemon запускает собственно бинарь, потом start-stop-daemon мы оборачиваем в стандартные функции из /lib/init/functions, а потом уже из этих функций собираем стандартный скрипт. Три уровня, это, конечно, слишком много. Но один иногда бывает нужен. Проблема сущесвующих init-скриптов в том, что каждый уровень имеет разный интерфейс и произвольно выкинуть один-два из них получается не всегда. А вот сделать обертку, которая вызывается с параметрами start/stop/depends/reload и сама вызывает бинарник с теми же параметрами, выполняя на каждый из них какие-то предварительные (или наоборот) действия - это несложно. > В этом плане я, по-видимому, являюсь сторонником LSB-заголовков в > sysvinit, поскольку они принуждают мейнтейнера использовать > скриптовые запускалки. Принуждать - нехорошо. А симлинк в /etc/init.d на файлик из /usr/sbin - хорошо. Для тех 95% админов, которым не нужно от демона странного, а нужно стандартное поведение. Принуждение к использованию определенного языка (любого) приводит к тому, что вместо одного простого и понятного скрипта наворачивается несколько оберток с несовместимыми интерфейсам и неудобочиаемыми исхдониками.