如何使用二进制文件自动化 deb 包?

如何使用二进制文件自动化 deb 包?

我有以下问题:

我只能访问二进制文件。我试图从二进制文件中制作一个完全自动化的.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)。

相关内容