On Wed, 31 Aug 2016 13:53:06 +0300 dimas <[email protected]> wrote: > 2016-243 13:40 Victor Wagner <[email protected]> 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 или самому дистрибутив форкнуть. > принял правки и т.д., а приблуду-конвертер держи себе отдельным > пакетом, и никому она мешать не будет >

