Removing packages SOP
From FedoraProject
Contents |
Description
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.
Action
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) 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.
Verification
To verify that the block was successful you can use one of two (or both) methods.
list-pkgs
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]
latest-pkg
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.
Consider Before Running
Below is a list of considerations to take into account when blocking a package. Please fill in more as you think about them.
- 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.
- 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.
- Ensure we're not breaking any deps by removing the package
To determine this, perform:
$ 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
- Ensure that if the package is being renamed/replaced that proper Obsoletes/Provides are in place