Checksum mismatch for EL-8 X86_64 repo

Problem: Getting “checksum doesn’t match” when trying to sync EL-8 content from Index of /latest/el8/x86_64

Expected outcome: No mismatch errors for any packages

Foreman and Proxy versions:

Foreman and Proxy plugin versions:

Distribution and version: EL-8 X86_64

Other relevant data:
2024-04-01-14:55:49 Syncing repo with command: /bin/reposync --verbose -c /u/spool/01/ark-sync/tmpb3vulhev.conf --arch=x86_64 --download-metadata --downloadcomps --download-path=/ark/yum/depot/el/8/8Server/misc/x86_64 --repoid=theforeman_el8
2024-04-01-14:55:50 Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, kpatch, needs-restarting, playground, product-id, repoclosure, repodiff, repograph, repomanage, reposync, subscription-manager, system-upgrade, uploadprofile, versionlock
2024-04-01-14:55:50 Updating Subscription Management repositories.
2024-04-01-14:55:54 DNF version: 4.7.0
2024-04-01-14:55:54 cachedir: /u/spool/01/ark-sync/el-8-8Server-theforeman_el8/
2024-04-01-14:55:55 User-Agent: constructed: ‘libdnf (Red Hat Enterprise Linux 8.9; generic; Linux.x86_64)’
2024-04-01-14:55:56 el-8-8Server-theforeman_el8 6.3 kB/s | 3.5 kB 00:00
2024-04-01-14:55:56 reviving: ‘theforeman_el8’ can be revived - repomd matches.
2024-04-01-14:55:56 theforeman_el8: using metadata from Mon 25 Mar 2024 05:54:27 PM UTC.
2024-04-01-14:55:56 Excludes from versionlock plugin were not applied
2024-04-01-14:55:56 Includes in repo theforeman_el8: *
2024-04-01-14:55:56 el-8-8Server-theforeman_el8 6.9 MB/s | 4.0 MB 00:00
2024-04-01-14:55:56 [SKIPPED] dynflow-utils-1.6.3-1.el8.x86_64.rpm: Already downloaded
2024-04-01-14:55:56 [SKIPPED] libsass-3.6.4-5.el8.x86_64.rpm: Already downloaded
2024-04-01-14:55:56 [SKIPPED] libsass-devel-3.6.4-5.el8.x86_64.rpm: Already downloaded
2024-04-01-14:55:56 [SKIPPED] rubygem-bcrypt-3.1.20-1.el8.x86_64.rpm: Already downloaded
2024-04-01-14:55:56 [SKIPPED] rubygem-eventmachine-1.2.7-2.el8.x86_64.rpm: Already downloaded
2024-04-01-14:55:56 [SKIPPED] rubygem-nio4r-2.7.0-1.el8.x86_64.rpm: Already downloaded
2024-04-01-14:55:56 [SKIPPED] rubygem-nokogiri-1.15.5-1.el8.x86_64.rpm: Already downloaded
2024-04-01-14:55:56 [SKIPPED] rubygem-ovirt-engine-sdk-4.6.0-1.el8.x86_64.rpm: Already downloaded
2024-04-01-14:55:56 [SKIPPED] rubygem-puma-6.4.2-1.el8.x86_64.rpm: Already downloaded
2024-04-01-14:55:56 [SKIPPED] rubygem-rkerberos-0.1.5-21.el8.x86_64.rpm: Already downloaded
2024-04-01-14:55:56 [SKIPPED] rubygem-ruby-libvirt-0.8.2-1.el8.x86_64.rpm: Already downloaded
2024-04-01-14:55:56 [SKIPPED] rubygem-sqlite3-1.4.4-1.el8.x86_64.rpm: Already downloaded
2024-04-01-14:55:56 [MIRROR] rubygem-journald-native-1.0.12-1.el8.x86_64.rpm: Downloading successful, but checksum doesn’t match. Calculated: 6d3ab5bcd3041eaf337caaf4b2799acdbd48ddc1514f1df640b655c422c9237a(sha256) Expected: 133922dc4f9a0a21e4776ad4422a1425352e315d3ada399c07f3f9521117d0c4(sha256)
2024-04-01-14:55:56 [MIRROR] rubygem-msgpack-1.7.2-1.el8.x86_64.rpm: Downloading successful, but checksum doesn’t match. Calculated: f26f89f158efbd1a0e3831d9f7103654d6dd1d4a3a25ebf68f281385b0cf9251(sha256) Expected: b02b682a950fe368270ca84129fd81bac04cd2ff69c7690823de36b4bc4ca922(sha256)
2024-04-01-14:55:56 [MIRROR] rubygem-ffi-1.16.3-1.el8.x86_64.rpm: Downloading successful, but checksum doesn’t match. Calculated: 2fc79db29a83eb0f79c8341c554ba7c48fb38e9e5620c226ddd4ce981b9e9a23(sha256) Expected: 5c39e3a9af2b1bf58e40617732a7cabfeda80b8376fd77288c41da139d70ca21(sha256)
2024-04-01-14:55:56 [MIRROR] rubygem-journald-native-1.0.12-1.el8.x86_64.rpm: Downloading successful, but checksum doesn’t match. Calculated: 6d3ab5bcd3041eaf337caaf4b2799acdbd48ddc1514f1df640b655c422c9237a(sha256) Expected: 133922dc4f9a0a21e4776ad4422a1425352e315d3ada399c07f3f9521117d0c4(sha256)
2024-04-01-14:55:56 [FAILED] rubygem-journald-native-1.0.12-1.el8.x86_64.rpm: No more mirrors to try - All mirrors were already tried without success
2024-04-01-14:55:56 [FAILED] rubygem-pg-1.5.4-1.el8.x86_64.rpm: No more mirrors to try - All mirrors were already tried without success
2024-04-01-14:55:56 [FAILED] rubygem-websocket-driver-0.7.6-1.el8.x86_64.rpm: No more mirrors to try - All mirrors were already tried without success
2024-04-01-14:55:56 [MIRROR] rubygem-msgpack-1.7.2-1.el8.x86_64.rpm: Downloading successful, but checksum doesn’t match. Calculated: f26f89f158efbd1a0e3831d9f7103654d6dd1d4a3a25ebf68f281385b0cf9251(sha256) Expected: b02b682a950fe368270ca84129fd81bac04cd2ff69c7690823de36b4bc4ca922(sha256)
2024-04-01-14:55:56 [FAILED] rubygem-msgpack-1.7.2-1.el8.x86_64.rpm: No more mirrors to try - All mirrors were already tried without success
2024-04-01-14:55:56 [MIRROR] rubygem-ffi-1.16.3-1.el8.x86_64.rpm: Downloading successful, but checksum doesn’t match. Calculated: 2fc79db29a83eb0f79c8341c554ba7c48fb38e9e5620c226ddd4ce981b9e9a23(sha256) Expected: 5c39e3a9af2b1bf58e40617732a7cabfeda80b8376fd77288c41da139d70ca21(sha256)
2024-04-01-14:55:56 [FAILED] rubygem-ffi-1.16.3-1.el8.x86_64.rpm: No more mirrors to try - All mirrors were already tried without success
2024-04-01-14:55:57 RC=1
2024-04-01-14:55:57 Writing sync status to: /ark/yum/depot/el/8/8Server/misc/x86_64/theforeman_el8/.ark-status.json
2024-04-01-14:55:57 Repo has no baseurl - creating path and skipping sync: /ark/yum/depot/el/8/8Server/misc/x86_64/theforeman_el8_plugins
2024-04-01-14:55:57 Writing sync status to: /ark/yum/depot/el/8/8Server/misc/x86_64/theforeman_el8_plugins/.ark-status.json
2024-04-01-14:55:57 Releasing lock for pid: 3924584

