カスタム .deb パッケージとそのトリガーに関する問題が繰り返し発生しています。私たちは、いくつかの構成を強制およびチェックするために、デプロイ用の「メタ パケット」をいくつか作成しました。その目的は、更新ごとに手動でチェックする必要なく、多くのサーバーを「同じ」構成に保つことです。例として、次の例を挙げてみましょう。グラファナ-confそしてelasticsearch-conf。
「子パッケージ」が更新されたときに再構成スクリプトを実行するには、次のトリガーを使用します。
- グラファナ-confトリガー:
interest /usr/share/grafana
interest grafana-reconfigure
- elasticsearch-confトリガー:
interest /usr/share/elasticsearch/bin
interest elastic-reconfigure
時々、期待通りに動作しますが、いくつかのシナリオでは、dpkg はトリガー ループがあると表示します。この場合、 とelasticsearch
がgrafana
同じトランザクションで更新されると、次のメッセージが表示されます。
[...]
Processing triggers for ureadahead (0.100.0-21) ...
Processing triggers for dbus (1.12.16-2ubuntu2.3) ...
Setting up unrelated-package (1.2.1) ...
dpkg: cycle found while processing triggers:
chain of packages whose triggers are or may be responsible:
elasticsearch-conf -> grafana-conf
packages' pending triggers which are or may be unresolvable:
grafana-conf: /usr/share/grafana
elasticsearch-conf: /usr/share/elasticsearch/bin
initramfs-tools: update-initramfs
dpkg: error processing package grafana-conf (--configure):
triggers looping, abandoned
dpkg: cycle found while processing triggers:
chain of packages whose triggers are or may be responsible:
elasticsearch-conf -> elasticsearch-conf -> elasticsearch-conf
packages' pending triggers which are or may be unresolvable:
elasticsearch-conf: /usr/share/elasticsearch/bin
initramfs-tools: update-initramfs
dpkg: error processing package elasticsearch-conf (--configure):
triggers looping, abandoned
Processing triggers for initramfs-tools (0.136ubuntu6.7) ...
[...]
Errors were encountered while processing:
grafana-conf
elasticsearch-conf
トリガーのさまざまなバリエーションをテストしましたが、何が問題なのかわかりません。debian/deb のドキュメントを読むと、すべてが機能するはずだと書かれています。
私たちが見逃している(おそらく基本的な)間違いを理解するのを誰か手伝ってくれませんか? よろしくお願いします!
Ps: 名前付きトリガーは、以下のgrafana-reconfigure
postinstスクリプトの下部で呼び出されています。グラファナ-confこのような呼び出しを削除しようとしましたが、ループは引き続き表示されます。もちろん、dpkg-trigger
「トリガー」呼び出し内では呼び出されません。名前付きトリガーはelastic-reconfigure
まったく使用されていません。
Ps2: 他のシナリオでは、次のようなループが発生します。grafana-conf -> grafana-conf -> grafana-conf