When I run “dnf system-upgrade download --refresh --releasever=33” it fails with:
Running transaction check
Error: transaction check vs depsolve:
rpmlib(CaretInVersions) <= 4.15.0-1 is needed by python3-apsw-3.33.0.r1-1.fc33.x86_64
rpmlib(CaretInVersions) <= 4.15.0-1 is needed by python3-pip-20.2.2-1.fc33.noarch
rpmlib(CaretInVersions) <= 4.15.0-1 is needed by systemd-246.7-2.fc33.x86_64
rpmlib(CaretInVersions) <= 4.15.0-1 is needed by python-pip-wheel-20.2.2-1.fc33.noarch
To diagnose the problem, try running: 'rpm -Va --nofiles --nodigest'.
You probably have corrupted RPMDB, running 'rpm --rebuilddb' might fix the issue.
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
How do I fix this? I tried using rpmfind.net to figure out what package I need but it’s coming up empty.
I can’t guarantee that this will solve your problem, but this is definitely exactly the kind of situation that we can cover in steps: new RPM features can be backported to the previous still-supported release, but not to EOL ones. So in order to get to a version of RPM that can handle what the new packages need, you need to step forward.
You could possibly update just RPM and related packages, but that gets you into “oops, now I need to reinstall” territory dangerously quickly, so doing the release-by-release upgrade is the general recommendation. If you’re up for adventure, you could try to upgrade RPM first… but make sure you have backups just in case.
In this case, the feature allows package versions to indicate snapshots using a notation where the snapshot date or version is after the package’s “real” released version number. So, if there’s a package at version 1.1, and the packager decides to patch it up to an unreleased version from December 24, 2020, they might use 1.1^20201224 as the package version. This will sort higher than 1.1, but lower than 1.1.1 or something.
This is mentioned in the changelog for RPM 4.14.3, but not actually helpfully described, so I hope the above makes it clear.
I don’t know if any packages are actually using this, but I think maybe this concept comes from the Python world (see this), and python-pip-wheel is a package for dealing with Python packages, so it makes sense that that RPM feature would be required.