dpkg的:如何使用触发器?(dpkg: How to use trigger?)

2019-07-21 04:09发布

我写了要重建他的游泳池注册表是否有新的东西(池化内容包)安装到池子里CDN服务器。

相反,每个池的内容包调用CDN服务器的init.d下,我想使用触发器。 会比重新启动服务器只有一次在安装运行结束后,所有的包都安装。

我有什么做在我和debhelper的支持包使用触发器?

Answer 1:

你所寻找的是dpkg的的触发器。

在使用debhelper的构建Debian软件包的一个解决方案是这样的:

步骤1)

创建文件debian/<serverPackageName>.triggers (更换<serverPackageName>您的服务器软件包的名称)。

步骤1a)

定义看你的池的目录中的触发器。 文件的内容将是:

interest /path/to/my/pool

步骤1b)

但你也可以定义一个名为触发器,它必须被解雇明确(参见步骤3)。

文件的内容:

interest cdn-pool-changed

触发CDN-池改变的名称是免费的。 你可以把你想要什么都。

第2步)

添加处理程序触发到文件debian/<serverPackageName>.postinst (更换<serverPackageName>您的服务器软件包的名称)。

例:

#!/bin/sh

set -e

case "$1" in
    configure)
    ;;

    triggered)
        #here is the handler 
        /etc/init.d/<serverPackageName> restart
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)
    ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

#DEBHELPER#

exit 0

替换<serverPackageName>您的服务器名包。

步骤3)(仅用于命名触发器,步骤1b))

添加在每个内容包中的文件debian/<contentPackageName>.triggers (更换<contentPackageName>与您的内容包的名称)。

文件的内容:

activate cdn-pool-changed

您在步骤1中定义的触发使用相同的名称。

更多详细信息

有关dpkg-触发器我能找到的最好的描述是“ 如何使用dpkg的触发器 ”。 相应的git仓库与例子,你可以在这里:

git clone git://anonscm.debian.org/users/seanius/dpkg-triggers-example.git



文章来源: dpkg: How to use trigger?