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@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
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@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to