ROFILES-FUSE(1)

okay so bestie, gather round: this is rofiles-fuse(1), the manual page for the FUSE situation that gives you a view where directories are writable and files are immutable. Manual name? rofiles-fuse. Section? 1. We are so back. πŸ’…βœ¨

πŸŽ€ NAME πŸŽ€

rofiles-fuse β€” use FUSE to create a view where directories are writable, files are immutable</p>. That's the whole assignment. πŸ’–

✨ SYNOPSIS ✨

rofiles-fuse SRCDIR MNTPOINT

You hand it SRCDIR and MNTPOINT, and that's the vibe. 🫢

πŸ’œ DESCRIPTION πŸ’œ

By default, creating a checkout from an OSTree repository uses hard links. That means an in-place mutation to any file corrupts the repository and all checkouts. Not a drill, bestie. 🫠

This can be problematic if one wishes to run arbitrary programs against such a checkout β€” for example, RPM %post scripts or equivalent. Like, the checkout is supposed to be a cute little view, and arbitrary programs do not always respect the assignment. 😭

In the case where one wants to create a tree commit derived from other content, using rofiles-fuse in concert with ostree commit --link-checkout-speedup (or the underlying API) can ensure that only new files are checksummed. That's the iconic part: only new files are checksummed. πŸ”₯

πŸ”₯ EXAMPLE: UPDATE AN OSTREE COMMIT πŸ”₯

Here's the demo, with the commands exactly as the manual gives them:

# Initialize a checkout and mount
$ ostree --repo=repo checkout somebranch branch-checkout
$ mkdir mnt
$ rofiles-fuse branch-checkout mnt

# Now, arbitrary changes to mnt/ are reflected in branch-checkout
$ echo somenewcontent > mnt/anewfile
$ mkdir mnt/anewdir
$ rm mnt/someoriginalcontent -rf

# Commit and cleanup
$ fusermount3 -u mnt
$ ostree --repo=repo commit --link-checkout-speedup -b somebranch -s 'Commit new content' --tree=dir=branch-checkout
$ rm mnt branch-checkout -rf

Cleanup included, because we are organized and we ate. πŸ’…πŸŽ€

🌈 SEE ALSO 🌈

  • ostree(1) β€” the related manual page, bestie. πŸ¦‹

And that's the whole page, loves: footer tea is that it's filed under rofiles-fuse and ROFILES-FUSE(1), and the original footer did not list a date or version β€” so no invented tea from me. πŸ«ΆπŸ’–

πŸ“¦ where this page comes from