我应该覆盖 init 系统的 debhelper 使用吗?

zil*_*zil 2 packaging debian-based debhelper

我正在尝试使用 systemd 脚本构建 debian 软件包,但我并不真正理解最好的方法。

我的第一个问题是,我应该使用该--with=systemd选项(并覆盖dh_systemd_enableand )还是与该选项一起dh_systemd_start使用就足够了?因为两者似乎都在做同样的事情。dh_installinit--name

Wim*_*eka 5

--with=systemd您的调用中肯定需要dh

至于您需要哪种覆盖组合,这取决于情况。

听起来您只需要包含 systemd 单元,因此您不需要覆盖任何内容。

由于您的问题没有太多上下文,我将列出一些何时覆盖每个 systemd debhelpder 的用例。

何时使用 override_dh_systemd_enable:

  • 如果您想要覆盖要在通常在安装时禁用服务的系统上启用的服务(通常是不是Debian 派生的任何 Linux 风格)
  • 如果您想在通常在安装时启用服务的系统上覆盖要禁用的服务(通常是 Debian 或任何源自 Debian 的 Linux风格
  • 如果您的 Debian 软件包中有多个 systemd 单元,并且需要启用它们
  • 如果您的 debian 软件包中的主 systemdunit 的名称不是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_startdh_systemd_enable部分中列出的功能类似。还有很多涉及暴发户的事情,与这个问题无关。请参阅下面链接的手册页。

dh_installinit 的手册页

另请注意,所有这些覆盖都会进入您的 debian 控制文件。

  • 请注意,现在似乎应该使用 dh_installsystemd 而不是其他任何东西。 (2认同)