---
# System prepended metadata

title: rpm-ostree v2022.2

---

# rpm-ostree v2022.2

A major feature in this release is:

* Add rpm-ostree ex rebuild command by @jlebon in https://github.com/coreos/rpm-ostree/pull/3340


This means `rpm-ostree` now has experimental support for layering packages defined on a tree file under `/etc/rpm-ostree/origin.d/` which gives us a more declarative way to add packages on top of the OS.  At the current time, this only works when run inside an ostree-based container.

This work is aimed for [CoreOS layering](https://github.com/coreos/enhancements/blob/main/os/coreos-layering.md)/[ostree native container](https://fedoraproject.org/wiki/Changes/OstreeNativeContainer).

We also fixed integration with two major changes coming in Fedora 36: 
* https://fedoraproject.org/wiki/Changes/Make_Authselect_Mandatory
* https://fedoraproject.org/wiki/Changes/RelocateRPMDNFToUsr

There is now support for `platform-module` in treefiles, which can be useful for modularity integration at build time.

There's an ongoing effort to make use of [cap-std](https://docs.rs/cap-std/latest/cap_std/) and [rustix](https://docs.rs/rustix/latest/rustix/), with some more incremental porting happening in this release.

And of course, many other fixes and minor improvements!

```
Aravindh Puthiyaparambil (1):
      docs: clarify layering tutorial

Benno Rice (3):
      Allow the platform module to be specified in the Treefile.
      Fix platform_module getter.
      Document platform-module field.

Colin Walters (30):
      Start using cap-std/rustix instead of openat/nix
      tree-wide: Replace `nix::get*[ug]id` with rustix equivalents
      build-sys: Symlink, not hard link `ostree-container`
      scripts: Replace `authselect-libs` prein
      composepost: Deal with `/etc/nsswitch.conf` being a symlink to authselect
      core: When we fail to find a locked package, also print non-matches
      core: Small tweaks for non-matching package output
      client: Add context to microdnf failure to exec
      ci: Try using next so we pick up `microdnf`
      container-image: Test installs in a container
      packaging: Add `Recommends: skopeo`
      ci: Switch back to `testing-devel`
      README.md: Link to ostree native container change
      docs: Give a kernel override example too
      Bump ostree-ext and cap-std
      core: Honor `repo-packages` in treefile on client too
      treefile: Don't bail out if `/etc/rpm-ostree` doesn't exist
      ex-rebuild: Print something in the case where we found no files
      treefile: Fix parsing of derived config fields
      docs/container: Update for recent changes
      treefile: Use `Deref` trait for something like inheritance
      composepost: Do replace `altfiles` in `/etc/authselect/nsswitch.conf`
      `ex rebuild`: Drop check gating on `packages` key
      Add a `Dockerfile.containerci`
      treefile: Also error if derive is nonempty for client side
      treefile: Fix naming of `assert_empty()`
      Revert "composepost: Do replace `altfiles` in `/etc/authselect/nsswitch.conf`"
      Bump to cap-std-ext 0.24
      tests/container-image: Support old rhel8 podman
      Bump to ostree-ext 0.6.3

Jonathan Lebon (24):
      composepost: Add comment re. tmpfiles.d conversion
      tests/compose: check for /run/ostree-booted in unified mode
      rust: const-ify `OSTREE_BOOTED` path
      compose: Support `/run/ostree-booted` also in legacy mode
      rust/treefile: Document `extra` struct member a bit more
      rust/treefile: Sort compose knobs into "base" and "derivation"
      rust/treefile: Simplify `error_if_nonempty`
      core: Add new `rpmostree_context_new_container`
      rust/treefile: Add client treefile support
      Stabilize `initramfs-etc`
      rust/treefile: Factor out parsing and postprocess
      core: Connect callback to dnf context state changes
      rust/treefile: Also validate treefile when creating from string
      rust/treefile: Don't support workdir for clients
      rust/treefile: Support creating client from /etc dropins
      Add `rpm-ostree ex rebuild` command
      app/pkg-builtins: Use container backend for installs
      Finish dropping microdnf dependency
      rust: Fix `cargo clippy` warnings
      rust/treefile: Support creating client from /etc dropins
      Add `rpm-ostree ex rebuild` command
      app/pkg-builtins: Use container backend for installs
      Finish dropping microdnf dependency
      composepost: Remove /usr/lib/sysimage/rpm dir before symlinking

Joseph Marrero (1):
      docs/layering: Tutorial on using the rpm-ostree layering feature

Luca BRUNO (4):
      daemon: port revision-string parser to Rust
      daemon/donwload-pkgs: fix a wrong error return
      libpriv/core: recursively create /var/lib/rpm-state
      libpriv/importer: log spurious content for debugging

Timothée Ravier (3):
      docs: Match title and link for ex-container page
      docs: Add page for `override replace --experimental`
      docs/countme: Update doc links and trigger frequency
```

## New Contributors
* @aravindhp made their first contribution in https://github.com/coreos/rpm-ostree/pull/3345

**Full Changelog**: https://github.com/coreos/rpm-ostree/compare/v2022.1...v2022.2