dpkg:如何使用触发器? [英] dpkg: How to use trigger?
问题描述
我已经写了一个小的cdn服务器,如果新的东西(pool-content-packages)安装到池中,那么它将重建他的池注册表。
pool-content-package调用cdn-server的init.d,我想使用触发器。在安装完所有软件包之后,它将重新启动服务器一次安装运行结束。
我需要做什么才能使用debhelper支持在我的软件包中使用触发器?
您要查找的是dpkg-triggers。
使用debhelper构建debian包的一个解决方案是:
步骤1)
创建文件 debian /< serverPackageName> .triggers
(replace < serverPackageName>
步骤1a)
定义一个触发器来监视你的池的目录。文件的内容是:
interest / path / to / my / pool
步骤1b)
但是你也可以定义一个命名触发器,参见步骤3)。
文件内容:
兴趣cdn-pool-changed
触发器的名称cdn-pool-changed 是免费的。
步骤2)
添加处理程序用于触发文件 debian /< serverPackageName> .postinst
(替换 < serverPackageName>
示例:
#!/ bin / sh
set -e
配置中的$ 1
;;
触发)
#这里是处理程序
/etc/init.d/<serverPackageName>重启
;;
abort-upgrade | abort-remove | abort-deconfigure)
;;
*)
echopostinst调用未知参数\` $ 1'>& 2
exit 1
;;
esac
#DEBHELPER#
退出0
将 < serverPackageName>
替换为服务器软件包的名称。
步骤3)(仅适用于命名触发器,步骤1b))
在每个内容包中添加文件 debian /< contentPackageName> .triggers
(替换 < contentPackageName>
,内容包名称) / p>
文件内容:
激活cdn-pool-changed
在步骤1中定义的触发器使用相同的名称。
更多详细信息
我可以找到dpkg-triggers的最佳描述是如何使用dpkg触发器。相应的git存储库,您可以在这里获取示例:
git clone git://anonscm.debian.org/users/seanius/dpkg- triggers-example.git
I have written a little cdn server that shall rebuild his pool registry if new stuff (pool-content-packages) is installed into the pool.
Instead that every pool-content-package call the init.d of the cdn-server, I'd like to use triggers. Than it would restarted the server only one time at end of an installation run after all packages are installed.
What have I to do to use trigger in my packages with debhelper support?
What you are looking for is dpkg-triggers.
One solution with use of debhelper to build the debian packages is this:
Step 1)
Create file debian/<serverPackageName>.triggers
(replace <serverPackageName>
with name of your server package).
Step 1a)
Define a trigger that watch the directory of your pool. The content of file would be:
interest /path/to/my/pool
Step 1b)
But you can also define a named trigger, which have to be fired explicit (see step 3).
content of file:
interest cdn-pool-changed
The name of the trigger cdn-pool-changed is free. You can take what ever you want.
Step 2)
Add handler for trigger to file debian/<serverPackageName>.postinst
(replace <serverPackageName>
with name of your server package).
Example:
#!/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
Replace <serverPackageName>
with name of your server package.
Step 3) (only for named triggers, step 1b) )
Add in every content package the file debian/<contentPackageName>.triggers
(replace <contentPackageName>
with names of your content packages).
content of file:
activate cdn-pool-changed
Use same name for trigger you defined in step 1.
More detailed Information
The best description for dpkg-triggers I could found is "How to use dpkg triggers". The corresponding git repository with examples you can get here:
git clone git://anonscm.debian.org/users/seanius/dpkg-triggers-example.git
这篇关于dpkg:如何使用触发器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!