From Fedora Project Wiki
mNo edit summary
No edit summary
Line 54: Line 54:
<code>/var/lib/rpm</code> will be a symlink pointing to <code>/usr/lib/sysimage/rpm</code>
<code>/var/lib/rpm</code> will be a symlink pointing to <code>/usr/lib/sysimage/rpm</code>


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 ==
== Feedback ==
Line 60: Line 61:


Upstream RPM accept the change, but institutionally don't like the loss or weakening of a [http://lists.rpm.org/pipermail/rpm-ecosystem/2021-December/000781.html very well known location] for the database, and [http://lists.rpm.org/pipermail/rpm-ecosystem/2021-December/000781.html anticipate complaints].
Upstream RPM accept the change, but institutionally don't like the loss or weakening of a [http://lists.rpm.org/pipermail/rpm-ecosystem/2021-December/000781.html very well known location] for the database, and [http://lists.rpm.org/pipermail/rpm-ecosystem/2021-December/000781.html anticipate complaints].




== Benefit to Fedora ==
== Benefit to Fedora ==


* The RPM and DNF databases describe the state of (primarily) `/usr`. Storing these databases in `/usr` will more easily facilitate OS rollback, without affecting `/var`.
* 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
* Helps align Fedora variants with each other
Line 71: Line 71:


* Consistency with another RPM-based distro, (open)SUSE has made this change
* 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 ==
== Scope ==
* Proposal owners:
* Proposal owners:
** changes in rpm and dnf-data packages
** changes in rpm package
*** create the new path instead of old
*** create the new path
*** create symlinks for the old path to new path
*** create a symlink for the old path pointing to new path
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->


Line 94: Line 96:
== Upgrade/compatibility impact ==
== Upgrade/compatibility impact ==
<!-- What happens to systems that have had a previous versions of Fedora installed and are updated to the version containing this change? Will anything require manual configuration or data migration? Will any existing functionality be no longer supported? -->
<!-- What happens to systems that have had a previous versions of Fedora installed and are updated to the version containing this change? Will anything require manual configuration or data migration? Will any existing functionality be no longer supported? -->
Change will be applied on upgrades to Fedora 36.
Change will not be applied to upgrades.


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
Line 133: Line 135:
-->
-->
Users will notice:
Users will notice:
* symlinks in the old locations for the databases, pointing to the new locations;
* symlink in the old locations for the databases, pointing to the new location
* paths existing in the new locations.
 


Otherwise, the change should be invisible to users.
Otherwise, the change should be invisible to users.

Revision as of 17:14, 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

  • 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.
dnf history  
rpm -qa


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