From Fedora Project Wiki
No edit summary
Line 104: Line 104:


== How To Test ==
== How To Test ==
<!-- This does not need to be a full-fledged document. Describe the dimensions of tests that this change implementation is expected to pass when it is done.  If it needs to be tested with different hardware or software configurations, indicate them.  The more specific you can be, the better the community testing can be.
Remember that you are writing this how to for interested testers to use to check out your change implementation - documenting what you do for testing is OK, but it's much better to document what *I* can do to test your change.
A good "how to test" should answer these four questions:
0. What special hardware / data / etc. is needed (if any)?
1. How do I prepare my system to test this change? What packages
need to be installed, config files edited, etc.?
2. What specific actions do I perform to check that the change is
working like it's supposed to?
3. What are the expected results of those actions?
-->
* Clean install or upgrade an existing Fedora system
* Note the changed database paths (new location) and symlinks in the old location
* Check that `rpm` and `dnf` commands work as expected, e.g.
<pre>dnf history 
rpm -qa</pre>
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Since this will apply to new clean installs only, we'll be testing that the change appears only in Rawhide and does not appear on upgrades.
* Since this will apply to new clean installs only, we'll be testing that the change appears only in Rawhide and does not appear on upgrades.


== User Experience ==
== User Experience ==

Revision as of 17:17, 28 December 2021

Relocate RPM database to /usr

Summary

Currently, the RPM databases is located in /var. Let's move it to /usr. The move is already under way in rpm-ostree-based installations, and in (open)SUSE.

Owner


Current status

  • Targeted release: Fedora Linux 36
  • Last updated: 2021-12-28
  • FESCo issue: <will be assigned by the Wrangler>
  • Tracker bug: <will be assigned by the Wrangler>
  • Release notes tracker: <will be assigned by the Wrangler>

Detailed Description

Current location

/var/lib/rpm

New location

/usr/lib/sysimage/rpm

The proposal is to apply the new location only to new clean installs only. It will not apply to upgrades.

/var/lib/rpm will be a symlink pointing to /usr/lib/sysimage/rpm

Changing the file system layout to accommodate a snapshot+rollback regime is implied, but not required by this proposal. For example, Fedora has long placed /home on a separate subvolume (or file system) so it can be isolated from system root. Likewise, it makes sense to isolate /var/log and possibly /var/lib/libvirt/images so these locations continue to carry forward in time, even if the system root does a rollback.

Feedback

There will be no change to DNF as part of this change proposal. DNF's history will remain in /var until DNF 5. Discussion continues about the effect of a snapshot+rollback regime on DNF history. Relocate DNF history to /usr.

Upstream RPM accept the change, but institutionally don't like the loss or weakening of a very well known location for the database, and anticipate complaints.


Benefit to Fedora

  • The RPM database primarily describes the state of /usr. Storing the databases in /usr will more easily facilitate OS rollback, without affecting /var.
  • Helps align Fedora variants with each other
    • rpm-ostree based systems (including CoreOS, IoT, Silverblue, Kinoite) already use /usr/lib/sysimage for rpmdb.
  • Consistency with another RPM-based distro, (open)SUSE has made this change
  • Accounts for various snapshot+rollback regimes, i.e. it's a beneficial change whether Btrfs or device-mapper based regimes.


Scope

  • Proposal owners:
    • changes in rpm package
      • create the new path
      • create a symlink for the old path pointing to new path
  • Other developers:
    • changes in SElinux policy


  • Release engineering: #Releng issue 10441
  • Policies and guidelines: N/A (not needed for this Change)
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with Objectives:

Upgrade/compatibility impact

Change will not be applied to upgrades.


How To Test

  • Since this will apply to new clean installs only, we'll be testing that the change appears only in Rawhide and does not appear on upgrades.

User Experience

Users will notice:

  • symlink in the old locations for the databases, pointing to the new location

Otherwise, the change should be invisible to users.


Dependencies

  • rpm-ostree probably should make /usr/share/rpm a symlink to /usr/lib/sysimage/rpm, rather than the reverse as it is currently.
  • PackageKit might use inotify on /var/lib/rpm need to check if it does and whether it should be changed or add the additional path


Contingency Plan

  • Contingency mechanism: Revert the change, try again the next Fedora release.
  • Contingency deadline: Beta freeze
  • Blocks release? Yes


Documentation

Release Notes