Unterabschnitte

Überblick über ein eisfair Paket

Grundsätzliche Konventionen

Auswahl des Paketnamens

Der erste Schritt bei der Paketerstellung ist die Wahl des richtigen Paketnamens. Der Paketname wird an sehr vielen Stellen verwendet. Er ist zum Beispiel Bestandteil jeder Konfigurationsvariable eines Pakets und auch Teil des Namens vieler im Paket befindlicher Dateien.

Es empfiehlt sich daher, einen kurzen Namen für das Paket zu wählen. Es versteht sich von selbst, dass ,,dhcpd`` dem Namen ,,dynamic_host_configuration_protocol_daemon`` vorzuziehen ist. Dem Anwender wird an den meisten Stellen sowieso nicht der Paketname, sondern ein anderer Text angezeigt.

Generell verboten ist die Aufnahme der Versionsnummer in den Paketnamen. Ein Paket darf also nicht ,,foo_1.1.2`` heißen, sondern muss den Namen ,,foo`` bekommen.

Als Zeichen des Paketnamens sind ausschließlich Kleinbuchstaben, Zahlen, der Bindestrich ,,-`` (,,Dash``) und der Unterstrich ,,_`` (,,Underscore``) zulässig.

Zudem sollte das Paket nicht den Namen eines anderen Pakets als Präfix getrennt mittels eines Bindestrichs ,,-`` enthalten. Dies kann zu Probleme mit manchen Deinstallationsroutinen führen. Aus diesem Grund sollte generell auf die Verwendung des Bindestrichs ,,-`` im Paketnamen verzichtet werden. Als Alternative sollte besser der Unterstrich ,,_`` verwendet werden.

Eine der wenigen Ausnahmen davon sind Treiberpakete (,,scsi-buslogic``), Entwicklerbibliotheken (,,glibc-dev``) und Bibliotheken (,,libz1-2``).

Dateinamen, Variablennamen

Viele Dateinamen, Verzeichnisnamen und Variablennamen leiten sich vom Paketnamen ab. Im Paket foo gibt es also eine Reihe Dateien, die den Paketnamen foo als Namensbestandteil haben. Beispiele dafür sind die Dateien /etc/check.d/foo.ext und /var/install/config.d/foo-update.sh sowie die Variablen START_FOO und FOO_BAR.

Dateinamen werden dabei immer in Kleinbuchstaben geschrieben, Variablennamen in der Konfigurationsdatei immer in Großbuchstaben.

Im folgenden ist der Paketname immer als $package angegeben. Ist zum Beispiel eine Datei /usr/local/$package/$package-action.sh angegeben, entspricht das im Paket ,,foo`` der Datei /usr/local/foo/foo-action.sh, eine Variable START_FOO wird als START_$PACKAGE geschrieben.

Bestandteile eines Pakets

Ein Installationspaket für eisfair ist im wesentlichen ein mit gzip komprimiertes Tar-Archiv, in dem neben den eigentlichen Dateien des Paketes noch einige weitere Informationen und Skripte enthalten sein müssen.

Das Paket selbst spiegelt den Dateibaum ab dem root-Verzeichnis, also ,,/`` wieder. Eine zu installierende Datei /usr/bin/foo muss also im Tar-Archiv als usr/bin/foo (ohne absoluten Pfad, also relativ!) abgespeichert sein.

tbl_files.tex

Datei Beschreibung
   
/etc/check.d/$package Die Konfiguration muss mittels Eischk auf Gültigkeit geprüft werden.
/etc/check.d/$package.exp Paketspezifische Wertdefinitionen für Eischk.
/etc/check.d/$package.ext Individuelle Prüfungen für Eischk.
/etc/config.d/$package Die aktuelle Konfiguration ist die wichtigste Datei der eisfair-Konfigurationsschicht. Diese Datei wird nicht im Paket mitgeliefert, sondern während der Installation angelegt.
/etc/backup.d/$package* Advanced Configuration File Handling legt Backups der Konfiguration an. Diese Dateien dürfen nicht mit dem Paket ausgeliefert werden.
/etc/default.d/$package Die Default-Konfiguration ist für das Advanced Configuration File Handling und Webconf zwingend notwendig und muss jedem Paket beiliegen.
/etc/filelist.d/$package-files.txt Liste aller Dateien des Paketes mit den entsprechenden Zugrifssrechten.
/etc/init.d/$package Mittels des Init-Scripts wird das Paket gesteuert (z.B. Start, Stop).
/etc/rc2.d/Sxx$package Start des Pakets beim Systemstart.
/etc/rc2.d/Kxx$package Beenden des Pakets beim Shutdown.
   
/tmp/install.sh Mittels install.sh wird die Installation eines Pakets durchgeführt.
/tmp/preinstall.sh Das Skript preinstall.sh dient zur Vorbereitung der Installation eines Pakets.
   
/usr/share/doc/$package/$package.txt Eine Dokumentation ist jedem Paket mitzuliefern.
/usr/share/doc/$package/changes.txt In den Release Notes wird die Historie der Änderungen an einem Paket gepflegt.
   
/var/install/bin/$package-action Diverse Paketspezifische Verwaltungsscripts.
/var/install/config.d/$package.sh Das Apply-Script dient zur Verarbeitung einer neuen Konfiguration
/var/install/config.d/

        $package-update.sh

Script zum Übernehmen einer Paketkonfiguration beim Update eines Pakets.
/var/install/deinstall/$package Über die Deinstallationsroutine kann ein Paket wieder deinstalliert werden.
/var/install/help/$package In der Hilfedatei werden die einzelnen Konfigurationsvariablen näher beschrieben.
/var/install/menu/

        setup.services.$package.menu

Hier wird die Menüstruktur für das eisfair Setup-Menü definiert.
/var/install/packages/$package In der Paket-Info-Datei werden die grundlegenden Daten zu einem Paket angegeben.
   

Die einzelnen Bestandteile werden in den entsprechenden Kapiteln dieser Entwicklerdokumentation näher erklärt.

Explizit nicht in ein Eisfair-Paket dürfen:

Links und leere Verzeichnisse müssen im Installationsskript angelegt werden.

Nur in Ausnahmefällen und nach vorheriger Abstimmung mit dem eisfair Entwicklerteam dürfen in ein Paket:

Um Probleme mit den Benutzerrechten (zum Beispiel Dateien, die einem User mit der ID 501 gehören, der auf dem eisfair -Server gar nicht existiert) zu verhindern, empfiehlt es sich, Packages mit

tar -czv --owner=root --group=root -f package.tar.gz *

zu verpacken. Damit gehören die entpackten Dateien erstmals dem Superuser; dieser Zustand kann, sofern dies gewünscht ist, in dem Installationsskript /tmp/install.sh geändert werden.

Jens Vehlhaber 2008-03-01