[OpenBSD]

Portiererhandbuch: Mit Konfigurationsdateien umgehen

Packages sollten Dateien nur unter ${PREFIX} installieren, was standardmäßig /usr/local ist. Auf der anderen Seite ist die OpenBSD-Richtlinie so, dass die meisten Konfigurationsdateien unter ${SYSCONFDIR} installiert werden, was standardmäßig /etc ist.

Bedenke, dass es für ein Binär-Package voll und ganz in Ordnung ist, sowohl ${PREFIX} als auch ${SYSCONFDIR} fest eingebunden zu haben: PREFIX und SYSCONFDIR sind größtenteils Benutzereinstellungen, die die Erzeugung vom Package beeinflussen.

@sample erklärt

Packing-Listen beinhalten einen bestimmten @sample-Mechanismus, um mit Konfigurationsdateien umgehen zu können:

weitere @sample-Eigenschaften

Im Gegensatz zu anderen Dateien in einer Packing-Liste können @sample-Einträge eine absolute Pfadangabe haben.

Einige große Packages werden ebenfalls ihr eigenes Konfigurationsverzeichnis benötigen, worum sich @sample ${SYSCONFDIR}/directory/ kümmern wird.

@sample directory/ verwenden, um portspezifische Verzeichnisse zu erstellen, die keine Konfigurationsdateien beinhalten ist ein völlig korrekter Weg. @sample interpretiert @mode-, @owner- und @group-Angaben richtig. Das kann ein wenig hinderlich sein, da du oft zwischen dem Standard-Modus und dem konfigurationsdateispezifischen Modus hin und her wechseln musst.

Spezielle Tricks

make update-plist weiß, wie man @sample-Einträge kopieren muss, aber es weiß nicht, wie man diese erstellt, sodass sie beim ersten Mal geschrieben werden müssen.

Denke an den Unterschied zwischen Konfigurationsdateien und Beispielkonfigurationsdateien: der Port muss konfiguriert werden, um seine Dateien unter ${SYSCONFDIR} zu finden, es ist lediglich die Scheininstallationsphase, die den Kram unter ${PREFIX}/share/examples ablegen muss. Ein einfacher Weg, um das zu handhaben, ist, die Dateien in ein post-install rüberzukopieren.

Ein netter Trick, der oft funktioniert, ist, auf die makefile vom Programm zu achten und das Konfigurationsverzeichnis während der Scheininstallationsphase zu überschreiben, indem spezifische FAKE_FLAGS genutzt werden, zum Beispiel:
FAKE_FLAGS=DESTDIR=${WRKINST} sysconfdir=${WRKINST}${TRUEPREFIX}/share/examples/PKGNAME
Du musst lediglich auf Programme achten, die das Konfigurationsverzeichnis in bestimmte Dateien während der Installationsphase schreiben.

Beispiele