FHS (was: [linux-l] Re: refactoring)

olafBuddenhagen at web.de olafBuddenhagen at web.de
Mi Nov 12 09:19:59 CET 2003


Hallo,

On Mon, Nov 10, 2003 at 09:16:16AM +1100, Peter Ross wrote:

> [lange Erzählung über Directory-Aufteilung]

Lies Dir doch bitte einfach mal den FHS durch. Dort ist alles wunderbar
beschrieben und erklärt.

Stark zusammengefasst:

Alle FHS-konformen Programme teilen die Dateien nach Typ ein:
User-editierbare Konfig-Dateien nach /etc; direkt ausführbare Programme
nach /bin; nur von root ausführbare Programme nach /sbin; nicht
ausführbare statische Daten/Programteile nach /lib; variable,
automatisch erzeugte Daten nach /var; header-Dateien nach /include.

Bis auf /etc und /var sind die Dateien jedoch in mehrere Subhierarchien
aufgeteilt: Direkt nach /bin, /sbin, /lib und /include kommen nur
Sachen, die root braucht um das System zu verwalten. Alles andere kommt
statt dessen nach /usr/bin, /usr/sbin, /usr/lib, /usr/include. In dieser
Subhierarchie kommen auch einige neuen Hauptverzeichnisse dazu:
/usr/share für statische, Architektur-unabhängie Daten (in /usr/lib
kommen nur die architekturabhängigen); /usr/share/doc für
Dokumentationen.

Dann gibt es in /usr/local noch eine weitere Subhierarchie: Für Sachen
die nicht vom System selbst geliefert werden (selbst kompiliertes oder
runtergeladenes), sich aber an die Aufteilung halten.

In allen drei genannten Hierarchiestufen gilt: Programme können einzelne
Dateien, wenn diese eindeutig benannt sind, direkt in dem jeweiligen
Verzeichnis ablegen (mit einigen Ausnahmen), und an sonsten in einem
Subverzeichnis mit dem Programmnamen. Ein Verzeichnis wie
/usr/local/pgsql/ ist also durchaus korrekt -- aber es darf
*ausschließlich* Architektur-unabhängige, statische Daten enthalten!
Wenn dort irgendwelche Konfig-Dateien oder sonstwas drin ist, dann ist
das falsch.

Zu dem ganzen kommen an diversen Stellen Verzeichnisse mit Dateien, die
nicht Programm-gebunden sind, wie /proc, /dev, /usr/share/doc/HOWTO.

Es gibt auch einige historische Ausnahmen, die aufgrund ihrer
Komplexität und/oder weiten Verbreitung nicht geändert werden, wie X und
/usr/games.

Und schließlich gibt es noch /opt, für alles was sich nicht an die
Aufteilung hält, sondern Windows-artig alles in einem Verzeichnis haben
will.

Ich hoffe das reicht als Einführung.

-Olaf-



Mehr Informationen über die Mailingliste linux-l