apt2ostree
ostree
Our great sponsors
apt2ostree | ostree | |
---|---|---|
6 | 41 | |
93 | 1,172 | |
- | 3.6% | |
0.0 | 9.5 | |
over 1 year ago | 4 days ago | |
Python | C | |
- | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
apt2ostree
-
Why Use Make
Hm yes now I remember that point about how the data is anonymous Python objects that you can pass around to functions.
Are there any open source examples? I looked around the github account, but I mostly remember this tool
https://github.com/stb-tester/apt2ostree
I'd be interested in seeing the Python config and Ninja output, to see how it works. Right now it looks to me like the dependencies are more implicit than explicit, e.g. with your copen example
---
The system I ended up with is more like Bazel, but it's not building containers, so it's a slightly different problem. But I'm interested in building containers incrementally without 'docker build'.
I like the apt lockfile idea definitely ... However I also have a bunch of other blobs and tarballs, that I might not want to check into git. I guess you just put those in OSTree?
Our config looks like this
https://github.com/oilshell/oil/blob/master/core/NINJA_subgr...
And all the code is in build/ninja* of the same repo
-
An ode to Flatpak (and Fedora Silverblue)
However, you can get pretty close yourself with a tool like this https://github.com/stb-tester/apt2ostree
-
Docker containers usually still reachable even if bound to 127.0.0.1
With apt2ostree[1] we use lockfiles to allow us to version control the exact versions that were used to build a container. This makes updating the versions explicit and controlled, and building the containers functionally reproducible - albeit not byte-for-byte reproducible.
-
Any plans for an immutable Debian desktop?
If you have time to test things, you can try to use ostree to manage a Debian installation. This is what Silverblue uses. Their is already a tool to create APT-based ostree images.
- Lockfiles for packages in a Debian/Ubuntu rootfs
-
Reproducible builds for Debian: a big step forward
On the subject of reproducible debian-based environments I wrote apt2ostree[1]. It applies the cargo/npm lockfile idea to debian rootfs images. From a list of packages we perform dependency resolution and generate a "lockfile" that contains the complete list of all packages, their versions and their SHAs. You can commit this lockfile to git.
You can then install Debian or Ubuntu into a chroot just based on this lockfile and end up with a functionally reproducible result. It won't be completely byte identical as your SSH keys, machine-id, etc. will be different between installations, but you'll always end up with the same packages and package versions installed for a given lockfile.
This has saved us on a few occasions where an apt upgrade had broken the workflow of some of our customers. We could see exactly which package versions changed in git history and roll-back the problematic package before working on fixing it properly. This is vastly better than the traditional `RUN apt-get install -y blah blah` you see in `Dockerfile`s.
IMO it's also more convenient than debootstrap as you don't need to worry about gpg keys, etc. when building the image. Dependency resolution and gpg key stuff is done at lockfile generation time, so the installation process can be much simpler. In theory it could be made such that only dpkg is required to do the install, rather than the whole of apt, but that's by-the-by.
apt2ostree itself is probably not interesting to most people as it depends on ostree and ninja but I think the lockfile concept as applied to debian repos could be of much broader interest.
ostree
-
NixOS Reproducible Builds: minimal ISO successfully independently rebuilt
Ansible makes mutable changes to the OS, task by task.
Nix is immutable. A new change is made entirely new, and only after the build is successful, all packages are "symlinked" to the current system.
Fedora Silverblue is based on ostree [1]. It works similarly like git, but on your root tree. But it requires you to reboot the whole system for the changes to take effect. Since Nix is just symlinked packages, you don't need to reboot the system.
More detailed explanation here [2].
[1]: https://github.com/ostreedev/ostree
[2]: https://dataswamp.org/~solene/2023-07-12-intro-to-immutable-...
- Can't install from flathub
- hello guys everytime i intall a flatpak on fedora this error always happnes how do i fix it
-
PSA: Flatpaks are currently broken on Fedora. Here's a temporary solution.
This one is for the ostree bug currently ongoing: https://github.com/ostreedev/ostree/issues/2900
-
flatpak issue on fedora 38 kde
This sounds related to the ostree bug.
- ostree-system-generator failed with exit status 1 on every boot after update.
-
What do you prefer more and why?
I definitely agree that immutability offers considerable value in regards to improving security. But arguably it's insufficient to pull the win over mutable Fedora due to the losses caused by the inability to install the kernel-hardened package and the lack of UKI (Unified Kernel Image) support.
-
Question about immutability
Other hardening guides mention a Unified Kernel Image as another measure to further improve security. Unfortunately, once more, this is (currently) not supported on Fedora Silverblue. I haven't seen it being done on openSUSE Aeon either. Though, once again, I'd love to be corrected!
-
Does an immutable system really provide enhanced security?
The fedora crew is working on it through ostree though, so both fedora Silverblue and flatpak will be getting it (as well as true immutability) in the future: https://github.com/ostreedev/ostree/issues/2867
-
Silverblue/ Kinoite - real-life shortcomings?
Aside from what has already been mentioned, Unified Kernel Image isn't supported (yet).
What are some alternatives?
chromium - The official GitHub mirror of the Chromium source
rpm-ostree - ⚛📦 Hybrid image/package system with atomic upgrades and package layering
rkt
bubblewrap - Low-level unprivileged sandboxing tool used by Flatpak and similar projects
eget - Easily install prebuilt binaries from GitHub.
flatpak - Linux application sandboxing and distribution framework
singularity - SingularityCE is the Community Edition of Singularity, an open source container platform designed to be simple, fast, and secure.
waydroid - Waydroid uses a container-based approach to boot a full Android system on a regular GNU/Linux system like Ubuntu.
knit - A simple and flexible build tool using Lua, similar to make/mk.
mkosi - 💽 Build Bespoke OS Images
office365-pol - [OUTDATED] A PlayOnLinux script that utilizes the version of Wine made for CrossOver to run Microsoft 365 Apps / Office 365 without requiring any paid CrossOver components
pkg2appimage - Tool and recipes to convert existing deb packages to AppImage