Getting Started

Welcome to the world of GoboLinux !

The main task of a Linux distribution is to keep track of and organize the programs in your computer, so that they work properly. GoboLinux is no different from the others in this goal, but it adopts a fundamentally different approach in solving this problem.

Instead of scattering the files of programs around, following the decades-old conventions of ancient UNIX systems, and then adding a layer of control (a “package manager”) to try to give order to chaos, in GoboLinux we organize the files that comprise the programs in an ordered way in the first place.

In GoboLinux, every program lives in its own subdirectory. Under the top level directory /Programs; e.g you’ll find Xorg 7.0 at /Programs/Xorg/7.0, and ping at /Programs/Netkit-Base/0.17/bin/ping. To see what programs are installed in the system, all you need to do is look in the /Programs directory:

ls /Programs

For each category of files, there is a directory under /System/Index grouping files from each application as symbolic links: bin, lib, libexec, include, share, and man. For compatibility, each “legacy” UNIX directory is a link to a corresponding category. Therefore, /bin, /sbin, /usr/bin, /usr/local/bin (and so on) are all symlinks to entries under /System/Index.

In short, what we have is a database-less package management system: the directory structure itself organizes the system. Wasn’t that its original purpose, after all? Each program directory (for example, /Programs/KDE) holds version directories (/Programs/KDE/3.4, /Programs/KDE/3.4.2), and a version-neutral directory for settings (/Programs/KDE/Settings), to keep files that would normally be in /etc.

Keeping two or more versions of a library is trivial: upgrading LibPNG to 1.2.8 means adding /Programs/LibPNG/1.2.8, but does not automatically imply that LibPNG 1.2.7 is removed. This way, if a program depends on the previous version, it won’t break. As you can see, GoboLinux gives you a finer control of what is and isn’t in the system.

Historical tidbit: When most distributions switched to GCC 3 they released a new major version, mostly incompatible with previous ones. In contrast, when the 006 series of GoboLinux adopted GCC 3, compatibility was preserved by simply keeping old versions of libraries alongside the new ones, while they were gradually phased out. No “compat” packages were needed.

Getting Started Topics: