Archive:Removing packages SOP

From FedoraProject

Revision as of 16:38, 24 May 2008 by Admin (Talk | contribs)

Jump to: navigation, search


Removing Packages - SOP


From time to time packages will get 'dropped' or removed from the distribution. To prevent the last build of these packages from continuing to show up in composes of updates or future collections the package must be 'blocked' from the appropriate tags in Koji.

Blocking a package in koji simply prevents it from being listed in normal operations unless specifically sought out. Due to how inheritance works any "downstream" tags will inherit the block as well, so blocking the package at the appropriate place (oldest tag) could take care of all other effected tags.


The 'block-pkg' koji command is used to block packages.

Usage: koji block-pkg [options]  tag package [package2 ...] 
(Specify the --help global option for a list of other help options)

-h, --help  show this help message and exit

For example, if we are asked to remove stickywidgets from Fedora 8 and newer releases we would issue:

$ koji block-pkg dist-f8 stickywidgets

After which dist-f8 and any collection that inherits from dist-f8 will now block stickywidgets.


To verify that the block was successful you can use one of two (or both) methods.


The list-pkgs command to koji can be coerced to display blocked packages. For example:

$ koji list-pkgs --tag dist-f8 --package hunspell-he --show-blocked
Package                 Tag                     Extra Arches     Owner
----------------------- ----------------------- ---------------- ----------------
hunspell-he             dist-f8                                  caolanm          [BLOCKED] 


The latest-pkg command to koji will not display blocked packages. Therefor after blocking a package you can ensure it's really blocked by using list-pkg:

$ koji latest-pkg dist-f8 hunspell-he
Build                                     Tag                   Built by
----------------------------------------  --------------------  ----------------

No output means that the package was in fact blocked.


Below is a list of considerations to take into account when blocking a package. Please fill in more as you think about them.

1. Be extra cautious about blocking packages in a released distribution. You'll want to be sure you're blocking it from the updates pool and not the base tag. 1. Make sure that you're being asked to block at the srpm level. Blocking sub-packages cannot be done, but will happen naturally when the source package no longer builds the sub package. 1. Ensure we're not breaking any deps by removing the package

To determine this, do:

repoquery -q --whatrequires --repoid <repo> <list of packages produced by this source rpm> --alldeps

to catch binary dependencies and:

repoquery -q --whatrequires --repoid <repo>-source --archlist src <list of packages produced by this source rpm> --alldeps

1. Ensure that if the package is being renamed/replaced that proper Obsoletes/Provides are in place