gpt4 book ai didi

triggers - dpkg:如何使用触发器?

转载 作者:行者123 更新时间:2023-12-02 10:02:16 27 4
gpt4 key购买 nike

我编写了一个小型 CDN 服务器,当新的 pool-content-packages 安装到注册表池中时,它会重建其注册表池。

我不想让每个pool-content-package调用cdn-serverinit.d,我想使用触发器。这样,在安装所有软件包后,它只会在安装运行结束时重新启动服务器一次。

要在支持 debhelper 的包中使用触发器,我需要做什么?

最佳答案

您正在寻找的是 dpkg-triggers。

使用 debhelper 构建 debian 软件包的一个解决方案是:

步骤 1)

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

步骤 1a)

定义一个监视池目录的触发器。文件的内容为:

interest /path/to/my/pool

步骤 1b)

但是您也可以定义一个命名触发器,该触发器必须显式触发(请参阅步骤 3)。

文件内容:

interest cdn-pool-changed

触发器的名称​​cdn-pool-changed是免费的。你可以拿走你想要的任何东西。

步骤 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-triggers 的最佳描述是“How to use dpkg triggers ”。您可以在此处获取包含示例的相应 git 存储库:

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

关于triggers - dpkg:如何使用触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15276535/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com