Update of "AppFS"
Overview

Artifact ID: 3f4cb4a74f137fde61fc57a5576142b4afb46bce
Page Name:AppFS
Date: 2015-09-30 14:06:44
Original User: rkeene
Mimetype:text/x-markdown
Parent: e3fc3898d55b3ed5fbf78b54a6aa556304e41b67 (diff)
Next 8ee320e0f8b3ff13e22d0122a47de4b593867de5
Content

Files on disk.

AppFS is a universal packaging format that is presented to the system as a filesystem (via FUSE). Packages manifests as well as individual package files are lazily-fetched (Just-In-Time) and cached to disk so the "installation" step is transparent. Regular unprivileged users can read (and write!) to any file in any package, thus allowing completely unprivileged "installation" of packages and allowing users to update configuration files for the package.

All remote files in AppFS are identified by the SHA1 of their contents so multiple users accessing the same file (content-wise) will share the same locally cached copy.

It is similar to the the original 0install implementation, LazyFS. It supports many features required for large scale deployments. It has the following fancy features:

  • Write support: Writes are redirected to the users HOME directory
  • Set-UID root support: Administrators may set conditions on which files are Set-UID root (by default, no files are)
  • Run-time configuration reloading: All configuration may be reloaded at run-time
  • PKI support: Package providers can optionally sign index files, which in turn signs all packages and all files in packages

It should be mounted in /opt/appfs. Once mounted, sub-directories will be automatically made available by attempting to access the hostname of an AppFS server. For example, /opt/appfs/core.appfs.rkeene.org contains:

$ ls -l /opt/appfs/core.appfs.rkeene.org/
total 0
dr-xr-xr-x 4 root root 0 Nov 19 04:02 acl/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 appfs/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 applications/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 attr/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 bash/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 binutils/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 bzip2/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 coreutils/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 glibc/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 gmp/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 libcap/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 linux-headers/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 mpc/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 mpfr/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 ncurses/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 readline/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 tcl/
dr-xr-xr-x 4 root root 0 Nov 19 04:02 zlib/
$

Demo

<script type="text/javascript" src="https://asciinema.org/a/20465.js" id="asciicast-20465" async></script>

Download

Documentation