Improve the heuristic to use only the part before the first '.' when looking for a similar file in the current directory. last versions of dracut generate reproducible initramfs files, but we still fallback to the full file download if there is any minimal change that causes a different checksum and file name. This change extends that case to deal better with similar files that have a different suffix. This is the difference generating a static delta from fedora-atomic/f24/x86_64/docker-host to fedora-atomic/f24/x86_64/testing/docker-host before the patch: fallback for 111ec866aa7ce3688407fa4a1ae7c9fca93dcee0b851fc9434c59ff947830cc7 (47.0 MB) fallback for c6a898265de22b02c89ea2f35d132628d0ee1c0a058052ed14fee5799c17904c (47.0 MB) fallback for fbce656249ece77260887ed873e445561b9d43bcb28a32e759c0b1bab89e7137 (6.6 MB) fallback for cfdb51457e47e0a0fe0bac38991a21279d2646ff2f019630c7b52a0cd3451397 (6.6 MB) part 0 n:1972 compressed:11239809 uncompressed:33747412 part 1 n:1079 compressed:9683681 uncompressed:55641397 part 2 n:1507 compressed:15050265 uncompressed:44448838 part 3 n:101 compressed:1865881 uncompressed:31896086 part 4 n:278 compressed:2452585 uncompressed:52811323 part 5 n:18 compressed:67621 uncompressed:100220 uncompressed=218645276 compressed=40359842 loose=545102 rollsum=49 objects, 2117254 bytes bsdiff=4067 objects after the patch: part 0 n:843 compressed:19844109 uncompressed:95443178 part 1 n:1223 compressed:11188609 uncompressed:33330401 part 2 n:990 compressed:15762905 uncompressed:61214132 part 3 n:1441 compressed:20614573 uncompressed:31534195 part 4 n:163 compressed:2734997 uncompressed:51356423 part 5 n:285 compressed:2480813 uncompressed:52902904 part 6 n:14 compressed:59125 uncompressed:75341 uncompressed=325856574 compressed=72685131 loose=533283 rollsum=51 objects, 57235332 bytes bsdiff=4073 objects Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com> Closes: #554 Approved by: cgwalters |
||
|---|---|---|
| apidoc | ||
| bsdiff@1edf9f6568 | ||
| build-aux | ||
| buildutil | ||
| contrib/golang | ||
| docs | ||
| libglnx@36396b49ad | ||
| man | ||
| manual-tests | ||
| packaging | ||
| src | ||
| tests | ||
| .gitmodules | ||
| .redhat-ci.Dockerfile | ||
| .redhat-ci.yml | ||
| .travis.yml | ||
| CONTRIBUTING.md | ||
| COPYING | ||
| GNUmakefile | ||
| Makefile-boot.am | ||
| Makefile-decls.am | ||
| Makefile-libostree-defines.am | ||
| Makefile-libostree.am | ||
| Makefile-man.am | ||
| Makefile-ostree.am | ||
| Makefile-otutil.am | ||
| Makefile-switchroot.am | ||
| Makefile-tests.am | ||
| Makefile.am | ||
| README-historical.md | ||
| README.md | ||
| TODO | ||
| autogen.sh | ||
| cfg.mk | ||
| configure.ac | ||
| git.mk | ||
| maint.mk | ||
| mkdocs.yml | ||
| ostree.doap | ||
README.md
OSTree
New! See the docs online at Read The Docs (OSTree)
OSTree is a tool that combines a "git-like" model for committing and downloading bootable filesystem trees, along with a layer for deploying them and managing the bootloader configuration.
OSTree is like git in that it checksums individual files and has a content-addressed-object store. It's unlike git in that it "checks out" the files via hardlinks, and they should thus be immutable. Therefore, another way to think of OSTree is that it's just a more polished version of Linux VServer hardlinks.
Features:
- Atomic upgrades and rollback for the system
- Replicating content incrementally over HTTP via GPG signatures and "pinned TLS" support
- Support for parallel installing more than just 2 bootable roots
- Binary history on the server side (and client)
- Introspectable shared library API for build and deployment systems
This last point is important - you should think of the OSTree command line as effectively a "demo" for the shared library. The intent is that package managers, system upgrade tools, container build tools and the like use OSTree as a "deduplicating hardlink store".
Projects using OSTree
rpm-ostree is a tool that uses OSTree as a shared library, and supports committing RPMs into an OSTree repository, and deploying them on the client. This is appropriate for "fixed purpose" systems. There is in progress work for more sophisticated hybrid models, deeply integrating the RPM packaging with OSTree.
Project Atomic uses rpm-ostree to provide a minimal host for Docker formatted Linux containers. Replicating a base immutable OS, then using Docker for applications meshes together two different tools with different tradeoffs.
flatpak uses OSTree for desktop application containers.
GNOME Continuous is a custom build system designed for OSTree, using OpenEmbedded in concert with a custom build system to do continuous delivery from hundreds of git repositories.
Building
Releases are available as GPG signed git tags, and most recent versions support extended validation using git-evtag.
However, in order to build from a git clone, you must update the submodules. If you're packaging OSTree and want a tarball, I recommend using a "recursive git archive" script. There are several available online; this code in OSTree is an example.
Once you have a git clone or recursive archive, building is the same as almost every autotools project:
env NOCONFIGURE=1 ./autogen.sh
./configure --prefix=...
make
make install DESTDIR=/path/to/dest
More documentation
New! See the docs online at Read The Docs (OSTree)
Some more information is available on the old wiki page: https://wiki.gnome.org/Projects/OSTree
Contributing
See Contributing.