Das FreeBSD Porter-Handbuch
Zurück | Kapitel 9. Ihren Port testen | Weiter

# 9.4. `PREFIX` und `DESTDIR`

`PREFIX` bestimmt, an welche Stelle der Port installiert werden soll. In der Regel ist dies`/usr/local` oder `/opt`, was jedoch anpassbar ist. Ihr Port muss sich an diese Variable halten.

`DESTDIR`, wenn es vom Benutzer gesetzt wird, bestimmt die alternative Umgebung (in der Regel eine Jail oder ein installiertes System, welches an anderer Stelle als `/` eingehängt ist). Ein Port wird unter `DESTDIR`/`PREFIX` installiert und registriert sich in der Paket-Datenbank unter `DESTDIR`/var/db/pkg. Da `DESTDIR` mittels eines chroot(8)-Aufrufs vom Ports-System automatisch gesetzt wird, brauchen Sie keine Änderungen oder besondere Pflege für `DESTDIR`-konforme Ports.

Der Wert von `PREFIX` wird auf `LOCALBASE` gesetzt (Standard ist `/usr/local`). Falls `USE_LINUX_PREFIX` gesetzt ist, wird `PREFIX` `LINUXBASE` annehmen (Standard ist `/compat/linux`).

Die Vermeidung der hart kodierten Angaben von `/usr/local` oder `/usr/X11R6` im Quelltext wird den Port viel flexibler machen und erleichtert es die Anforderungen anderer Einsatzorte zu erfüllen. Für X-Ports, die `imake` benutzen, geschieht dies automatisch; andernfalls kann dies erreicht werden, indem alle Angaben von `/usr/local` (oder `/usr/X11R6` für X-Ports, die nicht imake benutzen) in den verschiedenen `Makefile`s im Port ersetzt werden, um `${PREFIX}` zu lesen, da diese Variable automatisch an jede Stufe des Build- und Install-Prozesses übergeben wird.

Vergewissern Sie sich bitte, dass Ihre Anwendung nichts unter `/usr/local` an Stelle von `PREFIX` installiert. Um dies festzustellen, können Sie folgendes machen:

    # make clean; make package PREFIX=/var/tmp/`make -V PORTNAME`

Wenn etwas außerhalb von `PREFIX` installiert wird, so gibt der Prozess der Paketerstellung eine Meldung aus, dass es die Dateien nicht finden kann.

Dies prüft nicht das Vorhandensein eines internen Verweises oder die richtige Verwendung von `LOCALBASE` für Verweise auf Dateien anderer Ports. Das Testen der Installation in `/var/tmp/`make -V PORTNAME`` würde dies erledigen.

Die Variable `PREFIX` kann in Ihrem `Makefile` oder der Umgebung des Benutzers neu gesetzt werden. Allerdings wird für einzelne Ports dringend davon abgeraten diese Variable in den `Makefile`s direkt zu setzen.

Verweisen Sie bitte außerdem auf Programme/Dateien von anderen Ports durch die oben erwähnten Variablen und nicht mit den eindeutigen Pfadnamen. Wenn Ihr Port zum Beispiel vom Makro `PAGER` erwartet, dass es den vollständigen Pfadnamen von `less` enthält, benutzen Sie folgendes Compiler-Flag:

    -DPAGER=\"${LOCALBASE}/bin/less\"

anstatt `-DPAGER=\"/usr/local/bin/less\"`. Somit ist die Wahrscheinlichkeit höher, dass es auch funktioniert, wenn der Administrator den ganzen `/usr/local`-Baum an eine andere Stelle verschoben hat.

Zurück | Zum Anfang | Weiter
Port Tools | Nach oben | Die Tinderbox

Fragen zum FreeBSD Ports-System richten Sie bitte an <ports@FreeBSD.org>, Fragen zu diesem Dokument hingegen an <de-bsd-translators@de.FreeBSD.org>.