2

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

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

4

1 回答 1

4

你绝对需要--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 控制文件。

于 2018-03-06T13:22:43.650 回答