1
0
mirror of https://github.com/projectatomic/rpm-ostree.git synced 2026-02-05 09:45:27 +01:00
Colin Walters 29222a1a0f Add build+test infra mirroring bootc
This introduces a Justfile and Dockerfile to enable building rpm-ostree
from source in a container, following the pattern established in the
bootc project.

See the `Justfile` for key entrypoints. Those are now used
in a new GHA flow, which we'll try to move things over to.

A key difference though vs bootc is because rpm-ostree has a lot
of C++ too we use sccache which greatly speeds things up across
incremental rebuilds.

Just one side cleanup of this is before it was *terribly*
painful and manual to hack on `test-container.sh`, and now it's easy,
fast and optimized.

Assisted-by: Claude Code (Sonnet 4.5)
Signed-off-by: Colin Walters <walters@verbum.org>
2025-11-03 13:42:14 -05:00
2025-07-04 15:12:46 +00:00
2025-11-03 13:42:14 -05:00
2023-11-04 15:34:00 -04:00
2025-09-08 16:41:11 +08:00
2025-10-23 14:17:25 -04:00
2025-09-09 10:29:37 -04:00
2025-05-30 10:39:35 -04:00
2020-10-01 12:01:25 -04:00
2025-11-03 13:42:14 -05:00
2018-11-21 21:16:03 +00:00
2022-05-13 14:05:12 -04:00
2021-09-07 15:57:44 -04:00
2020-10-01 12:01:25 -04:00

rpm-ostree: A true hybrid image/package system

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.

NOTE: 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 continues to be supported. In general, new major features related to bootable containers should land in those projects instead.

flowchart TD
    rpmostree["rpm-ostree (daemon + CLI)
        status, upgrade, rollback
        package layering
        initramfs --enable"] 
    bootc["bootc (image system)
        fetch bootable container images
        transactional upgrades and rollbacks"]
    ostree["ostree (image system)
        fetch ostree repositories
        transactional upgrades and rollbacks"]
    libdnf["libdnf (pkg system) ties together
        libsolv (SAT solver)
        librepo (RPM repo downloads)
        librpm (RPM installation)
        "]

    rpmostree --> ostree
    rpmostree --> bootc
    rpmostree --> libdnf

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.

Description
Hybrid image/package system with atomic upgrades and package layering
Readme 27 MiB
Languages
C++ 61.1%
Rust 17.3%
Shell 13%
C 6.5%
M4 0.7%
Other 1.4%