rum Reference

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 .rpm file is installed as it is, without its dependencies. See Local RPM files.
  • Apps that install into /opt are moved to /usr/lib/opt/<name>, with /opt/<name> as a link, because /opt itself 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

PathWhat
/var/lib/rakuos/packages.listthe packages you installed; RakuOS rebuilds the overlay from this list
/var/lib/rakuos/rum-rpmdbthe 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.confsettings (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.