[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#766758: apt: does not process pending triggers



Control: reassign -1 dpkg

On Wed, Oct 29, 2014 at 05:41:25PM +0100, Guillem Jover wrote:
> Control: retitle -1 apt: does not process pending triggers
> Control: reassign -1 apt
> Control: affects -1 dpkg
> 
> This should probably be considered an RC bug, but I'll let the apt
> maintainers deal with that.

Every libapt-based tooling has this problem and will all be fixed by the
same fix, BUT this bug effects stable upgrades as apt (/aptitude/
synaptics/…) will upgrade dpkg pretty early in the upgrade process and
the new dpkg (with its behaviour change) will deal with the rest of the
upgrade and so everyone will have unprocessed triggers. This is
unacceptable IMHO and nothing we can paper over with a release notes
entry.

I dislike bug-pingpong, but in this case I have to move it back to dpkg
as we can't change apt to make upgrades work (at least it was never
allowed in the past, so I doubt it is an option now) and its a behaviour
change in dpkg, not a apt regression per-se, so dpkg/jessie has to behave
as expected by libapt-pkg/wheezy here regardless of how dumb that might
be.

I would suggest that "--configure foo" is extended to implicitly run
all pending triggers by default for jessie (at least those which can be
run as their dependencies are satisfied). We (as in apt) will change
apt/jessie to run "dpkg --triggers-only --pending" after the last dpkg
invocation and you can change dpkg/jessie+1 to behave like it does now.
(assuming the release team agrees to this plan)

Not the most efficient solution as dpkg and apt in jessie will both waste
some time doing stuff they don't have to just for the sake of upgrades,
but compared to the time they take to do their actual work, its
negligible and doing funky stuff to detect an upgrade in progress
are probably going to explode…

If you agree just clone the bug back to us and I will take care of it
from the apt side. You might want to clone it to other dpkg-callers as
well as I presume that at least some have the same problem. Otherwise,
I am all ears for alternative solutions.


> So apt needs to either pass man-db to the --configure call, or just
> do a final --triggers-only/--configure --pending call. A trivial fix
> would be to change the default value for DPkg::TriggersPending to
> true.

The option exists in apt/wheezy already, but it runs --triggers-only after
EVERY explicit --configure call¹, which can be quiet frequent as e.g.
every (pseudo-)essential package is configured on its own. I had it
implemented to circumvent #526774. Now it isn't needed anymore…
(well, it never was as the whole option group was never the default.
I hope to have some time after jessie release to look into this as its
kinda embarrassing that I wanted to do it for 5 years now…)
Anyway, we can't enable this option retroactively even if we wanted to…


Best regards

David Kalnischkies

¹ so basically, it would do what my suggestion is above to be done by
default, BUT I would expect the call to fail if a pending trigger can't
be run while the implicit suggested one would carry on as normal.

Attachment: signature.asc
Description: Digital signature


Reply to: