Kapitel 9. Ihren Port testen

This translation may be out of date. To help with the translations please access the FreeBSD translations instance.

9.1. make describe ausführen

Einige der FreeBSD-Werkzeuge zur Pflege von Ports, wie zum Beispiel portupgrade(1), verwenden eine Datenbank names /usr/ports/INDEX, welche Eigenschaften, wie z.B. Port-Abhängigkeiten, verfolgt. INDEX wird vom Makefile der höchsten Ebene, ports/Makefile, mittels make index erstellt, welches in das Unterverzeichnis jedes Ports wechselt und dort make describe ausführt. Wenn also make describe bei einem Port fehlschlägt, kann INDEX nicht generiert werden und schnell werden viele Leute darüber unzufrieden sein.

Es ist wichtig diese Datei erzeugen zu können, unabhängig davon, welche Optionen in make.conf vorhanden sind. Bitte vermeiden Sie es daher beispielsweise .error-Anweisungen zu benutzen, wenn zum Beispiel eine Abhängigkeit nicht erfüllt wird (Lesen Sie dazu bitte Vermeiden Sie den Gebrauch des .error-Konstruktes).

Wenn make describe eine Zeichenkette anstatt einer Fehlermeldung erzeugt, sind Sie wahrscheinlich auf der sicheren Seite. Vergleichen Sie die erzeugte Zeichenkette mit bsd.port.mk, um mehr über deren Bedeutung zu erfahren.

Beachten Sie bitte außerdem, dass die Benutzung einer aktuellen Version von portlint (wie im nächsten Abschnitt beschrieben) automatisch make describe startet.

9.2. Portlint

Bitte überprüfen Sie Ihre Arbeit stets mit portlint, bevor Sie diese einreichen oder committen. portlint warnt Sie bei häufigen Fehlern, sowohl funktionaler als auch stilistischer Natur. Für einen neuen (oder repokopierten) Port ist portlint -A die gründlichste Variante; für einen bereits existierenden Port ist portlint -C ausreichend.

Da portlint heuristische Methoden zur Fehlersuche benutzt, kann es vorkommen, dass Warnungen für Fehler erzeugt werden, die keine sind. Gelegentlich kann etwas, das als Problem angezeigt wird, aufgrund von Einschränkungen im Port-System nicht anders gelöst werden. Wenn es Zweifel gibt, fragen Sie am besten auf FreeBSD ports nach.

9.3. Port Tools

Das Programm ports-mgmt/porttools ist Teil der Ports-Sammlung.

port ist das Front-End-Skript, das Ihnen dabei behilflich sein kann Ihre Arbeit als Tester zu vereinfachen. Um einen neuen Port zu testen oder einen bereits bestehenden Port zu aktualisieren, können Sie port test verwenden, damit die Tests, inklusive der portlint-Überprüfung, durchgeführt werden. Dieser Befehl spürt ausserdem alle nicht in pkg-plist enthaltenen Dateien auf und gibt eine Liste dieser aus. Hier ein Beispiel:

# port test /usr/ports/net/csup

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 Makefiles 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 Makefiles 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.

9.5. Die Tinderbox

Wenn Sie ein begeisterter Ports-Entwickler sind möchten Sie vielleicht einen Blick auf die Tinderbox werfen. Es ist ein leistungsstarkes System zur Erstellung und zum Testen von Ports, welches auf Skripten basiert, die auf Pointyhat verwendet werden. Sie können Tinderbox installieren, indem Sie den Port ports-mgmt/tinderbox benutzen. Bitte lesen Sie die mitgelieferte Dokumentation gründlich, da die Konfiguration nicht einfach ist.

Um Näheres darüber zu erfahren, besuchen Sie bitte die Tinderbox Homepage.


Last modified on: 11. Dezember 2021 by Sergio Carlavilla Delgado