rpm-ostree is a hybrid image/package system. It combines libostree as a base image format, and accepts RPM on both the client and server side, sharing code with the dnf project; specifically libdnf. and thus bringing many of the benefits of both together.
🆕 as of release 2022.16 rpm-ostree now also supports ostree native containers.
┌─────────────────────────────────────────┐
│ │
│ rpm-ostree (daemon + CLI) │
┌──────┤ ├─────────┐
│ │ status, upgrade, rollback, │ │
│ │ pkg layering, initramfs --enable │ │
│ │ │ │
│ └─────────────────────────────────────────┘ │
│ │
│ │
│ │
┌─────────────────┴─────────────────────────┐ ┌───────────────────────┴─────────────────┐
│ │ │ │
│ ostree (image system) │ │ libdnf (pkg system) │
│ │ │ │
│ fetch ostree repos and container images, │ │ ties together libsolv (SAT solver) │
│ atomic filesystem trees, rollbacks │ │ with librepo (RPM repo downloads) │
│ │ │ │
└───────────────────────────────────────────┘ └─────────────────────────────────────────┘
Features:
- Transactional, background image-based (versioned/checksummed) upgrades, using both bootable container images as well as an "ostree native" HTTP model
- OS rollback without affecting user data (
/usr
but not/etc
,/var
) via libostree - Client-side package layering (and overrides)
- Custom base images via
rpm-ostree compose image
(container) orrpm-ostree compose tree
(ostree repo)
For more information, see the project documentation or the project documentation website.
rpm-ostree includes code licensed under GPLv2+, LGPLv2+, (Apache 2.0 OR MIT). For more information, see LICENSE.