How to remove a *sub*package at end of life ?

Adam Williamson awilliam at redhat.com
Wed Jun 12 00:27:48 UTC 2013


On Mon, 2013-06-10 at 15:04 +0200, Michael Schwendt wrote:
> On Mon, 10 Jun 2013 14:55:33 +0200, Remi Collet wrote:
> 
> > Le 10/06/2013 14:46, Jiri Popelka a écrit :
> > > Hi all,
> > > 
> > > up to F18 we've been shipping cups-php (PHP module) subpackage, but it's
> > > not been required by any other package.
> > > CUPS upstream dropped this module with cups-1.6 (since F19) so there's
> > > been no cups-php anymore in F19.
> > > This breaks F18 -> F19 updates when cups-php has been installed
> > > (https://bugzilla.redhat.com/show_bug.cgi?id=971741).
> > > What's the correct procedure here ?
> > > 
> > > Let user solve this by removing cups-php prior to update ?
> > >  - the yum error could be a puzzle for some users
> > > Put Obsoletes cups-php; Provides cups-php into some other package ?
> > >  - update is ok, but user is unaware that the php module has gone
> > > Some ideal solution which doesn't break update and notifies user that
> > > CUPS PHP module no longer exists ?
> > 
> > >From :
> > https://fedoraproject.org/wiki/How_to_remove_a_package_at_end_of_life
> > 
> > 	"Make sure the package is properly Obsoleted/Provided
> > 	by something if it is being replaced".
> > 
> > If it is not being replaced, Obsoleted/Provided obviously don't apply.
> > 
> > If some package "Provides: cups-php", imagine the nightmare for
> > 	yum install cups-php
> > 
> > And this will also avoid the "wanted" broken dep (if another package
> > "really" need cups-php)
> 
> Typically, one adds only the Obsoletes tag with a maximum version, so the
> obsolete package may return with a higher version.
> 
> https://fedoraproject.org/wiki/Packaging:Guidelines#Renaming.2FReplacing_Existing_Packages
> 
> | If a package supersedes/replaces an existing package without being
> | a compatible enough replacement as defined in above, use only the
> | Obsoletes from above. 

Just to reinforce: please, please do this; have something Obsolete: it.
It is absolutely not correct to just leave the package dangling with
dependencies that break upgrade processes and require users to remove it
manually. Anything that breaks the upgrade bug from release to release
is a bug.

Please just have something Obsolete: it. If you want to notify the user
of the change you can do any or all of the following:

* Include a README.cups-php or something in the %doc of the package
* Ask the documentation team to add a Release Note
* Have the package print out a message about the change on update (there
are 'standard'ish ways to do this, I don't know off the top of my head
if any or all of them are allowed/recommended practice in Fedora, but it
should probably be in the Guidelines somewhere). If you do this, try to
nail the logic such that everyone sees the message only once, at the
point when they do the update that actually does the Obsolete.
-- 
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Twitter: AdamW_Fedora | identi.ca: adamwfedora
http://www.happyassassin.net



More information about the devel mailing list