On all Unix-like operating systems, we are used to find a strict file system hierarchy, where directories follow a standardized scheme. This structured view of data has a meaningful semantic role: the system can manage each application file and put it in the right place. All packages and source tarballs are built to suit the Filesystem Hierarchy Standard [Gro04], which consists of a set of requirements and guidelines for file and directory placement under Unix-like operating systems. These guidelines are intended to support interoperability of applications, system administration tools, development tools, and scripts as well as greater uniformity of documentation for these systems.
There are many benefits using the FHS, but we can also notice its lack in showing files by package ownership. At the moment, package managers provide specific commands to help users find installed files of packages, but, usually, this operation must be performed on a package archive itself so that any user has to get it, even if it is not really necessary for other purposes. Moreover, users have to learn some additional commands in order to make package managers able to accomplish many issues, such installing or removing software, searching in a repository for available packages, looking at their status or other information (i.e. if they are installed or not, what dependencies and reverse dependencies they have, who is the maintainer).
PackageFS is an user space file system, that transparently provides these facilities to the user. It makes him able to browse all available and installed packages as he usually browses directory content. It aims to simplify and improve package management. With PackageFS an administrator can install new software by dragging from available directory and dropping into the installation one; any user can read a virtual file to get package information. PackageFS does not substitute ordinary package managers, since it relies on them. This project has been thought to be transparent to all GNU/Linux distributions and so to all package formats. In the current status of the implementation PackageFS supports deb archives. Modules for the other package management methods are in the early stage of design and development.
In this chapter we are going to discuss the design choices of PackageFS and present related works. Then we will examine in depth the plan, the problems to face, the proposed solutions and the developing environment.