DH_TESTROOT(1)
β¨ DH_TESTROOT β¨
okay so bestie, this is dh_testroot from the Debhelper manual (section 1, for the record π
) β and it's literally the vibe-checker that makes sure your package gets built with the right level of root permissions π«Ά
πΈ NAME πΈ
dh_testroot β ensure that a package is built with necessary level of root permissions
like, it's the bouncer at the club door of your build. are you root enough? let's find out π
π¦ SYNOPSIS π¦
dh_testroot [debhelper options]
that's it. that's the whole thing. no cap π
π DESCRIPTION π
dh_testroot is used to determine if the target is being run with suffient access to root(-like) features.
and yes, the original says "suffient", we're keeping it, it's iconic in a typo way π
so what even is "sufficient access"? plot twist: it depends!! π it depends on whether the builder β that's the tool invoking the debian/rules target β supports the Rules-Requires-Root field, aka RΒ³. if the builder supports RΒ³, then it will set the environment variable DEB_RULES_REQUIRES_ROOT, and dh_testroot will validate that the builder followed the minimum requirements for the given value of DEB_RULES_REQUIRES_ROOT. validation era β¨
if the builder does not support Rules-Requires-Root, then it will not set the DEB_RULES_REQUIRES_ROOT environment variable. which means dh_testroot (and the rest of debhelper, fr fr the whole squad) falls back to assuming that (fake)root is implied. it's giving "we'll just assume, bestie" π§
here's the tea on how dh_testroot behaves based on the DEB_RULES_REQUIRES_ROOT environment variable β and heads up, leading and trailing whitespace in the variable is ignored:
- If unset, or set to
"binary-targets", thendh_testrootasserts that it is run as root or underfakeroot(1). - If set to
"no", thendh_testrootreturns successfully (without performing any additional checks). slay, no notes, we're done here π - If set to any other value than the above, then
dh_testrootasserts that it is either run as root (or underfakeroot(1)) or the builder has provided theDEB_GAIN_ROOT_CMDenvironment variable (e.g. viadpkg-buildpackage -r).
β οΈ lowkey important!! please note thatdh_testrootdoes not read the Rules-Requires-Root field. which implies thatdh_testrootmay produce incorrect result if the builder lies inDEB_RULES_REQUIRES_ROOT. π yes, it can be lied to. on the flip side, it also enables things like testing for what will happen whenDEB_RULES_REQUIRES_ROOTis set to a given value. so it's a feature, not a bug, main character energy π
π SEE ALSO π
This program is a part of debhelper.
π AUTHOR π
Joey Hess <joeyh@debian.org>
and that's the whole page bestie, you ate that π remember: root or fakeroot or DEB_GAIN_ROOT_CMD, pick your fighter π₯
this has been 14.5ubuntu1, dated 2026-09-21 β DH_TESTROOT(1), signing off πβ¨ iykyk
π¦ where this page comes from
- ubuntu stonking: debhelper 14.5ubuntu1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms