AnotherOS

Documentation

Packages and the filesystem

The layout

AnotherOS does not use a flat FHS root as its source of truth. Every package lives at its own version:

/Apps/<Name>/<Version>/{bin,sbin,lib,libexec,include,share}
/System/Index      symlink farm — what the shell and the linker actually see
/System/Settings   configuration (the old /etc)
/Users             home directories

FHS paths such as /usr/bin exist as compatibility symlinks, so software that hard-codes them still works.

apkg

apkg update                 # refresh the package index
apkg install firefox        # resolve, verify, unpack, activate
apkg list                   # what is installed, and at which versions
apkg remove firefox

Installation is atomic. Dependencies resolve completely before anything is written; the archive's SHA-256 is checked against the index; it unpacks to a staging directory on the same filesystem; and a rename puts it in place. Only then is the symlink farm flipped.

Because the previous version is still on disk, going back is flipping the farm back — not a reinstall.

Building your own

The ports/ tree carries build recipes for the third-party software that ships with the system. A port is a directory with a build.sh and the patches it needs; the buildhost produces .apkg archives and publishes them to the package repository that apkg update reads.