[PKG-Openstack-devel] Using update-alternatives in both prerm and postrm [was: Fwd: Re: postrm in python-qrcode]

Thomas Goirand zigo at debian.org
Fri Sep 9 07:35:56 UTC 2016


Hi Ondrej, and many others,

Here's the explanations from Andreas Beckmann. It just appear to pop in
my mail today. It's IMO convincing.

Cheers,

Thomas Goirand (zigo)


-------- Forwarded Message --------
Subject: Re: postrm in python-qrcode
Date: Wed, 7 Sep 2016 20:37:56 +0200
From: Andreas Beckmann <anbe at debian.org>
To: Thomas Goirand <zigo at debian.org>, Hugo Lefeuvre <hle at debian.org>

Hi,

On 2016-08-24 11:08, Thomas Goirand wrote:
> On 08/23/2016 09:36 PM, Hugo Lefeuvre wrote:
>> Hi Thomas,
>>
>> I'm currently working on python-qrcode[0], a package you've NMUed last
>> month, and I have a question concerning your changes: Why are you executing 
>> "update-alternatives --remove" in debian/python{3,}.postrm[1] ? Normally this
>> is already executed in debian/python{3,}.prerm, and lintian is complaining 
>> about it.
> 
> Hi,
> 
> That's the best recommendations from Andreas Beckman. I'm CC-ing this to
> him, so he can comment better than I would.

See below for the corresponding piuparts bug template that gives some
more details on doing it that way.

> To me, the lintian warnings
> are false positives: it complains about a "update-alternatives --remove"
> and says that it should be in the .prerm, which is the case already (ie:
> lintian only checks if this calls is in the postrm, but doesn't check if
> it's also in the prerm).

I see it this way, too.

Andreas


Hi,

during a test with piuparts I noticed your package left unowned files on
the system after purge, which is a violation of policy 6.8:

https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#s-removedetails

The leftover files are actually alternatives that were installed by the
package but have not been properly removed.

While there is ongoing discussion how to remove alternatives correctly
(see https://bugs.debian.org/71621 for details) the following strategy
should work for regular cases:
* 'postinst configure' always installs the alternative
* 'prerm remove' removes the alternative
* 'postrm remove' and 'postrm disappear' remove the alternative
In all other cases a maintainer script is invoked (e.g. upgrade,
deconfigure) the alternatives are not modified to preserve user
configuration.
Removing the alternative in 'prerm remove' avoids having a dangling link
once the actual file gets removed, but 'prerm remove' is not called in
all cases (e.g. unpacked but not configured packages or disappearing
packages) so the postrm must remove the alternative again
(update-alternatives gracefully handles removal of non-existing
alternatives).

Note that the arguments for adding and removing alternatives differ, for
removal it's 'update-alternatives --remove <name> <path>'.

Filing this as important as having a piuparts clean archive is a release
goal since lenny.

>From the attached log (scroll to the bottom...):





More information about the Openstack-devel mailing list