Я создаю пакет конфигурации и хотел бы остановить и перезапустить службы, конфигурация которых затронута. Прямо сейчас я использую service [stop|restart]
в {pre,post}{inst,rm}
пути. Я где-то прочитал вопрос, который invoke-rc.d
является правильным , потому что он учитывает предпочтения пользователя в отношении услуги. Тем не менее, я не мог найти какие-либо рекомендации по этому поводу. Кто-нибудь знает такие рекомендации? Или есть какой-нибудь совет относительно того, какой путь мне выбрать? Пакет предназначен для внутреннего использования и, скорее всего, будет только 14.04 в течение следующих двух лет. Тем не менее, я хотел бы оставить как можно более чистое состояние для моего преемника, так же systemd
как и в моей голове.
Со invoke-rc.d
страницы руководства :
Весь доступ к сценариям инициализации с помощью сценариев сопровождающих пакетов Debian должен осуществляться через invoke-rc.d .
Из Руководства по политике Debian, глава 9, раздел 3.3 :
Сопровождающие должны использовать уровень абстракции, предоставляемый программами update-rc.d и invoke-rc.d, для работы с initscripts в сценариях своих пакетов, таких как postinst, prerm и postrm.
...
Сценарии сопровождающего пакета должны использовать invoke-rc.d для вызова initscripts /etc/init.d/*, а не вызывать их напрямую.
Debian использует sysv-init
и перейдет непосредственно к systemd
, и я полагаю, что руководство по политике будет своевременно обновлено для ссылки systemctl
. Однако, в чем я не уверен, так это в следующем: я должен использовать invoke-rc.d
вместо service
? Я могу сказать, dpkg
что меня интересуют некоторые файлы (с помощью триггеров), так есть ли способ сказать, dpkg
что я также заинтересован в некоторых службах и dpkg
выполнить перезагрузку / перезагрузку?
Чтобы уточнить: я не пишу сценарии инициализации. Я предоставляю пакет с конфигурацией для других приложений, таких как Puppet, NTP и т. Д., Поэтому я останавливаю и перезапускаю соответствующие службы в сценариях.
Вот , например, проблема Docker о invoke-rc.d
против service
. Вопрос по-прежнему открыт, один человек, вероятно, сопровождающий, комментирует, что он определенно заинтересован в том, чтобы сделать это правильным образом - очевидно, никто из нас не уверен, что это такое. (Мой вопрос не зависит от этой проблемы.)
invoke-rc.d
man и документация по политике Debian говорят нам, чтобы использовать ее в связи со/etc/init.d/
сценариями (возможно, потому что они все еще использовали sysv-init). Как это меняется с Upstart или systemd?invoke-rc.d ... || service ...
Лучший способ для системной системы - использовать deb-systemd-invoke .
источник
deb-systemd-invoke
.