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.