View Issue Details

IDProjectCategoryView StatusLast Update
0001242channel: elrepo/el7elrepo-releasepublic2022-07-10 08:28
Reportertvierling Assigned Topperry  
PrioritynormalSeveritymajorReproducibilityalways
Status resolvedResolutionfixed 
Platformx86_64OSOracle LinuxOS Version7
Summary0001242: elrepo-release should not depend on glibc
Description[Disclaimer: I'm an engineer for Oracle Linux and can provide any information you may need on how this interacts with OL.]

Oracle Linux, one of the family of RHEL derivatives, has multiple flavors of the glibc package for specialized purposes, including for Oracle's Ksplice userspace patching service. These alternative glibc builds are 100% ABI compatible, but have a different Epoch: value.

The dependency

Requires: glibc = 2.17

seems like it's supposed to ensure that elrepo-release only installs on RHEL7 derivatives, but this is misguided; it doesn't allow the distribution to offer these alternative compatible glibc builds if the Epoch is not zero.

This also affects el8 and el9 elrepo-release RPMs in exactly the same way; if separate bugs are needed for those, please let me know, or create clones for them.
Steps To ReproduceInstall Oracle Linux 7 and install Userspace Ksplice.

Attempt to install elrepo-release.

Fails:

--> Running transaction check
---> Package elrepo-release.noarch 0:7.0-5.el7.elrepo will be installed
--> Processing Dependency: glibc = 2.17 for package: elrepo-release-7.0-5.el7.elrepo.noarch
--> Finished Dependency Resolution
Error: Package: elrepo-release-7.0-5.el7.elrepo.noarch (/elrepo-release-7.el7.elrepo.noarch)
           Requires: glibc = 2.17
           Installed: 2:glibc-2.17-326.0.1.ksplice2.el7_9.i686 (@us)
               glibc = 2:2.17-326.0.1.ksplice2.el7_9
           Available: glibc-2.17-222.el7.i686 (ol7_latest)
               glibc = 2.17-222.el7
           Available: glibc-2.17-222.0.7.el7.i686 (ol7_latest)
               glibc = 2.17-222.0.7.el7
[...etc.]
Additional InformationThe normal way that a dependency on glibc is expressed is via RPM autolib scanning, resulting in a generated Requires value of one of the forms

libc.so.6()
libc.so.6()(64bit)
libc.so.6(GLIBC_2.17)
libc.so.6(GLIBC_2.17)(64bit)

etc. However, elrepo-release does not contain any binaries that depend on any library -- it's a noarch package, even! -- and depending on glibc at all is inappropriate in a noarch package. If the goal is to ensure installation on only RHEL7 and its derivatives, I'd recommend instead this:

Requires: system-release >= 7
Requires: system-release < 8
(the second one could instead be "Conflicts: system-release >= 8" if you like.)

These Provides values are implemented by the distribution's release package: redhat-release-server, centos-release, oraclelinux-release, etc. Usually the full value is something like "7.9" but the >= above ensures that it's just comparing what you care about: the major release of the OS (before the first dot), and that you're installing on one of the RHEL family.

I don't recommend using the "system-release(releasever)" Provides as that varies between distributions; in my testing, plain "system-release" provides exactly what you want.
TagsNo tags attached.
Reported upstream

Activities

toracat

2022-07-07 17:18

administrator   ~0008462

Acknowledged.

pperry

2022-07-07 18:37

administrator   ~0008466

Hi,

Yes, as you identify, the sole reason for the dependency on glibc was to ensure installation on the correct major version of the distro. It was never an elegant solution.

Thank you for your suggestion to use system-release which certainly seems a more preferable solution. We will look to update elrepo-release packages for all major releases shortly - no need to file duplicate bugs against el8 and el9.

Thanks

pperry

2022-07-10 08:27

administrator   ~0008474

Hi @tvierling,

I've updated the elrepo-release packages for el7, el8 and el9 to remove the dependency on glibc as per your suggestion. The new packages have been released to their respective repositories and should be available on mirror sites shortly.

Thanks again for your report and suggestion - much appreciated.

Issue History

Date Modified Username Field Change
2022-07-07 16:45 tvierling New Issue
2022-07-07 16:45 tvierling Status new => assigned
2022-07-07 16:45 tvierling Assigned To => pperry
2022-07-07 17:18 toracat Note Added: 0008462
2022-07-07 18:37 pperry Note Added: 0008466
2022-07-07 18:38 burakkucat Status assigned => acknowledged
2022-07-10 08:27 pperry Note Added: 0008474
2022-07-10 08:28 pperry Status acknowledged => resolved
2022-07-10 08:28 pperry Resolution open => fixed