Policy folks, The question here is about Lintian's check interpreter-without-predep, which requires that any package that uses a non-base interpreter for any maintainer script declare a pre-dependency, not just a dependency, on that interpreter.
The current description of that tag says: Info: The package contains a control script that uses an unusual interpreter, but does not declare a pre-dependency on the package that provides this interpreter. . A perusal of &packaging; section 6.2 shows that any of the control scripts can be called while the package is not configured. Therefore, a pre-dependency is required to ensure that the interpreter is always available when the script is invoked. . Please do not add a pre-dependency without following the policy for doing so. (Policy section 3.5). "Adam D. Barratt" <a...@adam-barratt.org.uk> writes: > It might seem like Lintian is being overly picky here, as in the normal > case one can safely assume that dependencies are present when the > postinst is called, but there are cases where this is not true - where > there is a dependency loop between the packages and both have postinsts, > there is no guarantee as to which order the postinsts will be executed > in. Since Lintian checks packages in isolation, it has no way of knowing > whether such a loop exists (and of course a loop could be later > introduced by another package). I reviewed the section on maintainer scripts, and while preinst certainly requires a Pre-Depends for any non-base interpreter and postrm can't use a non-base interpreter at all (due to purge), I think dependency loop breakage is the only case when postinst or prerm scripts can be called without all dependencies being configured. Given that, I think Lintian may be too conservative here. Dependency loops are an issue, but they're also rare and maintainers should have some idea that they might exist. When they exist, I think they can be treated as normal bugs. Adding Pre-Depends due to the possibility of loops showing up someday seems like a bad idea. Asking everyone to use standard interpreters for maintainer scripts sounds like a better idea, but there's a separate Lintian tag for that anyway which reflects it's not a requirement. Given that, my inclination here is to modify Lintian to ban unusual interpreters for postrm scripts, require Pre-Depends for preinst scripts, and only require Depends for postinst and prerm scripts. However, I'd like to have that checked by other people on the debian-policy list, particularly those here who also work on dpkg. Is my analysis correct? -- Russ Allbery (r...@debian.org) <http://www.eyrie.org/~eagle/> -- To UNSUBSCRIBE, email to debian-policy-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org