Skip to content

Latest commit

 

History

History
164 lines (124 loc) · 7.39 KB

File metadata and controls

164 lines (124 loc) · 7.39 KB
title prev next showBookMenu weight path
Kapitel 8. Die pkg-* Dateien
books/porters-handbook/plist
books/porters-handbook/testing
true
8
/books/porters-handbook/pkg-files/

Die pkg-* Dateien

1. pkg-message

Wenn Sie dem Anwender bei der Installation weitere Informationen anzeigen wollen, so können Sie diese Nachricht in pkg-message speichern. Diese Vorgehensweise ist oft nützlich, um zusätzliche Schritte anzuzeigen, die nach man:pkg_add[1] durchgeführt werden müssen. Dadurch können Sie auch Lizenzinformationen darstellen.

Wollen Sie nur ein paar Zeilen über die Einstellungen zum Erstellen des Ports oder Warnungen ausgeben, benutzen Sie ECHO_MSG. pkg-message ist nur für Schritte nach der Installation vorgesehen. Sie sollten den Unterschied zwischen ECHO_MSG und ECHO_CMD beachten: Ersteres wird benutzt, um Informationen auf dem Bildschirm auszugeben, während Letzteres für Kommando-Pipelining bestimmt ist.

Ein gutes Beispiel für die Benutzung der beiden Befehle ist in shells/bash2/Makefile zu finden:

update-etc-shells:
    @${ECHO_MSG} "updating /etc/shells"
    @${CP} /etc/shells /etc/shells.bak
    @( ${GREP} -v ${PREFIX}/bin/bash /etc/shells.bak; \
	${ECHO_CMD} ${PREFIX}/bin/bash) >/etc/shells
    @${RM} /etc/shells.bak
Note

Stellen Sie sicher, dass sie auf die korrekten Tools zum Verwalten von Diensten verweisen. * Verwenden Sie service name start, um einen Dienst zu starten, anstatt /usr/local/etc/rc.d/name start zu verwenden. * Verwenden Sie sysrc name_enable=YES, um Optionen in rc.conf zu ändern.

Note

Die pkg-message wird nicht zur pkg-plist hinzugefügt. Sie wird auch nicht automatisch angezeigt, falls ein Anwender den Port installiert. Sie müssen also die Ausgabe selbst im post-install-Ziel des Make-Vorgangs veranlassen.

2. pkg-install

Sollte es nötig sein, dass Ihr Port bei der Installation des Binärpakets mit man:pkg_add[1] Befehle ausführt, können Sie das Skript pkg-install benutzen. Dieses Skript wird automatisch dem Paket hinzugefügt und zweimal von man:pkg_add[1] ausgeführt: Zuerst als ${SH} pkg-install ${PKGNAME} PRE-INSTALL und beim zweiten Mal als ${SH} pkg-install ${PKGNAME} POST-INSTALL. $2 kann also getestet werden, um festzustellen, in welchem Modus das Skript ausgeführt wird. Die Umgebungsvariable PKG_PREFIX wird auf das Verzeichnis gesetzt, in welches das Paket installiert wird. Siehe man:pkg_add[1] für weiterführende Informationen.

Note

Das Skript wird nicht automatisch ausgeführt, wenn Sie den Port mit make install installieren. Wenn Sie es ausführen lassen wollen, dann müssen Sie es im Makefile aufrufen: PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL.

3. pkg-deinstall

Dieses Skript wird ausgeführt, wenn ein Paket deinstalliert wird.

Es wird zweimal von man:pkg_delete[1] aufgerufen. Das erste Mal als ${SH} pkg-deinstall ${PKGNAME} DEINSTALL und dann als ${SH} pkg-deinstall ${PKGNAME} POST-DEINSTALL.

4. pkg-req

Muss Ihr Port entscheiden, ob er installiert werden soll oder nicht, können Sie ein pkg-req-"Bedingungsskript" verwenden. Dieses wird automatisch bei der Installation/ Deinstallation aufgerufen, um zu entscheiden, ob die Installation/ Deinstallation fortgesetzt werden soll.

Das Skript wird während der Installation von man:pkg_add[1] als pkg-req ${PKGNAME} INSTALL aufgerufen. Bei der Deinstallation wird es von man:pkg_delete[1] als pkg-req ${PKGNAME} DEINSTALL ausgeführt.

5. Ändern der Namen der pkg-* Dateien

Alle Namen der pkg- Dateien werden durch Variablen festgelegt. Sie können sie bei Bedarf also im Makefile des Ports ändern. Das ist besonders nützlich, wenn Sie die gleichen pkg- Dateien in mehreren Ports nutzen oder in eine der oben genannten Dateien schreiben wollen. Schreiben Sie niemals außerhalb des Unterverzeichnisses WRKDIRpkg-*, eine Erklärung hierzu finden Sie in Schreiben ausserhalb von WRKDIR.

Hier ist eine Liste von Variablennamen und ihren Standardwerten (PKGDIR ist standardmäßig ${MASTERDIR}).

Variable Standardwert

DESCR

${PKGDIR}/pkg-descr

PLIST

${PKGDIR}/pkg-plist

PKGINSTALL

${PKGDIR}/pkg-install

PKGDEINSTALL

${PKGDIR}/pkg-deinstall

PKGREQ

${PKGDIR}/pkg-req

PKGMESSAGE

${PKGDIR}/pkg-message

Bitte benutzen Sie diese Variablen anstatt PKG_ARGS zu ändern. Wenn Sie PKG_ARGS modifizieren, werden diese Dateien bei der Installation des Ports nicht korrekt in /var/db/pkg installiert.

6. Nutzung von SUB_FILES und SUB_LIST

Die Variablen SUB_FILES und SUB_LIST sind nützlich, um dynamische Werte in Port-Dateien zu verwenden, wie beispielsweise der Installations-PREFIX in pkg-message.

Die Variable SUB_FILES enthält eine Liste von Dateien, die automatisch verändert werden. Jede Datei in SUB_FILES muss ein entsprechendes Pendant datei.in im Verzeichnis FILESDIR haben. Die modifizierte Version wird in WRKDIR angelegt. Dateien, die als Werte von USE_RC_SUBR (oder veraltet in USE_RCORDER) gespeichert werden, werden automatisch zu SUB_FILES hinzugefügt. Für die Dateien pkg-message, pkg-install, pkg-deinstall und pkg-req werden die jeweiligen Makefile-Variablen selbsttätig auf die geänderte Version der Datei gesetzt.

Die Variable SUB_LIST ist eine Liste von VAR=WERT-Paaren. Jedes Paar %%VAR%% in den Dateien von SUB_FILES wird mit WERT ersetzt. Einige gebräuchliche Paare werden automatisch definiert: PREFIX, LOCALBASE, DATADIR, DOCSDIR, EXAMPLESDIR. Jede Zeile, die mit @comment beginnt, wird nach der Variablen-Ersetzung aus der neu erstellten Datei gelöscht.

Im folgenden Beispiel wird %%ARCH%% mit der Systemarchitektur in pkg-message ersetzt:

SUB_FILES=     pkg-message
SUB_LIST=      ARCH=${ARCH}

Beachten Sie bitte, dass in diesem Beispiel die Datei pkg-message.in im Verzeichnis FILESDIR vorhanden sein muss.

Hier ein Beispiel für eine gute pkg-message.in:

Now it is time to configure this package.
Copy %%PREFIX%%/shared/examples/putsy/%%ARCH%%.conf into your home directory
as .putsy.conf and edit it.