新しいもの (プール コンテンツ パッケージ) がプールにインストールされた場合にプール レジストリを再構築する小さな cdn サーバーを作成しました。
すべてのプール コンテンツ パッケージが cdn サーバーの init.d を呼び出す代わりに、トリガーを使用したいと思います。すべてのパッケージがインストールされた後、インストール実行の最後にサーバーを1回だけ再起動するよりも。
debhelper をサポートするパッケージでトリガーを使用するにはどうすればよいですか?
探しているのは dpkg-triggers です。
debhelper を使用して debian パッケージをビルドする 1 つの解決策は次のとおりです。
ステップ1)
ファイルを作成します (サーバー パッケージの名前にdebian/<serverPackageName>.triggers
置き換えます)。<serverPackageName>
ステップ 1a)
プールのディレクトリを監視するトリガーを定義します。ファイルの内容は次のようになります。
interest /path/to/my/pool
ステップ 1b)
ただし、明示的に起動する必要がある名前付きトリガーを定義することもできます (手順 3 を参照)。
ファイルの内容:
interest cdn-pool-changed
トリガーcdn-pool-changedの名前は free です。好きなものをいつでも取ることができます。
ステップ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 の最良の説明は、「dpkg トリガーの使用方法」です。ここで取得できる例を含む対応する git リポジトリ:
git clone git://anonscm.debian.org/users/seanius/dpkg-triggers-example.git