docs/modules/ROOT/pages/rpm-ostree.adoc

49 lines
1.9 KiB
Text
Raw Permalink Normal View History

= Understanding bootc and rpm-ostree
== bootc
The main focus of {projname} is on {bootc-upstream}[bootc]. However,
the "full" base image currently includes https://github.com/coreos/rpm-ostree/[rpm-ostree]
which shares a lot of the same underlying code from the https://github.com/ostreedev/ostree-rs-ext/[ostree]
project.
=== Using rpm-ostree
It is supported to install and use rpm-ostree on a {projname} system,
because the bootc and rpm-ostree projects share significant underlying code.
==== Using in container builds
At the current time, operations such as `RUN rpm-ostree install foo` when
executed as part of a container build are not substantially different
from what happens with `RUN dnf install foo` - the two codebases
ultimately share a lot via https://github.com/rpm-software-management/libdnf[libdnf].
There's not generally a strong reason to use `rpm-ostree` inside a container
build.
==== Client side operations
===== rpm-ostree upgrade/rollback
The `rpm-ostree upgrade`, `rebase`, `deploy` verbs etc. will all gracefully
interact with a `bootc` system - at the current time they operate on shared state.
You can interchange `rpm-ostree upgrade` with `bootc upgrade`, etc; they
currently perform the same operations in general.
===== rpm-ostree install/override replace
However, any local state mutations such as package layering, removals, or
enabling e.g. `rpm-ostree initramfs --enable` will cause `bootc upgrade`
to error out.
Hence if you choose to use such features, then you will need to switch over
to interacting with rpm-ostree going forward for updates.
In the more medium term, there are plans to extend `dnf` to also support
client-side functionality similar to this:
https://gitlab.com/fedora/bootc/tracker/-/issues/4[client side layering tracker].
This would build on more generic support for {bootc-upstream}/booting-local-builds.html[booting local builds]
for persistent layering.