Hello folks,
With the retirement of modularity, the modular dnf repositories for Fedora 39
no longer exist. However, this will introduce a problem during upgrades. When
users try to upgrade from previous Fedora releases with fedora-repos-modular
installed, they will hit fatal errors that will probably look like this:
Errors during downloading metadata for repository 'fedora-modular':
- Status code: 404 for
https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-39&arch=x86_64
(IP: ...)
- Status code: 404 for
https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-39&arch=x86_64
(IP: ...)
- Status code: 404 for
https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-39&arch=x86_64
(IP: ...)
Error: Failed to download metadata for repo 'fedora-modular': Cannot prepare
internal mirrorlist: Status code: 404 for
https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-39&arch=x86_64
(IP: ...)
Or:
Error: Failed to download metadata for repository 'fedora-modular': Cannot
download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
(The actual error might differ depending on the exact state of the removal of
the modular repos and their mirrorlist etc.)
This is caused by the combination of the following facts:
- the modular repo configuration in Fedora 37/38 has skip_if_unavailable=False
- when the releasever is set to 39, the URLs of the repos give error 404
This is a big deal, because even users who don't use modularity at all (but
have not uninstalled fedora-repos-modular) will not be able to upgrade to
Fedora 39+ without reaching for help.
Adam outlined 3 options to solve this problem in the bugzilla where he reported
this: https://bugzilla.redhat.com/2228827
I slept on it and have found a fourth option (but I don't think it's very
viable). I'll present all 4 options here:
A. Set skip_if_unavailable=True in the modular repo configuration on old Fedora
That is, update fedora-repos-modular in Fedora 37 and 38 to have
skip_if_unavailable=True. That would mean:
1. Users who have up-to-date Fedora 37 or 38 can upgrade. Yay!
2. Users who don't update their packages before upgrading still cannot
upgrade. Technically this is not supported, but I am afraid users will hit this
problem.
3. Users of Fedora older than 37 also cannot upgrade. Technically this is not
supported, but I am afraid users will hit this problem.
4. Users of modular packages might see weird behavior when the modular
repository is temporarily offline and is hence skipped. Considering other
quirks of modularity and the assumed small user base, I don't consider this a
blocker, but it's "not nice".
This solution is far from ideal, but it is easy. It can be done right now.
B. Mirror empty modular repositories for the time being
That is, the modular repositories would not give error 404, but instead would
be empty. We would do this at least for F39 and F40 and we could keep doing
that even for a longer while. That would mean:
1. The error would disappear.
2. Users without modules would not notice anything.
3. Only users of Fedora 38 or older upgrading to Fedora X or newer would have
a problem and we could decide what X is (whether it's 40 or 50).
I think this is a good solution, but it requires some work beyond my own
abilities (I have no idea how to achieve this) and it won't happen over night.
C. Document this in the upgrade documentation
That is, we change nothing in the repos, but we make sure to instruct users to
invoke dnf system-upgrade with --disablerepo='*modular*' and perform similar
action in GUI tools. That would mean:
1. Users who follow the docs will not be impacted.
2. Users who just click the *Upgrade* button would still be impacted.
3. Users who keep upgrading the way they did for years would still be impacted.
4. Upgrading via GUI might easily get much more complicated than it is today.
I think we can hardly call this a solution.
D. Change our upgrade tools to disable modular repos on upgrades to F39+
That is, patch dnf system-upgrade, patch PackageKit or whatever does this in
GUI in Fedora 37 and 38 to disable the modular repos when upgrading to F39+.
That would mean:
1. The error would disappear.
2. Users without modules using the official upgrade tools would not notice
anything.
3. Users who upgrade via dnf distro-sync etc. would still be impacted.
Technically this is not supported, but I am afraid users will hit this problem.
4. Users of Fedora older than 37 cannot upgrade. Technically this is not
supported, but I am afraid users will hit this problem.
I think this solution is doomed to be incomplete because there are far to much
means of upgrading to a new Fedora release. It also requires a lot of
engineering work in various different places and it won't happen fast enough.
========================
What do you think we should do? My preference would be to go with option (B)
and fallback to option (A) if (B) isn't finished in reasonable time.
--
Miro Hrončok
--
Phone: +420777974800
IRC: mhroncok
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue