我写了要重建他的游泳池注册表是否有新的东西(池化内容包)安装到池子里CDN服务器。
相反,每个池的内容包调用CDN服务器的init.d下,我想使用触发器。 会比重新启动服务器只有一次在安装运行结束后,所有的包都安装。
我有什么做在我和debhelper的支持包使用触发器?
我写了要重建他的游泳池注册表是否有新的东西(池化内容包)安装到池子里CDN服务器。
相反,每个池的内容包调用CDN服务器的init.d下,我想使用触发器。 会比重新启动服务器只有一次在安装运行结束后,所有的包都安装。
我有什么做在我和debhelper的支持包使用触发器?
你所寻找的是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