Package Retirement Process

When a package reaches the end of its useful life, the Package Retirement Process lets other people — and automated processes! — know both not to expect any more releases, and why it was removed. The process is governed by Policy for Orphan and Retired Packages.

A common situation that involves, among other tasks, retiring a package is renaming a package, or replacing it with another that provides compatible functionality. For handing such situation, see the relevant packaging guidelines.

What can be retired

Packages can normally only be retired in the following branches:

Procedure

Please execute the following steps in the order indicated.

RPM

If the package is being replaced by some other package, ensure that the Obsoletes/Provides tags are properly set by the new package as specified in Renaming/Replacing Guidelines.

Git

Run fedpkg retire DESCRIPTION in Rawhide. DESCRIPTION should explain why the package was retired. Examples of good messages are Obsoleted by <new package> and Renamed to <new package>.

fedpkg retire removes all files from the branch, adds file dead.package that contains DESCRIPTION, and pushes the changes.

If Branched currently exists and Final Freeze has not started yet, prevent the package from being released by merging (or cherry-picking, etc.) the retirement commit into that branch. It is not necessary to run fedpkg retire separately for Branched.

Do not run fedpkg retire or merge a retirement commit for any supported or end-of-life Fedora release branch. Packages must not be retired from stable releases.

If the package is included in EPEL, consider also EPEL Retirement policy.

fedora-obsolete-packages

Consider what will happen to systems which have the now-retired packages installed. Generally, such packages will simply remain on the system as it is updated, becoming increasingly outdated. If this is not acceptable, such as if there are upgrade path issues or security concerns, add your package to fedora-obsolete-packages.

Comps

Remove the package from comps if it is listed.

Spins

Remove the package from any spin kickstart file.

Koji

To keep retired packages from being pushed to the mirrors, they need to be blocked in Koji. This will happen automatically during the next compose (for rawhide, the branched release and for EPEL).

You can check whether a package is blocked in koji with koji list-pkgs --show-blocked. There should an entry with [BLOCKED] for each branch the package was retired in. It is enough for a package to be blocked in an older tag to be also blocked in a newer tag due to inheritance. Example output:

$ koji list-pkgs  --show-blocked --tag f40 --package curry
Package                 Tag                     Extra Arches     Owner
----------------------- ----------------------- ---------------- ---------------
curry                   f39                                      gemi            [BLOCKED]

Please wait for two days to allow for a compose to happen and mirrors to be updated. If the package is not blocked automatically after two days, please file a ticket for release engineering and mention package names and the branches where the packages need to be blocked. Use only one ticket for all the packages you retired at once, do not open one ticket for each package if you retired several packages.

EPEL

The retirement process can be used for EPEL as well with one difference:

  • You can remove the package from any EPEL branch whether or not it has been released.

For example, if your package has been added to base RHEL in RHEL-9.4 then perform the steps above but use the el9 branch instead of rawhide.

When you need to add package from EPEL to any RHEL release, only retire EPEL branch when package is released in that RHEL release.

Claiming Ownership of a Retired Package

If you really want to maintain a retired package, you need to be aware that if upstream is dead, fixing release critical bugs, etc becomes your responsibility. This is to ensure the high quality and standards of packaging remain for Fedora package collection. There may be additional issues with retired packages. If possible, consult with the former maintainer for more information. The process is a bit different from unorphaning a package.

  1. See if you can figure out why the package was retired including searching for information about orphaned packages on devel mailing list or emailing the former maintainer. You can also check dead.package in the SCM (url like: https://src.fedoraproject.org/rpms/package_name_here/blob/rawhide/f/dead.package)

  2. Announce on devel which packages you would like to become the owner of.

  3. Retired Fedora packages (rawhide branch retired) require a re-review if they are retired for more than eight weeks or if there is no previous review of the package. Submit a review request (a new bugzilla ticket) and have the package approved by a reviewer as if it were new to Fedora. See the Package Review Process for more information. To unretire a EPEL branch if the package is still in Fedora, no re-review is required.

  4. Request unretirement by filing a releng ticket. Specify all branches that need to be un-retired (including rawhide for Rawhide, unless it is for EPEL only) and include the link to re-review. In this ticket, request that the Release Engineering team unblock the package for the releases that the package should be un-retired for. In this request, clearly specify which branches should be unblocked.

  5. Restore the contents in Git and prepare a new build and update (if necessary).

Completely Removing a Package

In rare cases, such as when licensing issues are discovered, it may be necessary to completely remove a package from Fedora. This differs from normal retirement in that the package is removed also from stable and end-of-life releases.

For complete removal, first follow the procedure for normal removal.

Additionally, retire the package in '''all''' dist-git branches. Since fedpkg retire refuses to work on stable branches, simulate it with the following:

$ DESC="my description"; git rm -r . && echo "$DESC" > dead.package && git add dead.package && git commit -m "$DESC"

Finally, add the package to fedora-obsolete-packages.