Paketbau/SUSE-Paketkonventionen/Dateisystemstruktur

aus openSUSE, der freien Wissensdatenbank




4. Dateisystemstruktur

SUSE Linux und openSUSE halten sich an die LSB und folgen dem FHS (Filesystem Hierarchy Standard) in Version 2.3 wie er unter http://www.pathname.com/fhs/ definiert wird. Dieses Kapitel präzisiert einige Regeln und hebt wichtige Informationen hervor. Alle weiteren Details erhalten Sie in der Beschreibung des Standards selbst.

/opt ist für die Installation von zusätzlichen Anwendungssoftwarepaketen reserviert. In der Vergangenheit nutzten viele mit SUSE Linux und openSUSE ausgelieferte Pakete dieses Verzeichnis; werden aber nun nach /usr verschoben. Auch GNOME und KDE werden in Zukunft nach /usr verschoben (GNOME befindet sich dort seit openSUSE 10.3, KDE4 wird ebenfalls schon dort gespeichert, KDE3 verbleibt bis zur Ablösung durch KDE4 in /opt). Es ist somit nicht mehr erlaubt, neue Pakete dort zu installieren.

/srv ist für die Datendateien verschiedener Dienste reserviert, wie ftp oder www. Variable Daten sind hier ebenfalls erlaubt. Die Konfigurationsdateien bleiben dabei unter /etc und echte variable Daten, wie beispielsweise die FTP-Datenbank, die angibt, wie viele Nutzer verbunden sind, sollte unter /var bleiben. SUSE Linux und openSUSE definieren die Struktur nach den Protokollen und erstellen standardmäßig die folgenden Verzeichnisse:

  • /srv/ftp — Für Daten, auf die per FTP-Protokoll zugegriffen werden soll.
  • /srv/www — Für Web-Dienste. Es gibt spezielle Unterverzeichnisse für CGI-Skripte und HTML-Dokumentation (siehe unten). Pakete können für Daten ein Unterverzeichnis /srv/www/{name} erstellen. {name} ist dabei für gewöhnlich der Name des Pakets.
  • /srv/www/cgi-bin — Für CGI-Skripte. Jedes Paket kann einzelne Skripte direkt in diesem Verzeichnis ablegen oder ein Unterverzeichnis /srv/www/cgi-bin/{name} für seine Skripte erstellen. {name} ist dabei für gewöhnlich der Name des Pakets.
  • /srv/www/htdocs — Für statische HTML-Dokumente.


/etc/X11 und /usr/X11R6 sind für Dateien des X Window System und damit verbundene Dateien reserviert, beispielsweise Schriftartdateien. Alle anderen Anwendungen und Bibliotheken sollten unter /etc oder /usr installiert werden.


4.1. Biarch-Systeme

Biarch-Systeme sind Systeme, die zwei verschiedene Architekturen bereitstellen und Software für beide Architekturen installieren und ausführen können. Dabei handelt es sich in der Regel um x86_64-Systeme, auf denen auch x86-Code ausgeführt werden kann. Auf Biarch-Systemen werden die Verzeichnisse wie /usr/lib64 und /usr/X11R6/lib64 neben Verzeichnissen wie /usr/lib und /usr/X11R6/lib genutzt. Der Grund dafür ist, dass zwei Varianten der selben Bibliothek auf solchen Systemen nebeneinander existieren müssen, um 32-bit- und 64-bit-Anwendungen parallel ausführen zu können. Die 64-bit-Bibliotheken werden in lib64-Verzeichnissen und die 32-bit-Bibliotheken in den lib-Verzeichnissen installiert. Die Makros %_lib und %_libdir sorgen für die richtigen Verzeichnisse.

Für Biarch-Systeme werden spezielle Pakete gebaut, die nur die 32-bit-Bibliotheken enthalten. Alle anderen Dateien werden nicht benötigt, da diese Bibliotheken die architekturunabhängigen Dateien der 64-bit-Pakete nutzen können. Sie sind auch in der Lage, 64-bit-Helferbinädateien ausführen zu können, weshalb diese auf allen Architekturen in lib installiert werden (und nicht in %_lib). Weitere Informationen Enthält der Teil zu --libexecdir im nächsten Abschnitt.


