我正在创建一个配置包,并且想停止并重新启动其配置受到影响的服务。现在我正在使用service [stop|restart]
in {pre,post}{inst,rm}
方式。我读了一个问题的地方,invoke-rc.d
是正确的方法,因为它供奉有关服务的用户的喜好。但是,我找不到关于此的任何指南。有人知道这样的准则吗?或对我应该选择哪种方式有任何建议?该软件包仅供内部使用,在未来两年内可能仅用于14.04。但是,我想为继任者留下尽可能清晰的状态systemd
,我的想法也是如此。
Debian软件包的维护者脚本对初始化脚本的所有访问都应通过invoke-rc.d完成。
摘自《 Debian政策手册》第9章第3.3节:
维护人员应使用update-rc.d和invoke-rc.d程序提供的抽象层来处理其程序包脚本中的初始化脚本,例如postinst,prerm和postrm。
...
软件包维护者脚本必须使用invoke-rc.d来调用/etc/init.d/*初始化脚本,而不是直接调用它们。
Debian一直在使用sysv-init
并将直接转移到systemd
,我想该政策手册将在适当的时候进行更新以供参考systemctl
。但是,我不确定的是:我应该使用invoke-rc.d
而不是service
吗?我可以告诉dpkg
我(通过触发器)对某些文件感兴趣,那么有没有办法告诉dpkg
我对某些服务也很感兴趣并可以dpkg
重新启动/重新加载呢?
需要说明的是:我不是在编写初始化脚本。我为程序包提供了其他应用程序的配置,例如Puppet,NTP等,因此我停止并重新启动了脚本中的相应服务。
例如,这里是有关invoke-rc.d
vs 的Docker问题service
。这个问题仍未解决,只有一个人(可能是维护者)评论说,他们绝对有兴趣以正确的方式进行操作-显然我们俩都不确定那是什么。(我的问题与该问题无关。)
invoke-rc.d
手册页和Debian政策文件告诉我们,在连接使用/etc/init.d/
脚本(可能是因为他们仍然使用SYSV-INIT)。Upstart或systemd的变化如何?