GoboLinux has a directory structure different from other Linux distributions. In GoboLinux, all files for a program, including executables, headers and libraries, are installed below a single directory that belongs to that program. So the
pingutility might reside in
/Programs/Netkit-Base/0.17/bin/ping
and
libpng.so.3in
/Programs/LibPNG/1.2.5/lib/libpng.so.3
To be visible to other software, these files are symlinked into standard locations in the new directory hierarchy under /System/Index:
/System/Index/bin/ping /System/Index/lib/libpng.so.3
Traditional Unix paths are also symlinks to the /System/Index directory structure:
/bin -> /System/Index/bin /usr/bin -> /System/Index/bin /usr/lib -> /System/Index/lib
So for example, a shell script expecting to run /usr/bin/ping, will continue to do so under GoboLinux.
This architecture -- installing each program under its own directory, and making executables, headers other resources available via symlinks -- has significant advantages:
In fact, the scope of the task of managing software with this organization is so constrained that most utility programs needed to adminster the system could be reasonably implemented as shell scripts, which GoboLinux developers chose to do.
Managing dependency relations among software is accomplished through the GoboLinux build system and its library of "compile recipes".