How rum Works
Two modes
rum picks its mode by itself:
- Split mode, on an installed RakuOS system. The system image's packages are read-only to rum. Everything you install, remove or upgrade goes into the overlay on top of
/usr, with its own package database. - Standalone mode, everywhere else: Distrobox and podman containers, image builds. There rum behaves like a normal package manager.
rum paths # shows the mode and the paths it uses
On an installed system it prints mode: split (RakuOS overlay).
What that means in practice
- System packages stay as the image has them. rum won't install a copy of a package the image already provides, and won't upgrade, reinstall or downgrade one. They change with system updates.
- rum resolves dependencies itself against both the image and the overlay, then installs with rpm without rpm's own dependency check, since rpm only sees half of the system.
- A downloaded
.rpmfile is installed as it is, without its dependencies. See Local RPM files. - Apps that install into
/optare moved to/usr/lib/opt/<name>, with/opt/<name>as a link, because/optitself is outside the overlay. - After installing, rum refreshes the library, icon, desktop-file, font and settings caches and reloads systemd, so new apps and services show up right away.
- rum, the running kernel and other protected packages can't be removed.
Where things are
| Path | What |
|---|---|
/var/lib/rakuos/packages.list | the packages you installed; RakuOS rebuilds the overlay from this list |
/var/lib/rakuos/rum-rpmdb | the overlay's package database |
/var/lib/rakuos/rum-state/ | history, install reasons, version locks, imported keys |
/var/lib/rakuos/local-rpms/ | copies of local .rpm files you installed |
/var/cache/rum/ | downloaded metadata and packages |
/etc/rum/rum.conf | settings (see Configuration) |
/etc/rum.repos.d/ | your repositories and changes to shipped ones |
/usr/share/rum/repos.d/ | repositories that came with packages |
/usr/share/rum/repos.override.d/, /etc/rum/repos.override.d/ | repository overrides: settings rum applies on top of repositories (RakuOS's, and your own) |
rum reads repository files from /etc/rum.repos.d, then /etc/yum.repos.d, then /usr/share/rum/repos.d, then /usr/share/dnf5/repos.d. A file in an earlier folder hides one with the same name in a later folder.
After reading them, rum applies repository overrides, the same feature as dnf5's repos.override.d. An override file is a .repo file whose section names match repository IDs, wildcards allowed ([rpmfusion-*]); its settings are applied to every matching repository. excludepkgs= adds to a repository's own list, other settings replace the repository's value. RakuOS ships one, 20-rakuos.repo, that keeps some packages out of other repositories. To add your own, create a new file in /etc/rum/repos.override.d, for example 99-local.repo:
[terra]
excludepkgs=some-package
Files apply in name order, so 99-local.repo comes after RakuOS's. Delete the file to undo it; no reboot is needed.