dpkg:如何使用触发器? [英] dpkg: How to use trigger?

查看:677
本文介绍了dpkg:如何使用触发器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经写了一个小的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