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.
More documentation
- Booting the live image
- Installing to disk
- How it boots
- The syscall ABI
- Hardware support
- ACPI
- UEFI boot entries
- NetBooting a Mac
- The AO toolkit
- Grafika — the graphics API
- The display protocol
- Desktop effects
- The level bezel
- Notifications
- Rastinis — the file manager
- File operations
- Audio — Garsas
- Hardware video decode
- Networking — Tinklas
- Network shares — SMB and NFS
- Remote control
- The Win32 subsystem
- DirectX and OpenGL for Win32 programs
- Ports and packaging