EPEL can be troublesome with Katello, because unlike most yum repos on the internet who keep old versions, they in fact delete any old RPM versions whenever a new version is added so there is only a single version of any rpm in the EPEL repo.

So, if you have one of these old rpm versions in a content view, and are using on-demand, the first time someone tries to use the RPM, pulp can go to download it from the upstream EPEL, and find that POOF its gone from the EPEL repo and you get the unable to download errors like above.

I have found the best thing to do with EPEL is:

  • set the repo download policy to “immediate” to fully download every rpm to your system from EPEL(takes a fair amount of storage on Foreman to download all of EPEL and keep local) and keep a local copy of them all

  • set the repo mirroring policy to “additive” so you keep every version of every rpm in case they are referenced from content views

Doing this has made the EPEL repo cause far fewer problems in our environment.

Hey. Thanks for the comment. This isn’t an EPEL issue though. We’re using reposync to pull https://yum.theforeman.org/latest/el8/x86_64/ content internally to our org.

Specifically, this is a sha256 mismatch between the RPM packages in https://yum.theforeman.org/latest/el8/x86_64/ and their entries in the repodata metadata https://yum.theforeman.org/latest/el8/x86_64/repodata/ published on 3-25-2024.

I’m hoping someone responsible for theforeman.org repository backend sees this and either updates the offending entries or does another publish with updated info.

We have some issues with /latest and caching in our CDN. I’d recommend to avoid it and track explicit versions. We’ve been talking about its removal for a while. Our current plan is to change some of the layout and create a new rpm.theforeman.org where it won’t be present at all. See Proposal: Update yum repository layout to be per repository · Issue #1937 · theforeman/foreman-infra · GitHub for more on that.

1 Like

@ekohl Thank you for the reply! That is good info to know. I’ll update our side and consider your post the solution.