From Fedora Project Wiki


Distribute .repo files for modular repositories from a separate package

Summary

Reintroduce the fedora-repos-modular package. Have the /etc/yum.repos.d/*-modular.repo files in it instead of fedora-repos. We install/keep fedora-repos-modular by default, users (admins) can uninstall it if desired. No defaults are changed.

Owner

Current status

Detailed Description

As a Fedora user, who doesn't consume any modules, I'd like an easy way to disable modular repos to save some traffic, disk space and time.

Currently, I can do it by editing all /etc/yum.repos.d/*-modular.repo files and changing:

enabled=1

To:

enabled=0

This has downsides: When the files are changed in next update, I won't get them updated, because they are shipped as %config(noreplace). (If they were not shipped as %config(noreplace), it would be even worse, as my changes would be overridden.) It's also multiple files. I can make mistakes and break other files by accident.

In order to not to have to resort to manually editing RPM-package shipped configuration, I propose to have a better way of disabling modular repos, namely via: sudo dnf remove fedora-repos-modular.

In this change, we move modular repos into a separate package (subpackage of fedora-repos).

Basically revert this plus some extra comps/kickstarts changes:

https://src.fedoraproject.org/rpms/fedora-repos/c/7b32bee388d093c446017f1e33309d9b96b24e15

Current fedora-repos Pull Request:

https://src.fedoraproject.org/rpms/fedora-repos/pull-request/62


Feedback

This was proposed in early May 2020 on the devel mailing list:

https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/QMUHN3VF5F56JOEHO4MTVST262II7XXA/

The proposal received only positive feedback.

This was then opened as a pull request in:

https://src.fedoraproject.org/rpms/fedora-repos/pull-request/62

Where it received thorough review and positive feedback, until it was blocked by an unrelated modularity discussion that slightly touched this topic. FESCo sentiment was positive or neutral (however, one FESCo member doubted the usefulness of this, saying it is pointless).

https://src.fedoraproject.org/rpms/fedora-repos/pull-request/62#comment-45303

https://pagure.io/fesco/issue/2114#comment-654115 and below

Later, the spirit of this change was approved by FESCo in https://pagure.io/fesco/issue/2406

Why don't we...?

Why don't we have config overrides for system provided repo files?

It would be great if DNF supported system-repos in /usr/share and override options in /etc, but that is not (yet) the case. Feel free to work on this feature, but the change owner won't.

Why don't we disable modular repos by default?

This would require much bigger and heated discussion. Let it happen elsewhere. This self-contained change proposal maintains the status quo and only creates a way for users to opt out form the modular repos, when they so desire. It does not disable anything.

Why are you against ...?

This change is not against modularity, it is not against default modular streams, it is not against the people who created modularity, it is not against ELN, it is not against you. This change proposal maintains the status quo by default and only creates a way for users to opt out form the modular repos, when they so desire. The maintenance burden of having one extra repo package is considered insignificant compared to the benefit. This is not a death of a thousands cuts proposal with a hidden agenda, this is a proposal that adds a significant benefit.

Benefit to Fedora

Users who don't consume modules have the ability to disable modular repositories in a safe and supported way. This can save their traffic, disk space and time.

Container maintainers can benefit form this change as well by disabling modular repos first by a single command or not having it at all from start, if they so desire.

Package maintainers can benefit from this change by not using modular repos when repoquerying non-modular repos, if they so desire.

Mirror operators can benefit from this change by saving their traffic if the users actually do disable the repos, while there is no downside if they don't.

Scope

  • Proposal owners:
  • Finish and merge https://pagure.io/fesco/issue/2114
  • Ensure fedora-repos-modular are installed by default on Fedora 33 (fresh installs)
  • Ensure fedora-repos-modular are installed by default on Fedora 33 (upgrades from previous releases)
  • Other developers: no action required
  • Release engineering: no action required (possibly building the updated fedora-repos package if provenpackagers can't)
  • Policies and guidelines: nada
  • Trademark approval: zip

Upgrade/compatibility impact

It is expected that users who upgrade from previous Fedora releases will have fedora-repos-modular installed during the upgrade to Fedora 33 or 34. It is expected that rawhide users who will have fedora-repos-modular installed during regular packages upgrade.

If this is not the case, it should be treated like a bug.

How To Test

Install Fedora 33 (any edition or flavor), check that modular repos are still installed and enabled by default.

Update to Fedora 33 (from Fedora 31 or 32), check that modular repos are still installed and enabled by default.

Check that you can remove the fedora-repos-modular package (e.g. via sudo dnf remove fedora-repos-modular) and it removes the modular repos.

Check that you can install the fedora-repos-modular package again (e.g. via sudo dnf install fedora-repos-modular) and it adds the modular repos, enabled (unless you have previously edited the repo files).

User Experience

Users can disable or enable modular repos by removing or installing fedora-repos-modular. This is significantly better UX than editing config files.

Dependencies

No dependencies.

Contingency Plan

  • Contingency mechanism: If the outlined constraints are seriously broken and beyond fixing, QA can decide to revert the change.
  • Contingency deadline: Beta Freeze
  • Blocks release? No
  • Blocks product? No

Documentation

Documentation shall be added about disabling/enabling the modular repos.

Release Notes