我有以下问题:
我只能访问二进制文件。我试图从二进制文件中制作一个完全自动化的.deb
包。我把它打包了,除了服务文件之外,它可以工作。
我在 debian 文件夹下创建了服务文件
hello
-- hello
-- debian/hello.service
我的规则文件如下所示
$ cat debian/rules
#!/usr/bin/make -f
%:
dh $@
override_dh:install:
dh_install hello usr/bin
包正在创建,但它没有启动服务,也没有在下面创建服务文件/etc/systemd/system/
.
postinst 文件如下 #!/bin/bash set -e
if [ $1 = configure] || [$1 = abort-upgrade]; then
if [ -x /etc/init.d/hello ]; then
update-rc.d hello defaults >/dev/null
答案1
您需要调用适当的 systemd 服务助手(dh_installsystemd
在兼容级别 12 中)。
实现这一切的最简单方法是依赖dh
序列;即使没有什么可构建的,它也会做正确的事情:
#!/usr/bin/make -f
%:
dh $@
override_dh_install:
dh_install hello usr/bin
这将确保所有其他帮助程序按适当的顺序运行,包括 systemd 帮助程序。
当 debhelper 兼容性级别低于 10 时,您需要显式启用 systemd 序列:
%:
dh $@ --with systemd
(服务文件将以 结尾/lib/systemd/system
,而不是/etc/systemd/system
。)
如果你写的话,你甚至可以完全放弃覆盖
hello usr/bin
into debian/install
(或者debian/hello.install
,假设您的包名为hello
)。