将服务作为 Debian 软件包的一部分进行安装的最佳方法

将服务作为 Debian 软件包的一部分进行安装的最佳方法

我正在为一个从服务脚本执行的软件应用程序创建一个 Debian 包,想知道执行此操作的最佳方法。

/usr/bin我目前的想法是将可执行文件和服务复制到包中/etc/systemd/system/,并有一个postinst要执行的脚本

systemctl enable myapp.service

这是正确的方法吗?或者在 Debian 包管理中是否存在更“标准”的程序来处理服务?

答案1

我所做的是.../debian在我的项目中创建一个文件夹并.service为守护进程创建一个文件。我还在.../debian/rules文件中添加了一个命令行选项,如下所示:

%:
    dh $@ --with systemd --parallel

该选项告诉系统使用systemd来处理该.service文件(否则它将回到 SYS-V)。

另一件要记住的事情是将添加到#DEBHELPER#您的 post/pre inst/rm 脚本中。这些非常重要,因为它们才是真正使一切正常运转的关键。

例如,这里有一个postinst脚本中的配置:

#!/bin/sh

if [ "$1" = "configure" ]
then
     # Turn on IP forwarding
     echo 1 > /proc/sys/net/ipv4/ip_forward
fi

#DEBHELPER#

脚本中的位置取决于您在脚本中执行的操作。例如,如果您想在服务启动后运行命令,则将其放在#DEBHELPER#之前。如果您需要完成服务将要使用的配置,则将其放在#DEBHELPER#该配置之后。

我有我的例子Snap! 项目

注意:如果你的项目有多个守护进程,你可以.../debian对其中一个使用文件夹技巧。另一个,你必须安装用手(自行决定)。

相关内容