deb-triggers(5)
💅 deb-triggers(5) — the manual page, but make it a group chat
okay so bestie, this is a page from the dpkg suite and it's literally all about package triggers. yes, triggers. the drama. the suspense. the deferred processing. buckle up 🎀
✨ NAME ✨
deb-triggers — package triggers. that's it. that's the name. iconic of it honestly.
🦋 SYNOPSIS 🦋
debian/triggers, debian/binary-package.triggers, DEBIAN/triggers
look at those three paths. three whole vibes. no cap, they're all the same file living its best life in different places 💖
🌸 DESCRIPTION 🌸
so a package declares its whole relationship to some trigger(s) by putting a triggers file in its control archive — that's DEBIAN/triggers while you're out here creating the package. main character file, honestly 👑
this file is full of directives, one per line, periodt. leading and trailing whitespace gets trimmed, everything after the first # on any line gets trimmed too, and empty lines are just ignored. like, not even acknowledged. they don't exist to us 🙈
here are the trigger control directives that are currently supported, bestie:
💅 the interest ones
interesttrigger-nameinterest-awaittrigger-nameinterest-noawaittrigger-name
these say "hey, this package is interested in the named trigger." and listen — all triggers in which a package is interested must be listed using this directive in the triggers control file. no shortcuts. no sneaky side entries. list them. 🫶
the “await” variants put the triggering package in triggers-awaited state depending on how the trigger was activated. the “noawait” variant does not put the triggering packages in triggers-awaited state, even if the triggering package declared an “await” activation — whether that was with an activate-await or activate directive, or by using the dpkg-trigger --no-await command-line option. the “noawait” variant should be used when the functionality provided by the trigger is not crucial. lowkey the chill option ✨
🔥 the activate ones
activatetrigger-nameactivate-awaittrigger-nameactivate-noawaittrigger-name
these arrange it so that changes to this package's state will activate the specified trigger. the trigger gets activated at the start of the following operations: unpack, configure, remove (including for the benefit of a conflicting package), purge and deconfigure. it's giving "these are the moments that matter" ⭐
the “await” variants only put the triggering package in triggers-awaited state if the interest directive is also “await”. the “noawait” variant never puts the triggering packages in triggers-awaited state. and yeah, the “noawait” variant should be used when the functionality provided by the trigger is not crucial 💜
also, huge detail coming in hot: if this package disappears during the unpacking of another package, the trigger will be activated when the disappearance is noted towards the end of the unpack. trigger processing — and the transition from triggers-awaited to installed — does not cause activations. and in the case of unpack, triggers mentioned in both the old and new versions of the package will be activated. the way that works is genuinely so specific and we respect it 🧚
⚠️ unknown directives are an error which will prevent installation of the package. so like… don't make things up. that's not cute here. 💀
🌈 the whole "please prefer noawait" section, which is important 🌈
the “-noawait” variants should always be favored when possible, since triggering packages are not put in triggers-awaited state and can thus be immediately configured without requiring the processing of the trigger. if the triggering packages are dependencies of other upgraded packages, it will avoid an early trigger processing run and make it possible to run the trigger only once as one of the last steps of the upgrade. efficiency! we love her! 👑
support for the “-noawait” variants has existed since dpkg 1.16.1, and it will lead to errors if used with an older dpkg.
support for the “-await” alias variants has existed since dpkg 1.17.21, and it will lead to errors if used with an older dpkg.
🍓 the mode-setting fine print (read this, fr fr) 🍓
when a package provides an interest-noawait directive, any activation will set the triggering package into “noawait” mode, regardless of the awaiting mode requested by the activation — whether that requested mode was “await” or “noawait”. that's just how it is. 🙈
when a package provides an interest or interest-await directive, any activation will set the triggering package into “await” or “noawait” depending on how it was activated.
🔍 SEE ALSO 🔍
dpkg-trigger(1)dpkg(1)/usr/share/doc/dpkg/spec/triggers.txt
go read them. iykyk 🦋
okay that's the whole page, bestie — go forth and trigger responsibly 💖✨
this lil masterpiece is from dpkg suite version 1.23.11-dirty, dated 2026-09-09, and it's deb-triggers(5) signing off. mwah. 💅🎀
📦 where this page comes from
- arch rolling: dpkg 1.23.11-1 · GPL-2.0-or-later
- 💖 girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms