使用 systemd 服务但不使用 SysV 初始化脚本创建 .deb

使用 systemd 服务但不使用 SysV 初始化脚本创建 .deb

我正在尝试将 systemd 服务文件添加到现有的 Debian 软件包中。我跟着https://wiki.debian.org/Teams/pkg-systemd/Packaging,所以我创建了debian/packagename.service.因为我的debhelper版本是9.x,所以我还:

  • 添加dh-systemdBuild-Dependsdebian/control
  • 添加--with systemddh命令中debian/rules

现在,当我使用 重建包时debuild -i -us -uc -b,它失败并显示以下输出:

Now running lintian...
[...]
W: packagename: init.d-script-not-marked-as-conffile etc/init.d/packagename
E: packagename: init.d-script-not-included-in-package etc/init.d/packagename

如果有文件,构建脚本似乎需要一个 init.d 脚本.service。事实上,生成的内容DEBIAN/postinst包括此部分:

# Automatically added by dh_installinit
if [ -x "/etc/init.d/infinoted" ]; then
        update-rc.d infinoted defaults >/dev/null
        invoke-rc.d infinoted start || exit $?
fi
# End automatically added section

这是预期的行为吗?当我包含文件时,是否应该始终包含 SysV 初始化脚本.service?如果不是,建议的方法是什么来防止生成此部分?

我的系统是 Debian Jessie。

答案1

覆盖dh_installinit对我有用。我刚刚将其添加到debian/rules

override_dh_installinit:
        true

它仍然安装 systemd 单元,一切似乎都按预期工作。

但我仍然不知道这是预期行为还是错误。请注意,我没有在 Debian Stretch 或 Sid 上进行测试,仅在 Jessie 上进行测试。

相关内容