Go to file
dependabot-preview[bot] 748704a7c8 build(deps): bump libglnx from fc9073e to 3c285a7
Bumps libglnx from `fc9073e` to `3c285a7`.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-15 12:40:54 -04:00
.github
api-doc
bindgen
buildutil
ci
completion
design
docs
experiments-and-demos/skopeo2ostree
libdnf@066c6273ef build(deps): bump libdnf from 65c7e43 to 066c627 2020-06-10 16:53:40 -04:00
libglnx@3c285a7b3a build(deps): bump libglnx from fc9073e to 3c285a7 2020-06-15 12:40:54 -04:00
man
packaging
rust
scripts
src
tests
vagrant
.cci.jenkinsfile
.dir-locals.el
.editorconfig
.gitmodules
.vimrc
autogen.sh
configure.ac
CONTRIBUTING.md
COPYING.GPL
COPYING.LGPL
git.mk build: Use git.mk, make git status clean 2016-03-10 14:36:44 -05:00
HACKING.md
LICENSE
Makefile-bash.am
Makefile-daemon.am
Makefile-decls.am
Makefile-extra.inc
Makefile-lib-defines.am
Makefile-lib.am
Makefile-libdnf.am
Makefile-libpriv.am app,daemon: Use public libostree's kargs API 2019-08-21 16:47:52 -04:00
Makefile-man.am
Makefile-rpm-ostree.am
Makefile-tests.am
Makefile.am
mkdocs.yml
OWNERS
README.md
Vagrantfile

rpm-ostree: A true hybrid image/package system

rpm-ostree combines libostree (an image system), with libdnf (a package system), bringing many of the benefits of both together.

                         +-----------------------------------------+
                         |                                         |
                         |       rpm-ostree (daemon + CLI)         |
                  +------>                                         <---------+
                  |      |     status, upgrade, rollback,          |         |
                  |      |     pkg layering, initramfs --enable    |         |
                  |      |                                         |         |
                  |      +-----------------------------------------+         |
                  |                                                          |
                  |                                                          |
                  |                                                          |
+-----------------|-------------------------+        +-----------------------|-----------------+
|                                           |        |                                         |
|         libostree (image system)          |        |            libdnf (pkg system)          |
|                                           |        |                                         |
|   C API, hardlink fs trees, system repo,  |        |    ties together libsolv (SAT solver)   |
|   commits, atomic bootloader swap         |        |    with librepo (RPM repo downloads)    |
|                                           |        |                                         |
+-------------------------------------------+        +-----------------------------------------+

For more information, see the online manual: Read The Docs (rpm-ostree)

Features:

  • Transactional, background image-based (versioned/checksummed) upgrades
  • OS rollback without affecting user data (/usr but not /etc, /var) via libostree
  • Client-side package layering (and overrides)
  • Easily make your own: rpm-ostree compose tree and CoreOS Assembler

Projects using rpm-ostree

The OSTree project is independent of distributions and agnostic to how content is delivered and managed; it's used today by e.g. Debian, Fedora, and OpenEmbedded derived systems among others. There are some examples in the OSTree github.

In contrast, rpm-ostree is intended to be tightly integrated with the Fedora ecosystem. Today it is the underlying update mechanism of Fedora CoreOS as well as its derivative RHEL CoreOS. It is also used by Fedora IoT and Fedora Silverblue.

Originally, it was productized as part of Project Atomic.

Why?

Package systems such as apt and yum are highly prevalent in Linux-based operating systems. The core premise of rpm-ostree is that image-based updates should be the default. This provides a high degree of predictability and resiliency. However, where rpm-ostree is fairly unique in the ecosystem is supporting client-side package layering and overrides; deeply integrating RPM as an (optional) layer on top of OSTree.

A good way to think of package layering is recasting RPMs as "operating system extensions", similar to how browser extensions work (although before those were sandboxed). One can use package layering for components not easily containerized, such as PAM modules, custom shells, etc.

Further, one can easily use rpm-ostree override replace to override the kernel or userspace components with the very same RPMs shipped to traditional systems. The Fedora project for example continues to only have one kernel build.

Layering and overrides are still built on top of the default OSTree engine - installing and updating client-side packages constructs a new filesystem root, it does not by default affect your booted root. This preserves the "image" nature of the system.

Manual

For more information, see the online manual: Read The Docs (rpm-ostree)

Talks and media

A number of Project Atomic talks are available; see for example this post which has a bigger collection that also includes talks on containers.

rpm-ostree specific talks:

License

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