我正在尝试将 systemd 服务文件添加到现有的 Debian 软件包中。我跟着https://wiki.debian.org/Teams/pkg-systemd/Packaging,所以我创建了debian/packagename.service
.因为我的debhelper
版本是9.x,所以我还:
- 添加
dh-systemd
到Build-Depends
debian/control
- 添加
--with systemd
到dh
命令中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 上进行测试。