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% админов, которым не нужно от демона странного, а
нужно стандартное поведение.

Принуждение к использованию определенного языка (любого) приводит к
тому, что вместо одного простого и понятного скрипта наворачивается
несколько оберток с  несовместимыми интерфейсам и неудобочиаемыми
исхдониками.

Ответить