3. Überblick über ein eisfair Paket¶
3.1. Grundsätzliche Konventionen¶
3.1.1. 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 Problemen mit manchen Deinstallationsroutinen führen. Aus diesem Grund sollte generell auf die Verwendung des Bindestrichs „-“ im Paketnamen verzichtet und als Alternative besser der Unterstrich „_“ verwendet werden.
Eine der wenigen Ausnahmen davon sind Treiberpakete („scsi-buslogic“), Entwicklerbibliotheken („glibc-dev“) und Bibliotheken („liblcms2“).
3.1.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/lib/$package/$package-action.sh
angegeben, entspricht das im Paket „foo“ der Datei /usr/lib/foo/foo-action.sh
,
eine Variable START_FOO
wird als START_$PACKAGE
geschrieben.
3.2. Bestandteile eines Pakets¶
Ein Installationspaket für eisfair ist im wesentlichen ein mit „gzip“ oder „bzip2“ 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.
Datei |
Beschreibung |
---|---|
|
Die Konfiguration muss mittels eischk auf Gültigkeit geprüft werden. |
|
Paketspezifische Wertdefinitionen für eischk. |
|
Individuelle Prüfungen für eischk. |
|
Die aktuelle Konfiguration ist die wichtigste Datei der eisfair-Konfigurationsschicht. Diese Datei wird nicht im Paket mitgeliefert, sondern während der Installation angelegt. |
|
Advanced Configuration File Handling legt Backups der Konfiguration an. Diese Dateien dürfen nicht mit dem Paket ausgeliefert werden. |
|
Die Default-Konfiguration ist für das Advanced Configuration File Handling zwingend notwendig und muss jedem Paket beiliegen. |
|
Liste aller Dateien des Paketes mit den entsprechenden Zugriffsrechten. |
|
Mittels des Init-Scripts wird das Paket gesteuert (z.B. Start, Stop). |
|
Start des Pakets beim Systemstart. |
|
Beenden des Pakets beim Shutdown. |
|
Mittels |
|
das Skript |
|
Eine Dokumentation ist jedem Paket mitzuliefern. |
|
In den Release Notes/Changelog wird die Historie der Änderungen an einem Paket gepflegt. |
|
Diverse paketspezifische Verwaltungsscripts. |
|
Das Apply-Script dient zur Verarbeitung einer neuen Konfiguration |
|
Update-Script zum übernehmen einer Paketkonfiguration beim Update eines Pakets. |
|
Über die Deinstallationsroutine kann ein Paket wieder deinstalliert werden. |
|
In der Hilfedatei werden die einzelnen Konfigurationsvariablen näher beschrieben. |
|
Hier wird die Menüstruktur für das eisfair Setup-Menü definiert. |
|
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:
info und man Dateien unter
/usr/info
bzw./usr/man
locale Dateien unter
/usr/share/locale
ausgenommen sind de|en|freine eigene GLibC
Bibliotheken
Nur in Ausnahmefällen und nach vorheriger Abstimmung mit dem eisfair-Entwicklerteam dürfen in ein Paket:
ein eigener Kernel (nur wenn unumgänglich)
Kernel-Module (bitte nachfragen, ob diese nicht besser in das offizielle Kernelpaket mit aufgenommen werden können)
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 zunächst dem
Superuser root. Dieser Zustand kann, sofern gewünscht, im
Installationsskript /tmp/install.sh
geändert werden.