我正试图用systemd脚本构建一个debian包,但我真的不明白最好的方法。
我的第一个问题是,我应该使用--with=systemd
选项(并覆盖dh_systemd_enable
和dh_systemd_start
),还是使用dh_installinit
和--name
选项就足够了?因为两者似乎都在做同样的事情。
您的dh
调用中肯定需要--with=systemd
。
至于您需要哪种覆盖组合,这取决于具体情况。
听起来你只需要包含systemd单元,所以你不需要覆盖任何内容。
由于您的问题没有太多上下文,我将列出一些何时覆盖每个systemd-debhelpder的用例。
何时使用override_dh_systemd_enable:
- 如果你想在一个通常在安装时禁用服务的系统上覆盖启用的服务(通常这是不是从Debian派生的任何linux风格)
- 如果您想在通常在安装时启用服务的系统上覆盖您的服务以禁用(通常是Debian或从Debian派生的任何linux风格)
- 如果您的Debian包中有多个systemd单元,并且需要启用它们
- 如果debian包中的主系统dunit的名称不是package-name.service,则需要启用/禁用它
dh_systemd_enable 的手动页面
何时使用override_dh_systemd_start:
- 如果你想在通常在安装时启动服务的系统上(通常是Debian或衍生自Debian的任何linux风格)将服务覆盖为不在安装时开始或引导
- 如果您希望systemd单元而不是在debian软件包升级时停止或重新启动
- 如果您希望systemd单元在debian包升级完成之前不停止(这对于在升级过程中可能不会长时间停机的守护进程很有用)
- 如果您想撤消,请在debian包升级完成之前不要停止操作
- 如果debian包中的主systemd单元的名称不是package-name.service,则需要执行上述任何操作
- 如果您的Debian包中有多个systemd单元,并且需要执行上述任何操作
dh_systemd_start 的手册页面
何时使用override_dh_installinit:
- 如果debian包中的主systemd单元的名称不是package-name.service
- 如果您的Debian软件包中有多个systemd单元,并且您需要安装它们
- 还有许多重复功能取决于您使用的debhelper的版本,这些功能与上面
dh_systemd_start
和dh_systemd_enable
部分中列出的功能类似。也有许多事情涉及暴发户,这与这个问题无关。请参阅下面链接的手册页
dh_installinit 的手册页面
还要注意,所有这些覆盖都会进入debian控制文件。