An updated directory structure for Unix
|Time:||15:45 - 16:30|
|Day:||Friday 22 January 2010|
|Location:||Renouf 1 (MFC)|
While the standard Unix structure has survived for many years, much of it rests on assumptions that are no longer true or necessary. This paper will examine the historical reasoning that gave rise to the current structure, and how greater functional organisation of the Unix filesystem layout may be achieved that is more line with the reality of contemporary computing.
GoboLinux is a distribution using an alternative filesystem hierarchy intended to provide a more logical layout for programs and data, and to make the structure of installed applications explicit in the directory tree. This paper presents the directory structure employed in GoboLinux, including the rationale behind the changes and an assessment of the shortcomings it was proposed to fix.
In GoboLinux, each program is installed into its own separate, versioned directory, which also represents the package database. An automatically-maintained tree of symbolic links keeps the program contents accessible without overhead, while another set of fixed links maintains compatibility with the original Unix tree. Programs may be installed using the distribution's binary packages, its "Compile" tool and database of recipes, or manually, each giving equal results.
Historical legacies such as the separate roles of the various bin and lib directories in the standard FHS are removed, as they no longer represent any meaningful distinction. These consolidations and others also have the function of making the layout in some ways more compliant with the FHS and POSIX standards than many others, as any standard-specified path is resolvable.
This structure locates all files associated with a program in one place, without losing compatibility with programs expecting fixed paths. Any package management task may be performed using only standard POSIX tools (though it is not necessary to do so, and the set of system tool scripts is the recommended method). Multiple versions of any program may inherently be maintained in parallel, and programs not yet contained within the distribution packaging system may be installed manually without interference or missing any of the other advantages of the package management system.
Michael is a core developer of GoboLinux, a distribution with an alternative filesystem hierarchy designed to make the structure of installed applications explicit in the directory tree. He is interested in package management, and was the principal author of that distribution's "Freshen" update tool as well as the "Aliens" subsystem to integrate third-party package managers. He has been involved in the project since 2004, and has also contributed to or released several other smaller open-source projects.