2024-04-30 09:04:57 -04:00
|
|
|
= Understanding bootc and rpm-ostree
|
|
|
|
|
|
|
|
|
|
== bootc
|
|
|
|
|
|
2025-03-08 13:28:28 -05:00
|
|
|
The main focus of {projname} is on {bootc-upstream}[bootc]. However,
|
2024-04-30 09:04:57 -04:00
|
|
|
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
|
|
|
|
|
|
2024-06-07 09:36:55 -04:00
|
|
|
It is supported to install and use rpm-ostree on a {projname} system,
|
|
|
|
|
because the bootc and rpm-ostree projects share significant underlying code.
|
2024-04-30 09:04:57 -04:00
|
|
|
|
|
|
|
|
==== 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].
|
|
|
|
|
|
2024-06-07 09:36:55 -04:00
|
|
|
There's not generally a strong reason to use `rpm-ostree` inside a container
|
|
|
|
|
build.
|
|
|
|
|
|
2024-04-30 09:04:57 -04:00
|
|
|
==== 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.
|
2024-06-07 09:36:55 -04:00
|
|
|
|
|
|
|
|
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].
|
|
|
|
|
|
2025-03-13 10:31:26 +01:00
|
|
|
This would build on more generic support for {bootc-upstream}/booting-local-builds.html[booting local builds]
|
2024-06-07 09:36:55 -04:00
|
|
|
for persistent layering.
|