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

Re: [debian-devel] Обсуждение удаления sysvinit-скриптов из пакетов.



On Wed, 31 Aug 2016 13:53:06 +0300
dimas <dimas000@ya.ru> wrote:

> 2016-243 13:40 Victor Wagner <vitus@wagner.pp.ru> wrote:
>  [...]  
> да мне кажется, проще сделать тулзу/скрипт, которая будет вызываться
> один раз по хуку при установке (обновлении) пакета и генерить
> инит-скрипт, чем править sysvinit и каждый раз интерпретировать 

init править не надо. init все равно делает только то, что вызывает
внешний скрипт прописанный в inittab (интерпретатором которого
традицонно делается /bin/sh, но никто не мешает прописать в первой
строчке что-то другое).

А вот генерировать автоматически скрипты для /bin/sh нельзя. Ни в коем
случае. Каждого кто такое предлагает, следует заставить выучить
наизусть и продекламировать с выражением на площади скрипт configure от
какого-нибудь крупного проекта, например от postgresql, сгенерированный
именно таким способом с помощью autoconf. Скрипты для /bin/sh следует
писать только руками. И по этим рукам бить, если кто-то захочет сделать
этот скрипт чрезмерно многофункциональным или чрезмерно переносимым.

Тем более бесполезно пытаться генерировать автоматически шелловские
скрипты, предназначенные для последующей правки админом вручную. А
смысл init-скриптов именно таков, недаром они все помечены dpkg как
конфигурационные файлы (а service-файлы от systemd, кстати, нет).

Размер шелловского скрипта не должен превосходить где-то 80-100 строк.
Все что больше следует писать на более строгих языках, позволяющих
предотвратить больше ошибок. Шелловский скрипт должен быть обозримым и
понятным, с максимально простым control flow, иначе это чревато
ошибками, которые никакой компилятор не выловит.

А многие современные init-скрипты даже без /lib/init/functions вплотную
подошли к этому пределу безопасности. Поэтому исполлзовать вместо shell
другой язык, менее универсальный и более высокоуровневый было бы
осмысленно. 

Конечно, язык service-файлов плохой, страдает creaping
featurism и вообще сдизайнен как все у Поттеринга. Но зато на нем есть
готовая codebase.

> и то же. тем более, править инит не это надо чтоб майнтейнер захотел,

Можно предолжить эту систему проекту devuan или самому дистрибутив
форкнуть.


> принял правки и т.д., а приблуду-конвертер держи себе отдельным
> пакетом, и никому она мешать не будет
> 


Reply to: