/rpm-ostree

⚛📦 Hybrid image/package system with atomic upgrades and package layering

Primary LanguageCOtherNOASSERTION

rpm-ostree: A true hybrid image/package system

Important

Currently, development focus has shifted to bootc, dnf, and the ecosystem around those tools. However, rpm-ostree is widely in use today in many upstream projects and downstream products and we will continue to support it for some time with an emphasis on fixing important bugs, especially security-related ones. Some minor enhancements may happen but in general new major features, especially client-side, are unlikely to be prioritized. For more information, see:

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) or rpm-ostree compose tree (ostree repo)

Documentation

For more information, see the project documentation or the project documentation website.

License

rpm-ostree includes code licensed under GPLv2+, LGPLv2+, (Apache 2.0 OR MIT). For more information, see LICENSE.