Paket erstellen - 2. Paketbeschreibungen
2.1 Verzeichnis-Layout
Paketbeschreibungen werden aus dem Verzeichnis finkinfo
gelesen,
der sich im Verzeichnis /opt/sw/fink/dists
befindet. Die
Einstellung "Trees" in der Datei /opt/sw/etc/fink.conf
bestimmt, welche Verzeichnisse gelesen werden.
Der Name der Paketbeschreibungsdatei besteht aus dem vollständigen Paketnamen
und dem Suffix ".info".
Ab Fink 0.26.0 gibt es mehre Möglichkeiten für den Dateinamen: Empfohlen wird
der kürzeste Name, der konsistent mit anderen Paketen ist, die benötigt werden.
Der Dateiname hat folgende Form: der unveränderliche Paketname, optional die
Architektur, optional die Distribution, optional Version oder Version-Revision,
alle durch Bindestriche getrennt und abgeschlossen mit ".info".
Die Komponenten "Architektur" und "Distribution" sind nur erlaubt, wenn die
entsprechenden Felder auch in der Beschreibung vorkommen und exakt einen Wert
zugewiesen haben.
Der Baum der Paketveschreibungen ist in mehreren Ebenen von Verzeichnissen organisiert. Die Verzeichnisse von oben nach unten:
dists
ist der Anfang. Das Verzeichnisdists
wird für die Debian Tools benötigt. In neueren Version von Fink ist dies ein Symlink zu einem Verzeichnis mit einem distributionsbezogenem Namen.- Die Distributionen. Es gibt
stable
,unstable
undlocal
. Das Verzeichnislocal
wird vom lokalen Administrator/Nutzer verwaltet. Die Verzeichnissestable
undunstable
gehören Fink. - Der Baum. Der Baum enthält die meisten Pakete. Vor dem 1. Juli 2010 wurde
cryptographische Software in einem separaten Baum namens
crypto
gehalten. Aber jetzt sind diese Pakete auch im Baummain
. finkinfo
vs.binary-darwin-powerpc
.finkinfo
enthält die Fink-Paketbeschreibungen und Patch-Dateien, während das Verzeichnisbinary-darwin-powerpc
die binären.deb
Pakete enthält.- Sections. Das Verzeichnis
main
ist weiter thematisch unterteilt, damit es handhabbar bleibt.
2.2 Datei-Format
Die Paketbeschreibungsdateien sind einfache Listen von Schlüssel-Wert-Paaren, auch Felder genannt. Jede Zeile beginnt mit einem Schlüssel, der mit einem Doppelpunkt (:) abgeschlossen wird. Darauf folgt direkt der Wert, also so:
Schlüssel: Wert
Es gibt zwei Schreibweisen für Felder, die sich über mehrere Zeilen erstrecken.
Die bevorzugte Schreibweise is so wie die here-document-Syntax in
Shell-Skripten. Bei dieser Syntax beginnt die erste Zeile mit dem Schlüssel,
gefolgt von <<
als Wert.
Alle nachfolgenden Zeilen werden als eigentlicher Wert behandelt bis eine Zeile
folgt, die nur <<
enthält.
Das Beispiel von oben sieht nun so aus:
InstallScript: << mkdir -p %i/share/man make install prefix=%i mandir=%i/share/man mkdir -p %i/share/doc/%n install -m 644 COPYING %i/share/doc/%n <<
Einrückungen in diesem Format sind optional, können aber für eine erhöhte Lesbarkeit verwendet werden.
Die here-document-Syntax kann verschachtelt sein. Dies wird oft in den Feldern
SplitOff
oder SplitOffN
verwendet.
Diese Felder enthalten weitere Felder (mehrere Zeilen) und diese Syntax erlaubt,
dass auch diese Unterfelder ihrerseits mehrere Zeilen hat. Derselbe Abschluss
mit <<
wird bei dem sub-here-document benutzt.
Hier ein Beispiel:
SplitOff: << Package: %N-shlibs InstallScript: << ln -s %p/lib/libfoo.2.dylib %i/lib/libfoo.%v.dylib << <<
In diesem Format werden Leerzeilen und Zeilen mit einem Hash (#) am Zeilenanfang
ignoriert. Groß-und Kleinschreibung wird beim Schlüssel (Feldnamen) nicht
beachtet, d. h. man kann InstallScript
, installscript
oder INSTALLSCRIPT
schreiben, wie man will. Allerdings wird die
erste Form mit Großbuchstaben wegen Lesbarkeit empfohlen.
Einige Felder akzeptieren boolesche Werte. Hier werden "true", "yes", "on" und
"1" (auch in Großschreibung) als wahr interpretiert, alle anderen Werte als
falsch.
2.3 Prozent-Erweiterungen
Zur Vereinfachung unterstützt Fink einen Satz an Erweiterungen, die in einigen
Feldern angewendet werden.
Mehrdeutigkeiten kann man verhinder, indem man mit geschweiften Klammern genau
anzeigt, welche Buchstaben für eine Prozent-Erweiterung genommen werden sollen.
%{n}
hat zum Beispiel die gleiche Bedeutung wie %n
.
Folgende Erweiterungen stehen zur Verfügung:
%n |
Der name des Pakets |
%N |
Der Name des Elternpakets (der selbe wie %n außer innerhalb eines
Anmerkung: Wenn ein Eltern- |
%e |
Die epoche des Pakets |
%v |
Die version des Pakets. Beachten sie, dass die Epoche nicht zu
|
%V |
Die vollständige Version des Pakets, die automatisch die Epoche
enthält, wenn vorhanden. Beachten sie, dass diese Prozent-Erweiterung nur für
Pakete zur Verfügung steht, deren |
%r |
Die revision des Pakets |
%f |
Der vollständige (full) Paketname (%n-%v-%r). Beachten sie, dass die
Epoche nicht zu |
%p, %P |
Der prefix wo Fink installiert ist, also |
%d |
Im Verzeichnis destination wird der Baum für ein Paket erstellt, z. B.
in |
%D |
Das Verzeichnis Destination für das Elternpaket (das selbe wie %d außer
innerhalb eines |
%i |
Der vollständige installationsphase-Präfix, äquivalent zu %d%p |
%I |
Der Install-Präfix des Elternpakets, äquivalent zu %D%P (das selbe wie
%i außer innerhalb eines |
%a |
Der Pfad, wo sich die Patches befinden. Ab Fink-0.29.0 sollte diese
Variable nicht mehr benutzt werden. Nutzen sie |
%b |
Das Verzeichnis build, also
Anmerkung: Nutzen sie dies nur, wenn es gar nicht anders geht. Das Verzeichnis build ist das aktuelle Verzeichnis, wenn Skripte ausgeführt werden; sie sollten in Kommandos relative Pfadnamen verwenden. |
%c |
Die configure Parameter: |
%m |
Die Zeichenfolge für die Architektur der machine. Dies ist nicht länger durch den Typ der Maschine bestimmt, sondern eine Wahl des Nutzers bei der Installation zwischen den Architekturen, die auf der Hardware des Nutzers laufen können. Mögliche Werte sind 'powerpc' für PowerPC-Macs und 'i386' oder 'x86_64' für Intel-Macs. Die Auswahl 'x86_64' steht auf Intel-Macs nur zur Verfügung, wenn der Mac 64-bit Bibliotheken und Programme ausführen kann. (Dieser Werf wurde etwa in Fink-0.12 eingeführt, die aktuellen Beschreibung gilt für Fink-0.29.5 und später.) |
%% |
Das Zeichen Prozent (Ein Zeichen, das nicht erweitert wird, was auch immer danach folgt). Die Erweiterung erfolgt streng von links nach rechts. Damit hat %%n nichts mit dem Paketnamen zu tun, sondern bedeutet die Zeichenfolge %n. (In Fink-0.18.0 eingeführt) |
%type_raw[type], %type_pkg[type], %type_num[type] |
pseudo-hashes, die den Subtyp für den angegebenen type zurückgeben.
Lesen sie die Dokumentation für das Feld
Beachten sie, dass |
%{ni}, %{Ni} |
Der invariante Teil des Paketnamens. Sie sind wie %n and %N, außer dass alle Teile von %type_pkg[] und %type_raw[] gelöscht sind. (Eingeführt in einer post-0.19.2 CVS-Version von Fink) Sie sollten %{ni} und %{Ni} verwenden, um Verwechslungen mit den Erweiterungen %n und %N zu verhindern. |
%{default_script} |
Nur in den Feldern |
%{PatchFile} |
Der vollständige Pfad zu der Datei, die im Feld |
%{PatchFileN} |
Der vollständige Pfad zu der Datei, die im Feld |
%lib |
Ist der
Beachten sie, dass |