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: