5e2aeb4793
I wanted to modify the lockfile specification, but then remembered that it currently lives in two places right now: once on the Rust side where it's deserialized, and once more on the C side where it's serialized. If we could write the lockfile from the Rust side, then we wouldn't have to deal with the `GVariantBuild` and `json-glib` goop, and instead we could consistently use serde against the same struct for both serialization and deserialization. But there isn't an easy way to do this given that the state to be serialized is intrinsically linked to libdnf. So this patch takes the next step in our oxidation process by adding a minimal `libdnf_sys` module which allows us to call `libdnf` functions from Rust. This is not the prettiest code I've written, and there's definitely some polishing that could be done. But I think overall it's a move in the right general direction: as we oxidize more things, we'll at some point *have* to integrate more tightly with the C side in a bidirectional way, instead of the "one-way" approach we've been using so far. For this patch specifically, in exchange we get a unique source of truth for the lockfile spec, just like the treefile, and we drop a lot of C code in the process. Closes: #1867 Approved by: cgwalters |
||
---|---|---|
.github | ||
api-doc | ||
bindgen | ||
buildutil | ||
ci | ||
completion | ||
design | ||
docs | ||
experiments-and-demos/skopeo2ostree | ||
libdnf@8a6b5837bb | ||
libglnx@470af8763f | ||
man | ||
packaging | ||
rust | ||
scripts | ||
src | ||
tests | ||
vagrant | ||
.dir-locals.el | ||
.editorconfig | ||
.gitmodules | ||
.papr.yml | ||
.vimrc | ||
autogen.sh | ||
configure.ac | ||
CONTRIBUTING.md | ||
COPYING | ||
git.mk | ||
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 | ||
Makefile-man.am | ||
Makefile-rpm-ostree.am | ||
Makefile-tests.am | ||
Makefile.am | ||
mkdocs.yml | ||
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
Projects using rpm-ostree
Project Atomic is an umbrella project for delivering upstream container technologies and combined with a minimized, atomically upgradable host system to Fedora, Red Hat Enterprise Linux, and CentOS.
rpm-ostree is the underlying technology for host updates. The headlining project is "Atomic Host", which is a server variant oriented towards running Linux containers using e.g. Kubernetes. However, there is now also a Workstation variant, showing the full generality of the rpm-ostree model.
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:
- devconf.cz 2018: Colin Walters: Hybrid image/package OS updates with rpm-ostree slides
- devconf.cz 2018: Peter Robinson: Using Fedora and OSTree for IoT