rpm-ostree
The rpm-ostree
module offers pseudo-declarative package and repository management using rpm-ostree
.
The module first downloads the repository files from repositories declared under repos:
into /etc/yum.repos.d/
. The magic string %OS_VERSION%
is substituted with the current VERSION_ID (major Fedora version), which can be used, for example, for pulling correct versions of repositories from Fedora’s Copr.
If you use a repo that requires adding custom keys (eg. Brave Browser), you can import the keys by declaring the key URLs under keys:
. The magic string acts the same as it does in repos
.
Then the module installs the packages declared under install:
using rpm-ostree install
, it removes the packages declared under remove:
using rpm-ostree override remove
. If there are packages declared under both install:
and remove:
a hybrid command rpm-ostree remove <packages> --install <packages>
is used, which should allow you to switch required packages for other ones.
Installing RPM packages directly from a http(s)
url that points to the RPM file is also supported, you can just put the URLs under install:
and they’ll be installed along with the other packages. The magic string %OS_VERSION%
is substituted with the current VERSION_ID (major Fedora version) like with the repos:
property.
The module can also replace base RPM packages. Under replace:
, the module finds every pair of keys - from-repo:
and packages:
. (Multiple pairs are supported.) The module downloads the repository file declared by - from-repo:
into /etc/yum.repos.d/
and from that repository replaces packages declared under packages:
using the command rpm-ostree override replace
. The repository file is then deleted. The magic string %OS_VERSION%
is substituted with the current VERSION_ID (major Fedora version) as already said above.
Additionally, the rpm-ostree
module supports a temporary (waiting for rpm-ostree
issue #233) fix for packages that install into /opt/
. Installation for packages that install into folder names declared under optfix:
are fixed using some symlinks.
Known issues
When removing certain packages, some problem probably in upstream rpm-ostree
causes a depsolve
issue similar to below.
Resolving dependencies...doneerror: Could not depsolve transaction; 1 problem detected:Problem: conflicting requests
Example configuration
type: rpm-ostreerepos: - https://copr.fedorainfracloud.org/coprs/atim/starship/repo/fedora-%OS_VERSION%/atim-starship-fedora-%OS_VERSION%.repo # when including COPR repos, use the %OS_VERSION% magic string - https://pkgs.tailscale.com/stable/fedora/tailscale.repo - https://brave-browser-rpm-release.s3.brave.com/brave-browser.repokeys: - https://brave-browser-rpm-release.s3.brave.com/brave-core.ascinstall: - python3-pip - libadwaitaremove: - firefox - firefox-langpacksreplace: - from-repo: https://copr.fedorainfracloud.org/coprs/trixieua/mutter-patched/repo/fedora-%OS_VERSION%/trixieua-mutter-patched-fedora-%OS_VERSION%.repo packages: - mutter - mutter-common - gdm - from-repo: https://copr.fedorainfracloud.org/coprs/owner/repository2/repo/fedora-%OS_VERSION%/owner-repository2-fedora-%OS_VERSION%.repo packages: - package4 - package5
Configuration options
repos:
(optional array)
List of links to .repo files to download into /etc/yum.repos.d/.
keys:
(optional array)
List of links to key files to import for installing from custom repositories.
install:
(optional array)
List of RPM packages to install.
remove:
(optional array)
List of RPM packages to remove.