4.2. GNU Standardpfade

GNU Konfigurationswerkzeuge nutzen Standardpfade, die sich nicht an den FHS halten. Falls diese Werkzeuge genutzt werden, müssen die Pfade mit den folgenden Konfigurationsoptionen umdefiniert werden:

  • --infodir definiert das Verzeichnis, in dem die info-Seiten gespeichert werden. Der Standardpfad {prefix}/info wird durch den FHS nicht erlaubt, stattdessen wird {prefix}/share/info genutzt. Beispiel: --infodir=%_infodir
  • --libdir definiert das Verzeichnis für Bibliotheken. Es muss auf Biarch-Systemen genutzt werden (siehe oben) Die Makros %_libdir und %_lib definieren auf jedem System den richtigen Pfad. Beispiel: --libdir=%_libdir
  • --libexecdir definiert das Verzeichnis für Binärhelferdateien, die von anderen Binärdateien und Bibliotheken, aber nicht vom Nutzer aufgerufen werden. Der Standardpfad {exec_prefix}/libexec wird vom FHS nicht erlaubt. Der bevorzugte Pfad ist {prefix}/lib/{name} wobei {prefix} der Paketpräfix und {name} der Paketname ist. lib wird dabei für alle Architekturen genutzt (und nicht %_lib). Im Abschnitt 4.1, “Biarch-Systeme” finden Sie weitere Details. Beispiel: --libexecdir=%_prefix/lib/%name
    Einige Pakete erstellten bereits ein Unterverzeichnis unter libexecdir. In diesem Fall reicht es, --libexecdir=%_prefix/lib zu nutzen.
    Es gibt speziell vorgesehene Verzeichnisse für verschiedene Arten von Binärdateien, welche genutzt werden können, falls ein Paket nur eine einzige Binärdatei dieser Art installiert. GNOME-Applets können beispielsweise in /opt/gnome/lib/gnome-applets installiert werden.
  • --localstatedir definiert das Verzeichnis, in welches die variablen installiert werden. Der Standardpfad {prefix}/var wird vom FHS nicht erlaubt. /var oder seine Unterverzeichnisse stattdessen genutzt. Die einzelnen Unterverzeichnisse hängen von der Arte der Daten vom Präfix ab, unter dem die Anwendung installiert wird. Anwendungen müssen im allgemeinen keine Unterverzeichnisse unter der Hauptebene von /var erstellen. Sie können stattdessen beispielsweise /var/lib nutzen. Der FHS enthält weitere Details dazu. Beispiel: --localstatedir=%_localstatedir oder –localstatedir=%_localstatedir/lib
  • --mandir definiert das Verzeichnis, in dem die man-Seiten gespeichert werden. Der Standardpfad {prefix}/man wird vom FHS erlaubt. An seiner Stelle wird {prefix}/share/man genutzt. Beispiel: --mandir=%_mandir
  • --prefix definiert den Präfix unter dem das Paket installiert wird. Der Standardpfad /usr/local wird von lokalen Systemadministratoren genutzt. Die Pakete, die mit SUSE Linux und openSUSE ausgeliefert werden, sollten keine Dateien unterhalb dieses Verzeichnisses installieren. Der normale Präfix ist stattdessen /usr. Beispiel: --prefix=%_prefix
  • --sharestatedir definiert das Verzeichnis, in dem die variablen, architekturunabhängigen Daten gespeichert werden. Der Standardpfad {prefix}/com wird vom FHS nicht erlaubt. An seiner Stelle werden /var oder dessen Unterverzeichnisse genutzt. Hierbei gelten die gleichen Regeln wie bei --localstatedir (siehe oben), da der FHS nicht zwischen architekturabhängigen und -unabhängigen Daten unterhalb von /var unterscheidet. Beispiel: --sharestatedir=%_localstatedir oder --sharestatedir=%_localstatedir/lib
  • --sysconfigdir definiert das Verzeichnis, in dem die Konfiguration gespeichert wird. Der Standardpfad {prefix}/etc wird vom FHS nicht erlaubt. An seiner Stelle wird /etc genutzt. Beispiel: --sysconfdir=%_sysconfdir


Andere Pfade werden in der Regel bereits korrekt durch --prefix gesetzt.




Weiter