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 elasticsearch
e grafana
for 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-reconfigure
está sendo chamado no script postinst inferior dografana-conf. Tentamos remover essa chamada, mas os loops continuam aparecendo. É claro que dpkg-trigger
nunca é chamado dentro da chamada "trigger". O gatilho nomeado elastic-reconfigure
não está sendo usado.
Ps2: Em alguns outros cenários eu tenho um loop como:grafana-conf -> grafana-conf -> grafana-conf