Das FreeBSD Porter-Handbuch
Zurück | Kapitel 6. Besonderheiten | Weiter

# 6.21. Starten und Anhalten von Diensten (rc Skripten)

`rc.d`-Skripten werden zum Starten von Diensten während des Systemstarts verwendet und um den Administratoren einen Standardweg zum Anhalten und Starten von Diensten zu bieten. Ports halten sich an dieses systemweite `rc.d`-Framework. Details zu deren Benutzung können im rc.d Kapitel des Handbuchs nachgelesen werden. Ausführliche Beschreibungen der verfügbaren Befehle stehen in rc(8) und rc.subr(8). Desweiteren gibt es einen Artikel zu praktischen Aspekten bezüglich `rc.d`-Skripten.

Ein oder mehrere rc-Skripten können installiert werden mittels:

    USE_RC_SUBR=    doormand

Skripten müssen im Unterverzeichnis `files` abgelegt und jeder Skript-Datei muss ein `.in`-Suffix hinzugefügt werden. Der einzige Unterschied zu einem `rc.d`-Skript aus dem Basissystem ist, dass die Zeile `. /etc/rc.subr` in `. %%RC_SUBR%%` umbenannt werden muss, da ältere Versionen von FreeBSD die Datei `/etc/rc.subr` nicht besitzen. Standarderweiterungen wie `SUB_LIST` werden ebenfalls unterstützt. Die Verwendung von `%%PREFIX%%` und `%%LOCALBASE%%` wird dringend empfohlen. Näheres zu `SUB_LIST` kann im zugehörigen Kapitel nachgelesen werden.

Für FreeBSD-Versionen, die älter als 6.1-RELEASE sind, ist die Integration mittels rcorder(8) möglich, indem `USE_RCORDER` anstatt `USE_RC_SUBR` verwendet wird. Die Verwendung dieser Methode wird aber nicht mehr empfohlen.

Seit FreeBSD 6.1-RELEASE sind lokale `rc.d`-Skripten (inklusive der durch Ports installierten) im allgemeinen rcorder(8) des Basissystems.

Beispiel eines einfachen `rc.d`-Skripts:

    #!/bin/sh

    # PROVIDE: doormand
    # REQUIRE: LOGIN
    #
    # Add the following lines to /etc/rc.conf.local or /etc/rc.conf
    # to enable this service:
    #
    # doormand_enable (bool):    Set to NO by default.
    #                Set it to YES to enable doormand.
    # doormand_config (path):    Set to %%PREFIX%%/etc/doormand/doormand.cf
    #                by default.
    #

    . %%RC_SUBR%%

    name="doormand"
    rcvar=${name}_enable

    command=%%PREFIX%%/sbin/${name}
    pidfile=/var/run/${name}.pid

    load_rc_config $name

    : ${doormand_enable="NO"}
    : ${doormand_config="%%PREFIX%%/etc/doormand/doormand.cf"}

    command_args="-p $pidfile -f $doormand_config"

    run_rc_command "$1"

Für die Wertzuweisung von Variablen sollte "=" anstatt ":=" verwendet werden, da bei Ersterem nur auf einen Standardwert gesetzt wird, wenn die Variable vorher noch nicht gesetzt war, und bei Letzterem dieser gesetzt wird, auch wenn der Wert vorher Null gewesen ist. Ein Benutzer kann durchaus einen Ausdruck wie

    doormand_flags=""

in seiner `rc.conf.local`-Datei stehen haben, und eine Variablenzuweisung mittels ":=" würde in diesem Fall die Benutzerdefinition überschreiben.

Der Suffix des rc-Skriptes wird durch `RC_SUBR_SUFFIX` für die weitere Verwendung im `Makefile` des Ports bereitgestellt. Aktuelle Versionen von FreeBSD fügen keinen Suffix den Skriptnamen hinzu im Gegensatz zu ältere Versionen, die dies mit dem Suffix `.sh` taten.

> Anmerkung: Es sollten keine weiteren Skripten mit der `.sh`-Endung hinzugefügt werden. Irgendwann wird es ein Massenumbenennen aller Skripten im Repository geben, die immer noch diese Endung haben.

## 6.21.1. Anhalten und Deinstallieren von Diensten

Es ist möglich, dass ein Dienst während der Deinstallation automatisch angehalten wird. Es wird empfohlen dieses Verhalten nur zu implementieren, wenn es unbedingt erforderlich ist zuerst den Dienst anzuhalten und dann die Dateien zu entfernen. Normalerweise sollte es dem Administrator überlassen werden, ob ein Dienst durch Deinstallieren angehalten werden soll. Dies betrifft auch den Vorgang des Aktualisierens.

Der Datei `pkg-plist` sollte eine Zeile wie folgt zugefügt werden:

    @stopdaemon doormand

Das Argument muss dabei mit dem Inhalt der `USE_RC_SUBR`-Variablen übereinstimmen.

Zurück | Zum Anfang | Weiter
Benutzung von Datenbanken | Nach oben | Fortgeschrittene `pkg-plist`-Methoden

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