Fedora co-mingles its source packages with Red Hat Enterprise Linux

June 2, 2021

In the RPM package management world, the source RPM is what packages are built from and the source RPM's specfile is what describes how to build the binary RPMs (in addition to other package metadata). For a specific and relevant example, the Fedora specfile for the kmod RPM is what says (or used to say) that the weak-modules script should be added to the binary RPM, although it's not in the upstream source and this created a DKMS problem.

However, this is a somewhat incomplete and misleading description of the real problem. The underlying issue was that calling it 'the Fedora kmod specfile' is not really accurate. In reality, the Fedora source RPM for the kmod RPM (and thus the specfile) was also the (future) Red Hat Enterprise Linux source RPM and specfile for kmod. The weak-modules script comes from RHEL and is (probably) useful there, but because Fedora uses the same specfile, it was blindly shipped in Fedora as well. The actual fix to remove weak-modules doesn't remove it from the specfile entirely but adds more complexity to make it conditional.

(Since it's specifically excluded only on Fedora, a Fedora-derived distribution will have to modify this specfile. If the distribution notices, and if it doesn't already pretend to be Fedora for package building purposes, since this probably isn't the only such specfile.)

This kmod issue illustrates at least one potential problem with this dual usage of specfiles. Fedora and Red Hat Enterprise Linux are not the same thing, so there are undoubtedly other places where RHEL packaging needs diverge from Fedora packaging ones. At the moment it's up to package maintainers to manually identify such places and deal with them in some way. If they don't, one or the other of Fedora and RHEL will have issues. If people are lucky, those will be immediate and obvious and will be fixed. Otherwise, you get something like my problem.

This situation is unfortunately probably unavoidable because in practice, Fedora is not an independent distribution; instead it's an arm of Red Hat Enterprise Linux. Red Hat (now IBM) originated what became Fedora, uses Fedora as the base for RHEL, significantly funds Fedora, and still hosts important resources for it (Fedora bugs are reported to bugzilla.redhat.com, for example). Red Hat has no interest in spending the effort to maintain two independent sets of source RPMs and RPM specfiles.

(This situation isn't the same as Debian and Ubuntu. Ubuntu uses Debian's packaging work, but Ubuntu's changes for their own needs don't automatically wind up in Debian.)

PS: I believe it's relatively rare that the latest RHEL and Fedora will have the same version of a package, so it's probably usually not the case that the source RPM is the same on both. Instead, the RHEL package most likely started off as some older version of the Fedora package, so we can informally say that they use the same source RPM and specfile.

Comments on this page:

By Opk at 2021-06-05 18:34:51:

At my work we use a RHEL derivative and whenever there's no package for some software we want to use, either in the main repositories or EPEL, the first place I check is https://src.fedoraproject.org/

You can easily checkout the package sources with git and when checking the list of branches I'll often find a branch for RHEL releases alongside those for fedora releases. These may only be applicable to the sort of packages that end up in EPEL rather than core stuff. It's often useful, especially when first moving to a new major release – EPEL tends to start out fairly empty and it can be a while before all the things we need are available. Relying heavily on EPEL has never seemed to be an exactly stable way to run a system. That is compared to Debian where everything gets frozen at the time of a release.

Written on 02 June 2021.
« Simple use of Let's Encrypt on OpenBSD is pleasantly straightforward (as of 6.8)
New versions of Bash (and readline) default to special handling of pasting into the shell (or other programs) »

Page tools: View Source, View Normal, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Wed Jun 2 23:22:10 2021
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.