видимо у меня недостаточно знаний по этим вопросам.
Всё неоднозначно:
Отчасти да, отчасти нет.
Основная проблема в том, что линуксовые программисты-прикладники лезут в системный уровень:
Ипостасей sysvinit мне известно три:
RedHat sysvinit до-LSB-шной эпохи, без LSB-хидера.
Скрипты debian sysvinit содержат только LSB хидер.
Скрипты Slackware sysvinit не содержат хидеров совсем.
Скрипты содержащие 'chkconfig:' и LSB хидер, это скрещивание ежа с ужом. Это ломает правильную логику обработки скриптов sysv.
Недавно Антон Мидюков упоминал, что LSB хидер может менять порядок старта скриптов. Современный chkconfig обрабатывает только Default-{Start,Stop} LSB хидера. Чего не должно быть в принципе в системах на sysv. К тому же через модуль alterator-services, альтовое полиси на предмет "-" как первого параметра chkconfig: не реализуемо в принципе. По причине того, что если первый параметр chkconfig: в скрипте, это "-", что говорит о том, что при добавлении сервиса на всех runlevel он должен быть в off, при запуске альтератора с модулем services, сервис будет в том состоянии, в котором указано в Default-{Start,Stop} LSB хидера. А это означает, что ломается и правильная логика chkconfig и полиси (на предмет 'chkconfig: -').
И это сломается везде:
# grep 'chkconfig: -' /etc/rc.d/init.d/*
/etc/rc.d/init.d/alteratord:# chkconfig: - 95 05
/etc/rc.d/init.d/dnsmasq:# chkconfig: - 20 55
/etc/rc.d/init.d/ethtool:# chkconfig: - 11 89
/etc/rc.d/init.d/hddtemp:# chkconfig: - 90 10
/etc/rc.d/init.d/iptables:# chkconfig: - 08 92
/etc/rc.d/init.d/libvirtd:# chkconfig: - 97 03
/etc/rc.d/init.d/lm_sensors:# chkconfig: - 26 74
/etc/rc.d/init.d/multipathd:# chkconfig: - 13 86
/etc/rc.d/init.d/NetworkManager:# chkconfig: - 12 90
/etc/rc.d/init.d/nfslock:# chkconfig: - 14 86
/etc/rc.d/init.d/openvpn:# chkconfig: - 47 68
/etc/rc.d/init.d/osspd:# chkconfig: - 81 10
/etc/rc.d/init.d/rawdevices:# chkconfig: - 56 44
/etc/rc.d/init.d/sysfs:# chkconfig: - 33 67
/etc/rc.d/init.d/template:# chkconfig: - 90 10
/etc/rc.d/init.d/vgauthd:# chkconfig: - 81 19
/etc/rc.d/init.d/vmtoolsd:# chkconfig: - 80 20
/etc/rc.d/init.d/xl2tpd:# chkconfig: - 90 10
Этого вы знать не могли. Ибо такое недокументированное поведение, ломает логику поведения классического sysvinit.
Но правильное состояние на runlevel-ах по-дефолту и порядок старта в системах где /proc/1/exe это /sbin/init, должны быть только такими:
# grep chkconfig: $(rpm -ql libvirt-daemon | grep rc)
/etc/rc.d/init.d/libvirtd:# chkconfig: - 97 03
/etc/rc.d/init.d/virtlockd:# chkconfig: 345 96 04
/etc/rc.d/init.d/virtlogd:# chkconfig: 345 96 04
Для libvirtd, при добавлении сервиса, ломается полиси на предмет 'chkconfig: -', поскольку парсится не 'chkconfog:' (как должно быть), а Default-{Start,Stop} LSB-хидера. И это ломает полиси для "chkconfig: -" на всех runlevel в off. Чтобы этого не происходило и не нарушало полиси, на предмет "-" и в runlevel-ах off после --add, в секцию '%post daemon' спека, не включили строку '%post_service libvirtd'. Но после этого сервис libvirtd оказался даже не добавленным! Поскольку вызова из пост-инсталл скритов post_service, который содержит команду добавления сервиса, не было.
Т.о. интеграторы LSB хидера, ради Linux Standard Base, в sysv скрипты (без обработки /proc/1/exe), подложили системам на sysv большую свинью: выбирать теперь на sysv можно только между плохо и ещё хуже.
Мейнтейнеру же пакета libvirt-daemon, чтобы соблюсти полиси, ничего не оставалось делать как не включать строку 'post_service libvirtd' в пост-инсталл скрипты. Впрочем модуль альтератора services, если пакет libvirt-daemon установлен, уже при своём старте проигнорирует 'chkconfig: -'. И лихо без единного действия пользователя, разбросает симлинки старт и килл по rc*.d. Что противоречит и 'chkconfig: -' и полиси.
Если бы chkconfig при /proc/1/exe -> /sbin/init брал по приоритету параметры chkconfig: игнорируя LSB хидер, то логика chkconfig была бы верной. И очевидно, что мейнтейнер пакета добавил бы в скрипты добавление сервиса libvirtd.
Ну и:
Формально полиси на скриты sysv у альтов есть. Но оно не соблюдается и не может быть соблюдено на уровне текущего функционала alterator-services.
Опция Default-Add в LSB хидере, решила бы сразу несколько проблем, но стандартизаторы Linux Standard Base не особенно напрягались чтеним манов инициализации. Её не было и нет:
http://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/initscrcomconv.htmlВот такой вот прогресс и инновации...
Мне почему-то казалось, что LSB хидер обрабатывается только в системах на systemd. Это было грандиозное заблуждение!