Loops de gatilho do pacote Deb

Loops de gatilho do pacote Deb

Estou tendo um problema recorrente com pacotes .deb personalizados e seus gatilhos. Fizemos alguns "meta pacotes" para nossas implantações para forçar e verificar algumas configurações. A ideia é manter muitos servidores com a “mesma” configuração sem precisar verificar manualmente a cada atualização. Vamos chamá-los como exemplo:grafana-confeelasticsearch-conf.

Para executar os scripts de reconfiguração quando o "pacote filho" for atualizado, usamos os seguintes gatilhos.

  • grafana-confgatilhos:
interest /usr/share/grafana
interest grafana-reconfigure

  • elasticsearch-confgatilhos:
interest /usr/share/elasticsearch/bin
interest elastic-reconfigure

De vez em quando, funciona conforme o esperado, mas, em alguns cenários, o dpkg diz que há um loop de gatilho. Neste caso, se elasticsearche grafanafor atualizado na mesma transação, receberemos as seguintes mensagens:

[...]
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

Testamos muitas variações dos gatilhos, mas não entendemos o que está errado aí. Ler a documentação do debian/deb diz que tudo deve funcionar.

Alguém pode me ajudar a entender qual erro (provavelmente básico) estamos perdendo? Desde já agradeço!

Ps: O gatilho nomeado grafana-reconfigureestá sendo chamado no script postinst inferior dografana-conf. Tentamos remover essa chamada, mas os loops continuam aparecendo. É claro que dpkg-triggernunca é chamado dentro da chamada "trigger". O gatilho nomeado elastic-reconfigurenão está sendo usado.

Ps2: Em alguns outros cenários eu tenho um loop como:grafana-conf -> grafana-conf -> grafana-conf

informação relacionada