我經常遇到自訂 .deb 套件及其觸發器的問題。我們為我們的部署製作了一些“元資料包”,以強制和檢查一些配置。這個想法是讓許多伺服器保持「相同」的配置,而不需要手動檢查每個更新。讓我們以它們為例:grafana會議和彈性搜尋會議。
為了在「子包」更新時執行重新配置腳本,我們使用以下觸發器。
- grafana會議觸發器:
interest /usr/share/grafana
interest grafana-reconfigure
- 彈性搜尋會議觸發器:
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 文件說一切都應該有效。
有人可以幫助我/我們理解我們錯過了什麼(可能是基本的)錯誤嗎?預先感謝您!
grafana-reconfigure
Ps:在底部 postinst 腳本中呼叫了命名觸發器grafana會議。我們已嘗試刪除此類調用,但循環仍然出現。當然,dpkg-trigger
永遠不會在「觸發」呼叫內部呼叫。命名觸發器elastic-reconfigure
根本沒有被使用。
Ps2:在其他一些場景中,我有一個循環,例如:grafana-conf -> grafana-conf -> grafana-conf