Hex Artifact Content

Artifact 0de170fb4cc308ff1674c8b0f80ee5bfcd7e6e5c:

Wiki page [AppFS] by rkeene on 2017-12-15 05:34:34.
0000: 44 20 32 30 31 37 2d 31 32 2d 31 35 54 30 35 3a  D 2017-12-15T05:
0010: 33 34 3a 33 34 2e 36 30 37 0a 4c 20 41 70 70 46  34:34.607.L AppF
0020: 53 0a 4e 20 74 65 78 74 2f 78 2d 6d 61 72 6b 64  S.N text/x-markd
0030: 6f 77 6e 0a 50 20 38 65 65 33 32 30 65 30 66 38  own.P 8ee320e0f8
0040: 62 33 66 66 31 33 65 32 32 64 30 31 32 32 61 34  b3ff13e22d0122a4
0050: 37 64 65 34 62 35 39 33 38 36 37 64 65 35 0a 55  7de4b593867de5.U
0060: 20 72 6b 65 65 6e 65 0a 57 20 34 32 37 39 0a 46   rkeene.W 4279.F
0070: 69 6c 65 73 20 6f 6e 20 64 69 73 6b 2e 0d 0a 3d  iles on disk...=
0080: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d  =============...
0090: 0a 41 70 70 46 53 20 69 73 20 61 20 75 6e 69 76  .AppFS is a univ
00a0: 65 72 73 61 6c 20 70 61 63 6b 61 67 69 6e 67 20  ersal packaging 
00b0: 66 6f 72 6d 61 74 20 74 68 61 74 20 69 73 20 70  format that is p
00c0: 72 65 73 65 6e 74 65 64 20 74 6f 20 74 68 65 20  resented to the 
00d0: 73 79 73 74 65 6d 20 61 73 20 61 20 66 69 6c 65  system as a file
00e0: 73 79 73 74 65 6d 20 28 76 69 61 20 46 55 53 45  system (via FUSE
00f0: 29 2e 20 20 50 61 63 6b 61 67 65 73 20 6d 61 6e  ).  Packages man
0100: 69 66 65 73 74 73 20 61 73 20 77 65 6c 6c 20 61  ifests as well a
0110: 73 20 69 6e 64 69 76 69 64 75 61 6c 20 70 61 63  s individual pac
0120: 6b 61 67 65 20 66 69 6c 65 73 20 61 72 65 20 6c  kage files are l
0130: 61 7a 69 6c 79 2d 66 65 74 63 68 65 64 20 28 4a  azily-fetched (J
0140: 75 73 74 2d 49 6e 2d 54 69 6d 65 29 20 61 6e 64  ust-In-Time) and
0150: 20 63 61 63 68 65 64 20 74 6f 20 64 69 73 6b 20   cached to disk 
0160: 73 6f 20 74 68 65 20 22 69 6e 73 74 61 6c 6c 61  so the "installa
0170: 74 69 6f 6e 22 20 73 74 65 70 20 69 73 20 74 72  tion" step is tr
0180: 61 6e 73 70 61 72 65 6e 74 2e 20 20 52 65 67 75  ansparent.  Regu
0190: 6c 61 72 20 75 6e 70 72 69 76 69 6c 65 67 65 64  lar unprivileged
01a0: 20 75 73 65 72 73 20 63 61 6e 20 72 65 61 64 20   users can read 
01b0: 28 61 6e 64 20 77 72 69 74 65 21 29 20 74 6f 20  (and write!) to 
01c0: 61 6e 79 20 66 69 6c 65 20 69 6e 20 61 6e 79 20  any file in any 
01d0: 70 61 63 6b 61 67 65 2c 20 74 68 75 73 20 61 6c  package, thus al
01e0: 6c 6f 77 69 6e 67 20 63 6f 6d 70 6c 65 74 65 6c  lowing completel
01f0: 79 20 75 6e 70 72 69 76 69 6c 65 67 65 64 20 22  y unprivileged "
0200: 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 22 20 6f 66  installation" of
0210: 20 70 61 63 6b 61 67 65 73 20 61 6e 64 20 61 6c   packages and al
0220: 6c 6f 77 69 6e 67 20 75 73 65 72 73 20 74 6f 20  lowing users to 
0230: 75 70 64 61 74 65 20 63 6f 6e 66 69 67 75 72 61  update configura
0240: 74 69 6f 6e 20 66 69 6c 65 73 20 66 6f 72 20 74  tion files for t
0250: 68 65 20 70 61 63 6b 61 67 65 2e 0d 0a 0d 0a 41  he package.....A
0260: 6c 6c 20 72 65 6d 6f 74 65 20 66 69 6c 65 73 20  ll remote files 
0270: 69 6e 20 41 70 70 46 53 20 61 72 65 20 69 64 65  in AppFS are ide
0280: 6e 74 69 66 69 65 64 20 62 79 20 74 68 65 20 53  ntified by the S
0290: 48 41 31 20 6f 66 20 74 68 65 69 72 20 63 6f 6e  HA1 of their con
02a0: 74 65 6e 74 73 20 73 6f 20 6d 75 6c 74 69 70 6c  tents so multipl
02b0: 65 20 75 73 65 72 73 20 61 63 63 65 73 73 69 6e  e users accessin
02c0: 67 20 74 68 65 20 73 61 6d 65 20 66 69 6c 65 20  g the same file 
02d0: 28 63 6f 6e 74 65 6e 74 2d 77 69 73 65 29 20 77  (content-wise) w
02e0: 69 6c 6c 20 73 68 61 72 65 20 74 68 65 20 73 61  ill share the sa
02f0: 6d 65 20 6c 6f 63 61 6c 6c 79 20 63 61 63 68 65  me locally cache
0300: 64 20 63 6f 70 79 2e 0d 0a 0d 0a 49 74 20 69 73  d copy.....It is
0310: 20 73 69 6d 69 6c 61 72 20 74 6f 20 74 68 65 20   similar to the 
0320: 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 30 69 6e  the original 0in
0330: 73 74 61 6c 6c 20 69 6d 70 6c 65 6d 65 6e 74 61  stall implementa
0340: 74 69 6f 6e 2c 20 5b 4c 61 7a 79 46 53 5d 28 68  tion, [LazyFS](h
0350: 74 74 70 3a 2f 2f 73 6f 75 72 63 65 66 6f 72 67  ttp://sourceforg
0360: 65 2e 6e 65 74 2f 70 72 6f 6a 65 63 74 73 2f 7a  e.net/projects/z
0370: 65 72 6f 2d 69 6e 73 74 61 6c 6c 2f 66 69 6c 65  ero-install/file
0380: 73 2f 4f 4c 44 2d 6c 61 7a 79 66 73 2d 6c 69 6e  s/OLD-lazyfs-lin
0390: 75 78 2f 29 2e 20 20 49 74 20 73 75 70 70 6f 72  ux/).  It suppor
03a0: 74 73 20 6d 61 6e 79 20 66 65 61 74 75 72 65 73  ts many features
03b0: 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 6c 61   required for la
03c0: 72 67 65 20 73 63 61 6c 65 20 64 65 70 6c 6f 79  rge scale deploy
03d0: 6d 65 6e 74 73 2e 20 20 49 74 20 68 61 73 20 74  ments.  It has t
03e0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 61 6e  he following fan
03f0: 63 79 20 66 65 61 74 75 72 65 73 3a 0d 0a 0d 0a  cy features:....
0400: 20 20 20 2a 20 57 72 69 74 65 20 73 75 70 70 6f     * Write suppo
0410: 72 74 3a 20 57 72 69 74 65 73 20 61 72 65 20 72  rt: Writes are r
0420: 65 64 69 72 65 63 74 65 64 20 74 6f 20 74 68 65  edirected to the
0430: 20 75 73 65 72 73 20 48 4f 4d 45 20 64 69 72 65   users HOME dire
0440: 63 74 6f 72 79 0d 0a 20 20 20 2a 20 53 65 74 2d  ctory..   * Set-
0450: 55 49 44 20 72 6f 6f 74 20 73 75 70 70 6f 72 74  UID root support
0460: 3a 20 41 64 6d 69 6e 69 73 74 72 61 74 6f 72 73  : Administrators
0470: 20 6d 61 79 20 73 65 74 20 63 6f 6e 64 69 74 69   may set conditi
0480: 6f 6e 73 20 6f 6e 20 77 68 69 63 68 20 66 69 6c  ons on which fil
0490: 65 73 20 61 72 65 20 53 65 74 2d 55 49 44 20 72  es are Set-UID r
04a0: 6f 6f 74 20 28 62 79 20 64 65 66 61 75 6c 74 2c  oot (by default,
04b0: 20 6e 6f 20 66 69 6c 65 73 20 61 72 65 29 0d 0a   no files are)..
04c0: 20 20 20 2a 20 52 75 6e 2d 74 69 6d 65 20 63 6f     * Run-time co
04d0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 72 65 6c 6f  nfiguration relo
04e0: 61 64 69 6e 67 3a 20 41 6c 6c 20 63 6f 6e 66 69  ading: All confi
04f0: 67 75 72 61 74 69 6f 6e 20 6d 61 79 20 62 65 20  guration may be 
0500: 72 65 6c 6f 61 64 65 64 20 61 74 20 72 75 6e 2d  reloaded at run-
0510: 74 69 6d 65 0d 0a 20 20 20 2a 20 50 4b 49 20 73  time..   * PKI s
0520: 75 70 70 6f 72 74 3a 20 50 61 63 6b 61 67 65 20  upport: Package 
0530: 70 72 6f 76 69 64 65 72 73 20 63 61 6e 20 6f 70  providers can op
0540: 74 69 6f 6e 61 6c 6c 79 20 73 69 67 6e 20 69 6e  tionally sign in
0550: 64 65 78 20 66 69 6c 65 73 2c 20 77 68 69 63 68  dex files, which
0560: 20 69 6e 20 74 75 72 6e 20 73 69 67 6e 73 20 61   in turn signs a
0570: 6c 6c 20 70 61 63 6b 61 67 65 73 20 61 6e 64 20  ll packages and 
0580: 61 6c 6c 20 66 69 6c 65 73 20 69 6e 20 70 61 63  all files in pac
0590: 6b 61 67 65 73 20 28 75 6e 73 69 67 6e 65 64 20  kages (unsigned 
05a0: 69 6e 64 65 78 65 73 20 61 72 65 20 75 6e 74 72  indexes are untr
05b0: 75 73 74 65 64 20 62 79 20 64 65 66 61 75 6c 74  usted by default
05c0: 29 0d 0a 0d 0a 49 74 20 73 68 6f 75 6c 64 20 62  )....It should b
05d0: 65 20 6d 6f 75 6e 74 65 64 20 69 6e 20 60 2f 6f  e mounted in `/o
05e0: 70 74 2f 61 70 70 66 73 60 2e 20 20 4f 6e 63 65  pt/appfs`.  Once
05f0: 20 6d 6f 75 6e 74 65 64 2c 20 73 75 62 2d 64 69   mounted, sub-di
0600: 72 65 63 74 6f 72 69 65 73 20 77 69 6c 6c 20 62  rectories will b
0610: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  e automatically 
0620: 6d 61 64 65 20 61 76 61 69 6c 61 62 6c 65 20 62  made available b
0630: 79 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20  y attempting to 
0640: 61 63 63 65 73 73 20 74 68 65 20 68 6f 73 74 6e  access the hostn
0650: 61 6d 65 20 6f 66 20 61 6e 20 41 70 70 46 53 20  ame of an AppFS 
0660: 73 65 72 76 65 72 2e 20 20 46 6f 72 20 65 78 61  server.  For exa
0670: 6d 70 6c 65 2c 20 60 2f 6f 70 74 2f 61 70 70 66  mple, `/opt/appf
0680: 73 2f 63 6f 72 65 2e 61 70 70 66 73 2e 72 6b 65  s/core.appfs.rke
0690: 65 6e 65 2e 6f 72 67 60 20 63 6f 6e 74 61 69 6e  ene.org` contain
06a0: 73 3a 0d 0a 0d 0a 60 24 20 6c 73 20 2d 6c 20 2f  s:....`$ ls -l /
06b0: 6f 70 74 2f 61 70 70 66 73 2f 63 6f 72 65 2e 61  opt/appfs/core.a
06c0: 70 70 66 73 2e 72 6b 65 65 6e 65 2e 6f 72 67 2f  ppfs.rkeene.org/
06d0: 60 3c 62 72 3e 0d 0a 60 74 6f 74 61 6c 20 30 60  `<br>..`total 0`
06e0: 3c 62 72 3e 0d 0a 20 20 60 64 72 2d 78 72 2d 78  <br>..  `dr-xr-x
06f0: 72 2d 78 20 34 20 72 6f 6f 74 20 72 6f 6f 74 20  r-x 4 root root 
0700: 30 20 4e 6f 76 20 31 39 20 30 34 3a 30 32 20 60  0 Nov 19 04:02 `
0710: 26 6e 62 73 70 3b 3c 66 6f 6e 74 20 63 6f 6c 6f  &nbsp;<font colo
0720: 72 3d 22 62 6c 75 65 22 3e 60 61 63 6c 60 3c 2f  r="blue">`acl`</
0730: 66 6f 6e 74 3e 60 2f 60 3c 62 72 3e 0d 0a 60 64  font>`/`<br>..`d
0740: 72 2d 78 72 2d 78 72 2d 78 20 34 20 72 6f 6f 74  r-xr-xr-x 4 root
0750: 20 72 6f 6f 74 20 30 20 4e 6f 76 20 31 39 20 30   root 0 Nov 19 0
0760: 34 3a 30 32 20 60 26 6e 62 73 70 3b 3c 66 6f 6e  4:02 `&nbsp;<fon
0770: 74 20 63 6f 6c 6f 72 3d 22 62 6c 75 65 22 3e 60  t color="blue">`
0780: 61 70 70 66 73 60 3c 2f 66 6f 6e 74 3e 60 2f 60  appfs`</font>`/`
0790: 3c 62 72 3e 0d 0a 60 64 72 2d 78 72 2d 78 72 2d  <br>..`dr-xr-xr-
07a0: 78 20 34 20 72 6f 6f 74 20 72 6f 6f 74 20 30 20  x 4 root root 0 
07b0: 4e 6f 76 20 31 39 20 30 34 3a 30 32 20 60 26 6e  Nov 19 04:02 `&n
07c0: 62 73 70 3b 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d  bsp;<font color=
07d0: 22 62 6c 75 65 22 3e 60 61 70 70 6c 69 63 61 74  "blue">`applicat
07e0: 69 6f 6e 73 60 3c 2f 66 6f 6e 74 3e 60 2f 60 3c  ions`</font>`/`<
07f0: 62 72 3e 0d 0a 60 64 72 2d 78 72 2d 78 72 2d 78  br>..`dr-xr-xr-x
0800: 20 34 20 72 6f 6f 74 20 72 6f 6f 74 20 30 20 4e   4 root root 0 N
0810: 6f 76 20 31 39 20 30 34 3a 30 32 20 60 26 6e 62  ov 19 04:02 `&nb
0820: 73 70 3b 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22  sp;<font color="
0830: 62 6c 75 65 22 3e 60 61 74 74 72 60 3c 2f 66 6f  blue">`attr`</fo
0840: 6e 74 3e 60 2f 60 3c 62 72 3e 0d 0a 60 64 72 2d  nt>`/`<br>..`dr-
0850: 78 72 2d 78 72 2d 78 20 34 20 72 6f 6f 74 20 72  xr-xr-x 4 root r
0860: 6f 6f 74 20 30 20 4e 6f 76 20 31 39 20 30 34 3a  oot 0 Nov 19 04:
0870: 30 32 20 60 26 6e 62 73 70 3b 3c 66 6f 6e 74 20  02 `&nbsp;<font 
0880: 63 6f 6c 6f 72 3d 22 62 6c 75 65 22 3e 60 62 61  color="blue">`ba
0890: 73 68 60 3c 2f 66 6f 6e 74 3e 60 2f 60 3c 62 72  sh`</font>`/`<br
08a0: 3e 0d 0a 60 64 72 2d 78 72 2d 78 72 2d 78 20 34  >..`dr-xr-xr-x 4
08b0: 20 72 6f 6f 74 20 72 6f 6f 74 20 30 20 4e 6f 76   root root 0 Nov
08c0: 20 31 39 20 30 34 3a 30 32 20 60 26 6e 62 73 70   19 04:02 `&nbsp
08d0: 3b 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 62 6c  ;<font color="bl
08e0: 75 65 22 3e 60 62 69 6e 75 74 69 6c 73 60 3c 2f  ue">`binutils`</
08f0: 66 6f 6e 74 3e 60 2f 60 3c 62 72 3e 0d 0a 60 64  font>`/`<br>..`d
0900: 72 2d 78 72 2d 78 72 2d 78 20 34 20 72 6f 6f 74  r-xr-xr-x 4 root
0910: 20 72 6f 6f 74 20 30 20 4e 6f 76 20 31 39 20 30   root 0 Nov 19 0
0920: 34 3a 30 32 20 60 26 6e 62 73 70 3b 3c 66 6f 6e  4:02 `&nbsp;<fon
0930: 74 20 63 6f 6c 6f 72 3d 22 62 6c 75 65 22 3e 60  t color="blue">`
0940: 62 7a 69 70 32 60 3c 2f 66 6f 6e 74 3e 60 2f 60  bzip2`</font>`/`
0950: 3c 62 72 3e 0d 0a 60 64 72 2d 78 72 2d 78 72 2d  <br>..`dr-xr-xr-
0960: 78 20 34 20 72 6f 6f 74 20 72 6f 6f 74 20 30 20  x 4 root root 0 
0970: 4e 6f 76 20 31 39 20 30 34 3a 30 32 20 60 26 6e  Nov 19 04:02 `&n
0980: 62 73 70 3b 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d  bsp;<font color=
0990: 22 62 6c 75 65 22 3e 60 63 6f 72 65 75 74 69 6c  "blue">`coreutil
09a0: 73 60 3c 2f 66 6f 6e 74 3e 60 2f 60 3c 62 72 3e  s`</font>`/`<br>
09b0: 0d 0a 60 64 72 2d 78 72 2d 78 72 2d 78 20 34 20  ..`dr-xr-xr-x 4 
09c0: 72 6f 6f 74 20 72 6f 6f 74 20 30 20 4e 6f 76 20  root root 0 Nov 
09d0: 31 39 20 30 34 3a 30 32 20 60 26 6e 62 73 70 3b  19 04:02 `&nbsp;
09e0: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 62 6c 75  <font color="blu
09f0: 65 22 3e 60 67 6c 69 62 63 60 3c 2f 66 6f 6e 74  e">`glibc`</font
0a00: 3e 60 2f 60 3c 62 72 3e 0d 0a 60 64 72 2d 78 72  >`/`<br>..`dr-xr
0a10: 2d 78 72 2d 78 20 34 20 72 6f 6f 74 20 72 6f 6f  -xr-x 4 root roo
0a20: 74 20 30 20 4e 6f 76 20 31 39 20 30 34 3a 30 32  t 0 Nov 19 04:02
0a30: 20 60 26 6e 62 73 70 3b 3c 66 6f 6e 74 20 63 6f   `&nbsp;<font co
0a40: 6c 6f 72 3d 22 62 6c 75 65 22 3e 60 67 6d 70 60  lor="blue">`gmp`
0a50: 3c 2f 66 6f 6e 74 3e 60 2f 60 3c 62 72 3e 0d 0a  </font>`/`<br>..
0a60: 60 64 72 2d 78 72 2d 78 72 2d 78 20 34 20 72 6f  `dr-xr-xr-x 4 ro
0a70: 6f 74 20 72 6f 6f 74 20 30 20 4e 6f 76 20 31 39  ot root 0 Nov 19
0a80: 20 30 34 3a 30 32 20 60 26 6e 62 73 70 3b 3c 66   04:02 `&nbsp;<f
0a90: 6f 6e 74 20 63 6f 6c 6f 72 3d 22 62 6c 75 65 22  ont color="blue"
0aa0: 3e 60 6c 69 62 63 61 70 60 3c 2f 66 6f 6e 74 3e  >`libcap`</font>
0ab0: 60 2f 60 3c 62 72 3e 0d 0a 60 64 72 2d 78 72 2d  `/`<br>..`dr-xr-
0ac0: 78 72 2d 78 20 34 20 72 6f 6f 74 20 72 6f 6f 74  xr-x 4 root root
0ad0: 20 30 20 4e 6f 76 20 31 39 20 30 34 3a 30 32 20   0 Nov 19 04:02 
0ae0: 60 26 6e 62 73 70 3b 3c 66 6f 6e 74 20 63 6f 6c  `&nbsp;<font col
0af0: 6f 72 3d 22 62 6c 75 65 22 3e 60 6c 69 6e 75 78  or="blue">`linux
0b00: 2d 68 65 61 64 65 72 73 60 3c 2f 66 6f 6e 74 3e  -headers`</font>
0b10: 60 2f 60 3c 62 72 3e 0d 0a 60 64 72 2d 78 72 2d  `/`<br>..`dr-xr-
0b20: 78 72 2d 78 20 34 20 72 6f 6f 74 20 72 6f 6f 74  xr-x 4 root root
0b30: 20 30 20 4e 6f 76 20 31 39 20 30 34 3a 30 32 20   0 Nov 19 04:02 
0b40: 60 26 6e 62 73 70 3b 3c 66 6f 6e 74 20 63 6f 6c  `&nbsp;<font col
0b50: 6f 72 3d 22 62 6c 75 65 22 3e 60 6d 70 63 60 3c  or="blue">`mpc`<
0b60: 2f 66 6f 6e 74 3e 60 2f 60 3c 62 72 3e 0d 0a 60  /font>`/`<br>..`
0b70: 64 72 2d 78 72 2d 78 72 2d 78 20 34 20 72 6f 6f  dr-xr-xr-x 4 roo
0b80: 74 20 72 6f 6f 74 20 30 20 4e 6f 76 20 31 39 20  t root 0 Nov 19 
0b90: 30 34 3a 30 32 20 60 26 6e 62 73 70 3b 3c 66 6f  04:02 `&nbsp;<fo
0ba0: 6e 74 20 63 6f 6c 6f 72 3d 22 62 6c 75 65 22 3e  nt color="blue">
0bb0: 60 6d 70 66 72 60 3c 2f 66 6f 6e 74 3e 60 2f 60  `mpfr`</font>`/`
0bc0: 3c 62 72 3e 0d 0a 60 64 72 2d 78 72 2d 78 72 2d  <br>..`dr-xr-xr-
0bd0: 78 20 34 20 72 6f 6f 74 20 72 6f 6f 74 20 30 20  x 4 root root 0 
0be0: 4e 6f 76 20 31 39 20 30 34 3a 30 32 20 60 26 6e  Nov 19 04:02 `&n
0bf0: 62 73 70 3b 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d  bsp;<font color=
0c00: 22 62 6c 75 65 22 3e 60 6e 63 75 72 73 65 73 60  "blue">`ncurses`
0c10: 3c 2f 66 6f 6e 74 3e 60 2f 60 3c 62 72 3e 0d 0a  </font>`/`<br>..
0c20: 60 64 72 2d 78 72 2d 78 72 2d 78 20 34 20 72 6f  `dr-xr-xr-x 4 ro
0c30: 6f 74 20 72 6f 6f 74 20 30 20 4e 6f 76 20 31 39  ot root 0 Nov 19
0c40: 20 30 34 3a 30 32 20 60 26 6e 62 73 70 3b 3c 66   04:02 `&nbsp;<f
0c50: 6f 6e 74 20 63 6f 6c 6f 72 3d 22 62 6c 75 65 22  ont color="blue"
0c60: 3e 60 72 65 61 64 6c 69 6e 65 60 3c 2f 66 6f 6e  >`readline`</fon
0c70: 74 3e 60 2f 60 3c 62 72 3e 0d 0a 60 64 72 2d 78  t>`/`<br>..`dr-x
0c80: 72 2d 78 72 2d 78 20 34 20 72 6f 6f 74 20 72 6f  r-xr-x 4 root ro
0c90: 6f 74 20 30 20 4e 6f 76 20 31 39 20 30 34 3a 30  ot 0 Nov 19 04:0
0ca0: 32 20 60 26 6e 62 73 70 3b 3c 66 6f 6e 74 20 63  2 `&nbsp;<font c
0cb0: 6f 6c 6f 72 3d 22 62 6c 75 65 22 3e 60 74 63 6c  olor="blue">`tcl
0cc0: 60 3c 2f 66 6f 6e 74 3e 60 2f 60 3c 62 72 3e 0d  `</font>`/`<br>.
0cd0: 0a 60 64 72 2d 78 72 2d 78 72 2d 78 20 34 20 72  .`dr-xr-xr-x 4 r
0ce0: 6f 6f 74 20 72 6f 6f 74 20 30 20 4e 6f 76 20 31  oot root 0 Nov 1
0cf0: 39 20 30 34 3a 30 32 20 60 26 6e 62 73 70 3b 3c  9 04:02 `&nbsp;<
0d00: 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 62 6c 75 65  font color="blue
0d10: 22 3e 60 7a 6c 69 62 60 3c 2f 66 6f 6e 74 3e 60  ">`zlib`</font>`
0d20: 2f 60 3c 62 72 3e 0d 0a 60 24 20 60 0d 0a 0d 0a  /`<br>..`$ `....
0d30: 44 65 6d 6f 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 3c 73  Demo..----....<s
0d40: 63 72 69 70 74 20 74 79 70 65 3d 22 74 65 78 74  cript type="text
0d50: 2f 6a 61 76 61 73 63 72 69 70 74 22 20 73 72 63  /javascript" src
0d60: 3d 22 68 74 74 70 73 3a 2f 2f 61 73 63 69 69 6e  ="https://asciin
0d70: 65 6d 61 2e 6f 72 67 2f 61 2f 32 30 34 36 35 2e  ema.org/a/20465.
0d80: 6a 73 22 20 69 64 3d 22 61 73 63 69 69 63 61 73  js" id="asciicas
0d90: 74 2d 32 30 34 36 35 22 20 61 73 79 6e 63 3e 3c  t-20465" async><
0da0: 2f 73 63 72 69 70 74 3e 0d 0a 0d 0a 44 6f 77 6e  /script>....Down
0db0: 6c 6f 61 64 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  load..--------..
0dc0: 20 20 2a 20 20 5b 56 65 72 73 69 6f 6e 20 31 2e    *  [Version 1.
0dd0: 31 30 5d 28 68 74 74 70 3a 2f 2f 77 77 77 2e 72  10](http://www.r
0de0: 6b 65 65 6e 65 2e 6f 72 67 2f 64 65 76 65 6c 2f  keene.org/devel/
0df0: 61 70 70 66 73 2f 61 70 70 66 73 2d 31 2e 31 30  appfs/appfs-1.10
0e00: 2e 74 61 72 2e 67 7a 29 20 28 3c 73 6d 61 6c 6c  .tar.gz) (<small
0e10: 3e 5b 42 72 6f 77 73 65 20 43 6f 64 65 5d 28 64  >[Browse Code](d
0e20: 69 72 3f 63 69 3d 31 2e 31 30 26 74 79 70 65 3d  ir?ci=1.10&type=
0e30: 74 72 65 65 29 3c 2f 73 6d 61 6c 6c 3e 29 20 28  tree)</small>) (
0e40: 2a 2a 4c 41 54 45 53 54 2a 2a 29 0d 0a 20 20 2a  **LATEST**)..  *
0e50: 20 20 5b 56 65 72 73 69 6f 6e 20 31 2e 38 5d 28    [Version 1.8](
0e60: 68 74 74 70 3a 2f 2f 77 77 77 2e 72 6b 65 65 6e  http://www.rkeen
0e70: 65 2e 6f 72 67 2f 64 65 76 65 6c 2f 61 70 70 66  e.org/devel/appf
0e80: 73 2f 61 70 70 66 73 2d 31 2e 38 2e 74 61 72 2e  s/appfs-1.8.tar.
0e90: 67 7a 29 20 28 3c 73 6d 61 6c 6c 3e 5b 42 72 6f  gz) (<small>[Bro
0ea0: 77 73 65 20 43 6f 64 65 5d 28 64 69 72 3f 63 69  wse Code](dir?ci
0eb0: 3d 31 2e 38 26 74 79 70 65 3d 74 72 65 65 29 3c  =1.8&type=tree)<
0ec0: 2f 73 6d 61 6c 6c 3e 29 0d 0a 20 20 2a 20 20 5b  /small>)..  *  [
0ed0: 56 65 72 73 69 6f 6e 20 31 2e 36 5d 28 68 74 74  Version 1.6](htt
0ee0: 70 3a 2f 2f 77 77 77 2e 72 6b 65 65 6e 65 2e 6f  p://www.rkeene.o
0ef0: 72 67 2f 64 65 76 65 6c 2f 61 70 70 66 73 2f 61  rg/devel/appfs/a
0f00: 70 70 66 73 2d 31 2e 36 2e 74 61 72 2e 67 7a 29  ppfs-1.6.tar.gz)
0f10: 20 28 3c 73 6d 61 6c 6c 3e 5b 42 72 6f 77 73 65   (<small>[Browse
0f20: 20 43 6f 64 65 5d 28 64 69 72 3f 63 69 3d 31 2e   Code](dir?ci=1.
0f30: 36 26 74 79 70 65 3d 74 72 65 65 29 3c 2f 73 6d  6&type=tree)</sm
0f40: 61 6c 6c 3e 29 0d 0a 20 20 2a 20 20 5b 56 65 72  all>)..  *  [Ver
0f50: 73 69 6f 6e 20 31 2e 34 5d 28 68 74 74 70 3a 2f  sion 1.4](http:/
0f60: 2f 77 77 77 2e 72 6b 65 65 6e 65 2e 6f 72 67 2f  /www.rkeene.org/
0f70: 64 65 76 65 6c 2f 61 70 70 66 73 2f 61 70 70 66  devel/appfs/appf
0f80: 73 2d 31 2e 34 2e 74 61 72 2e 67 7a 29 20 28 3c  s-1.4.tar.gz) (<
0f90: 73 6d 61 6c 6c 3e 5b 42 72 6f 77 73 65 20 43 6f  small>[Browse Co
0fa0: 64 65 5d 28 64 69 72 3f 63 69 3d 31 2e 34 26 74  de](dir?ci=1.4&t
0fb0: 79 70 65 3d 74 72 65 65 29 3c 2f 73 6d 61 6c 6c  ype=tree)</small
0fc0: 3e 29 0d 0a 20 20 2a 20 20 5b 56 65 72 73 69 6f  >)..  *  [Versio
0fd0: 6e 20 31 2e 32 5d 28 68 74 74 70 3a 2f 2f 77 77  n 1.2](http://ww
0fe0: 77 2e 72 6b 65 65 6e 65 2e 6f 72 67 2f 64 65 76  w.rkeene.org/dev
0ff0: 65 6c 2f 61 70 70 66 73 2f 61 70 70 66 73 2d 31  el/appfs/appfs-1
1000: 2e 32 2e 74 61 72 2e 67 7a 29 20 28 3c 73 6d 61  .2.tar.gz) (<sma
1010: 6c 6c 3e 5b 42 72 6f 77 73 65 20 43 6f 64 65 5d  ll>[Browse Code]
1020: 28 64 69 72 3f 63 69 3d 31 2e 32 26 74 79 70 65  (dir?ci=1.2&type
1030: 3d 74 72 65 65 29 3c 2f 73 6d 61 6c 6c 3e 29 0d  =tree)</small>).
1040: 0a 20 20 2a 20 20 5b 56 65 72 73 69 6f 6e 20 31  .  *  [Version 1
1050: 2e 30 5d 28 68 74 74 70 3a 2f 2f 77 77 77 2e 72  .0](http://www.r
1060: 6b 65 65 6e 65 2e 6f 72 67 2f 64 65 76 65 6c 2f  keene.org/devel/
1070: 61 70 70 66 73 2f 61 70 70 66 73 2d 31 2e 30 2e  appfs/appfs-1.0.
1080: 74 61 72 2e 67 7a 29 20 28 3c 73 6d 61 6c 6c 3e  tar.gz) (<small>
1090: 5b 42 72 6f 77 73 65 20 43 6f 64 65 5d 28 64 69  [Browse Code](di
10a0: 72 3f 63 69 3d 31 2e 30 26 74 79 70 65 3d 74 72  r?ci=1.0&type=tr
10b0: 65 65 29 3c 2f 73 6d 61 6c 6c 3e 29 0d 0a 0d 0a  ee)</small>)....
10c0: 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 0d 0a 2d  Documentation..-
10d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 20 20  ------------..  
10e0: 2a 20 20 5b 47 65 74 74 69 6e 67 20 53 74 61 72  *  [Getting Star
10f0: 74 65 64 5d 28 68 6f 6d 65 2f 47 65 74 74 69 6e  ted](home/Gettin
1100: 67 20 53 74 61 72 74 65 64 29 0d 0a 20 20 2a 20  g Started)..  * 
1110: 20 5b 4d 61 6e 75 61 6c 5d 28 68 6f 6d 65 2f 4d   [Manual](home/M
1120: 61 6e 75 61 6c 29 0a 5a 20 63 33 62 34 35 63 39  anual).Z c3b45c9
1130: 65 35 36 36 66 31 32 34 32 31 32 66 30 35 35 64  e566f124212f055d
1140: 33 39 31 31 35 37 61 30 34 0a                    391157a04.