Fink

Paket erstellen - 4. Dateisystem-Layout

Die folgenden Richtlinien für das Layout der Dateiverzeichnisse sind Bestandteil der Paket-Richtlinien von Fink.

4.1 Hierarchie-Standard für Dateiverzeichnisse

Fink folgt dem Geist des Hierarchie-Standards für Dateiverzeichnisse, abgekürzt als FHS (Filesystem Hierarchy Standard). Es kann diesen Standard nur nachempfinden, denn er setzt die Kontralle über / und /usr voraus. Fink ist aber ein Zusatz, der nur die Kontrolle über sein eigenes Installationsverzeichnis hat. Die Beispiele verwenden den voreingestellten Präfix /opt/sw.

4.2 Die Verzeichnisse

Dateien sollten in den Verzeichnissen wie folgt abgespeichert werden:

FieldValue
/opt/sw/bin

Dieses Verzeichnis ist für allgemeine ausführbare Programme. Es hat keine weiteren Unterverzeichnisse.

/opt/sw/sbin

Dieses Verzeichnis ist für Programme, die nur von Administratoren ausgeführt werden. Daemon-Programme, die im Hintergrund laufen, gehören hier her. Es hat keine weiteren Unterverzeichnisse.

/opt/sw/include

Dieses Verzeichnis ist für C und C++ Header-Dateien. Unterverzeichnisse können je nach Bedarf angelegt werden. Installiert ein Paket Header-Dateien, die mit Standard C Header-Dateien verwechselt werden könnten, müssen diese Header-Dateien in ein Unterverzeichnis.

/opt/sw/lib

Dieses Verzeichnis ist für Daten-Dateien und Bibliotheken, die von der Architektur abhängen. Statische und dynamische Bibliotheken gehören direkt in /opt/sw/lib, außer es gibt sehr gute Gründe. Ebenso gehören Programme hierher, die nicht direkt vom Nutzer ausgeführt werden (üblicherweise befinden sich solche Programme in libexec).

Ein Paket darf Unterverzeichnisse für private Daten oder ladbare Module anlegen. Achten sie darauf, dass die Namen der Unterverzeichnisse sinnvoll sind und der Kompatibilität dienen. Es ist durchaus sinnvoll, den Namen des Verzeichnisses umd die Hauptversion des Pakets zu erweitern oder zusätzliche Unterverzeichnisse einzufügen, z. B. /opt/sw/lib/perl5 oder /opt/sw/lib/apache/1.3. Aufpassen muss man, wenn der Typ des Rechners im Namen verwendet wird. Ein Verzeichnis mit dem Namen powerpc-apple-darwin1.3.3 kann leicht zu Kompatibilitätsproblemen führen, die sich durch powerpc-apple-darwin1.3 oder powerpc-apple-darwin leicht vermeiden lassen.

/opt/sw/lib/ppc64 /opt/sw/lib/x86_64

Dieses Verzeichnis ist für 64-bit-Bibliotheken auf 32-bit-Systemen, mit /opt/sw/lib/ppc64 für die PowerPC-Architektur und /opt/sw/lib/x86_64 für die i386-Architektur. Bibliotheken, die als "fat" erzeugt wurden, sollten aber in /opt/sw/lib abgespeichert werden und ein '32-64' in ihrem Feld Shlibs eingetragen haben. Beachten sie, dass unter der x86_64-Architektur 64-bit-Bibliotheken in /opt/sw/lib werden.

/opt/sw/share

Dieses Verzeichnis ist für architektur-unabhängige Daten-Dateien. Es gelten die selben Regeln wie für /opt/sw/lib. Einige Unterverzeichnisse werden im folgenden beschrieben.

/opt/sw/share/man

Dieses Verzeichnis enthält Dokumentationen als man-Pages. Es ist weiter in die üblichen Abschnitte unterteilt. Zu jedem Programm in /opt/sw/bin und /opt/sw/sbin sollte es hier eine entsprechende man-Page geben.

/opt/sw/share/info

Dieses Verzeichnis enthält Dokumentationen im Info format (erstellt aus Texinfo Quellen). Die Pflege der Datei dir ist automatisiert und erfolgt mit Debians Version von install-info (Teil des Pakets dpkg). Verwenden sie das Feld InfoDocs, um entsprechenden Code für die Skripte postinst und prerm automatisch zu erzeugen. Fink kümmert sich darum, dass kein Paket eine eigene Datei dir erzeugt. Es gibt keine Unterverzeichnisse.

/opt/sw/share/doc

Dieses Verzeichnis enthält Dokumentationen, die weder als man-Page noch als Info-Dokument vorliegen. Die Dateien README, LICENSE und COPYING gehören z. B. hier her. Jedes Paket muss hier sein eigenes Unterverzeichnis anlegen, das wie das Paket benannt wird. Die Namen der Unterverzeichnisse dürfen keine Versionsnummern enthalten, außer wenn diese Nummern Teil des tatsächlichen Paketnamens sind. Tipp: Verwenden sie einfach %n.

/opt/sw/share/locale

Dieses Verzeichnis enthält Kataloge mit Meldungen für die Internationalisierung.

/opt/sw/opt

In Verzeichnis opt werden "add-on" Programmpakete abgespeichert, die aus irgendeinem Grund nicht die Standard-Verzeichnisse /opt/sw/bin, /opt/sw/lib, /opt/sw/include, usw. nicht verwenden können. Ein Paket, das in /opt/sw/opt installiert wird, muss seine statischen Dateien in einem separaten Unterverzeichnis /opt/sw/opt/<package> abspeichern, wobei <package> ein Name ist, der das Programmpaket beschreibt. (Verfügbar ab Fink 0.29.7 oder später.)

/opt/sw/var

Im Verzeichnis var werden veränderliche Daten gespeichert. Das umfasst Spool-Verzeichnisse, Lock-Dateien, Status-Datenbanken, Punktestände von Spielen und Log-Dateien.

/opt/sw/etc

Diese Verzeichnis enthält Konfigurationsdateien. Gehören zu einem Paket mehr als ein oder zwei Dateien, sollte ein Unterverzeichnis angelegt werden. Der Name des Unterverzeichnis muss den Namen des Pakets oder Programms enthalten, damit es zugeordnet werden kann.

/opt/sw/src

In diesem Verzeichnis werden die Quell-Dateien gespeichert und erfolgt die Codeerstellung. Vom den Paketen sollte hier nicht weiter installiert werden.

/opt/sw/Applications

In diesem Verzeichnis werden Programm mit einer graphischen Oberfläche im Stil von OS X abgespeichert, die man normalerweise mit einem Doppelklick startet und nicht von der Kommandozeile.

/opt/sw/Library/Frameworks

In diesem Verzeichnis werden Frameworks im OS X-Stil abgespeichert. Sie werden manchmal von Programmen im OS X-Stil genutzt.

4.3 Was sollte man vermeiden?

Außer den oben genannten Unterverzeichnissen sollte es keine anderen im Verzeichnis /opt/sw geben. Insbesondere die folgenden sind explizit nicht erlaubt: /opt/sw/man, /opt/sw/info, /opt/sw/doc, /opt/sw/libexec und /opt/sw/lib/locale.

Weiter: 5. Compiler