Deb パッケージ トリガー ループ

Deb パッケージ トリガー ループ

カスタム .deb パッケージとそのトリガーに関する問題が繰り返し発生しています。私たちは、いくつかの構成を強制およびチェックするために、デプロイ用の「メタ パケット」をいくつか作成しました。その目的は、更新ごとに手動でチェックする必要なく、多くのサーバーを「同じ」構成に保つことです。例として、次の例を挙げてみましょう。グラファナ-confそしてelasticsearch-conf

「子パッケージ」が更新されたときに再構成スクリプトを実行するには、次のトリガーを使用します。

  • グラファナ-confトリガー:
interest /usr/share/grafana
interest grafana-reconfigure

  • elasticsearch-confトリガー:
interest /usr/share/elasticsearch/bin
interest elastic-reconfigure

時々、期待通りに動作しますが、いくつかのシナリオでは、dpkg はトリガー ループがあると表示します。この場合、 とelasticsearchgrafana同じトランザクションで更新されると、次のメッセージが表示されます。

[...]
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-reconfigurepostinstスクリプトの下部で呼び出されています。グラファナ-confこのような呼び出しを削除しようとしましたが、ループは引き続き表示されます。もちろん、dpkg-trigger「トリガー」呼び出し内では呼び出されません。名前付きトリガーはelastic-reconfigureまったく使用されていません。

Ps2: 他のシナリオでは、次のようなループが発生します。grafana-conf -> grafana-conf -> grafana-conf

関連情報