構成パッケージを作成していますが、構成が影響を受けるサービスを停止して再起動します。今service [stop|restart]
は{pre,post}{inst,rm}
邪魔に使っています。サービスについてのユーザーの好みを尊重するのでinvoke-rc.d
、私はそれが正しい方法である質問をどこかで読みました。しかし、これに関するガイドラインは見つかりませんでした。誰かがそのようなガイドラインを知っていますか?または、どの方法を選ぶべきかについてアドバイスがありますか?パッケージは内部で使用されるものであり、今後2年間はたぶん14.04のみになります。ただ、後継者にsystemd
は出来るだけ綺麗な状態を残したいので、心の中で考えています。
Debianパッケージのメンテナスクリプトによるinitスクリプトへのアクセスはすべて、invoke-rc.dを介して行う必要があります。
Debianポリシーマニュアル、第9章、セクション3.3から:
メンテナは、postinst、prerm、postrmなどのパッケージのスクリプト内のinitscriptを処理するために、update-rc.dおよびinvoke-rc.dプログラムによって提供される抽象化レイヤーを使用する必要があります。
...
パッケージメンテナースクリプトは、直接呼び出すのではなく、invoke-rc.dを使用して/etc/init.d/* initscriptsを呼び出す必要があります。
Debianは使用されてsysv-init
おりsystemd
、直接に移行します。また、ポリシーマニュアルは近いうちに参照されるように更新されると思いますsystemctl
。しかし、私が不確かなのはこれです。invoke-rc.d
代わりに使用する必要がありservice
ますか?dpkg
(トリガーを介して)一部のファイルに関心があることを伝えることができるのでdpkg
、いくつかのサービスにも関心があることを伝えdpkg
、再起動/再読み込みを行う方法はありますか?
明確にするために:私はinitスクリプトを書いていません。PuppetやNTPなどの他のアプリケーションの構成を含むパッケージを提供しているので、スクリプト内の対応するサービスを停止して再起動します。
たとえば、ここではinvoke-rc.d
vs に関するDockerの問題service
です。この問題はまだ解決されておらず、おそらくメンテナである1人が、正しい方法でこれを行うことに間違いなく関心があるとコメントしています。(私の質問はその問題とは無関係です。)
invoke-rc.d
manページやDebianポリシーのドキュメントはに関連して、それを使用することを教えてくれる/etc/init.d/
(彼らはまだはsysv-のinitを使用可能性があるため)スクリプト。Upstartやsystemdでどのように変わりますか?