Die folgenden Richtlinien beschreiben, wie Ihre Distribution aussehen sollte, wenn jemand sie herunterlädt, wiederherstellt und entpackt.
Den am meisten ärgerlichen Fehler, den Programmierneulinge machen, ist, Archive zu bilden, die die darin enthaltenen Dateien und Verzeichnisse direkt ins aktuelle Verzeichnis entpacken; zu guter Letzt werden dabei auch noch bereits existierende Dateien überschrieben! Tun sie das nie!
Stellen Sie stattdessen sicher, daß alle Dateien in ein gemeinsames Verzeichnis entpackt werden, das den Namen des Projekts trägt. Auf diese Weise werden sie in ein einziges oberstes Projekt-Verzeichnis entpackt, daß direkt im aktuellen Verzeichnis wurzelt.
Hier ist ein Makefile-Trick, der das sicherstellt: angenommen, Ihr Projekt-Verzeichnis ist `foobar' und SRC enthält ein Verzeichnis der Dateien Ihrer Distribution, dann sieht das so aus (das GNU-Programm tar 1.13 muß dazu vorhanden sein):
VERS=1.0 foobar-$(VERS).tar.gz: tar --name-prefix='foobar-$(VERS)/' -czf foobar-$(VERS).tar.gz $(SRC)
Haben Sie eine ältere Version von tar, sieht das Ganze so aus:
foobar-$(VERS).tar.gz: @ls $(SRC) | sed s:^:foobar-$(VERS)/: >MANIFEST @(cd ..; ln -s foobar foobar-$(VERS)) (cd ..; tar -czvf foobar/foobar-$(VERS).tar.gz `cat foobar/MANIFEST`) @(cd ..; rm foobar-$(VERS))
Eine Datei mit dem Namen README oder READ.ME sollte vorhanden sein; sie ist eine Landkarte Ihrer Software-Distribution. Nach alter Sitte ist dies die erste Datei die unerschrockene Neugierige nach der Entpackung der Quellen lesen werden.
In der README-Datei werden sich als nützlich erweisen:
Bevor er noch nach der README-Datei schaut, wird Ihr unerschrockener Neugieriger die Dateinamen im obersten Verzeichnis Ihrer entpackten Distribution gelesen haben. Diese Namen können bereits der Information dienen. Wenn Sie bestimmte eingebürgerte Namensgebungen einhalten, können Sie dem Erkundenden wertvolle Hinweise geben, wonach sie als Nächstes Ausschau halten sollten.
Hier sind nun einige Dateinamen, die üblicherweise im höchsten Ordner zu finden sind, und deren Bedeutung. Natürlich muß nicht jede Distribution alle davon besitzen.
die "Landkarte" der Distribution; als erstes zu lesen
Anweisungen zur Konfiguration und Installation
Liste derer, die was zum Projekt beigetragen haben
laufende Projekt-Neuigkeiten
Geschichte des Projekts
Lizenzbestimmungen für das Projekt (GNU Konvention)
Lizenzbestimmungen für das Projekt
Verzeichnis der Dateien der Distribution
Liste mit häufig gestellten Fragen zum Projekt in einfachem Textformat
Datei mit `tags' für die Editoren vi oder Emacs
Beachten Sie die weitverbreitete Konvention, daß Dateinamen, die nur aus Großbuchstaben bestehen, keine Programmkomponenten sind, sondern von Menschen lesbare Metainformationen bezüglich der Software darstellen.
Eine FAQ kann viel Ärger ersparen. Wenn bestimmte Fragen zum Projekt öfters auftauchen, dann packen Sie diese Fragen in die FAQ; halten Sie die Benutzer an, erst die FAQ zu lesen, bevor sie Fragen losschicken oder Fehler melden. Eine gut aufgebaute FAQ kann den Support, der auf den Projekt-Unterstützern lastet, vermindern.
Eine HISTORY- oder NEWS-Datei mit einer zeitlichen Übersicht über alle Versionen ist nützlich. Unter anderem kann es Kniffe früher einführen, falls Sie jemals mit einem Patentverletzungs-Verfahren in Berührung kommen sollten (das ist zwar bis jetzt noch niemendem passiert, aber es ist am besten, wenn man darauf vorbereitet ist).
Das de facto Standardformat für zu installierende Binärcode-Archive ist das des Red Hat Package Manager, RPM. Es ist Bestandteil der populärsten Linux-Distribution (Red Hat) und wird von nahezu allen anderen Linux- Distributionen unterstützt (außer Debian und Slackware; und Debian kann immerhin via RPMs installieren).
Folglich ist es eine gute Idee, sowohl installierbaren Binärcode in RPM-Form zu unterstützen als auch den Quellcode in Form von tar-Archiven.
Gleichfalls ist es eine gute Idee, in Ihr tar-Quellcode-Archiv die spec-Datei für RPM mitzugeben, mit einer Methode, RPMs daraus zu erzeugen (in Ihrer Makefile). Diese spec-Datei sollte die Endung `spec' haben; auf diese Weise findet die Option rpm -t diese Datei im tar-Archiv.
Für besondere Stilaspekte erzeugen Sie diese spec-Datei mit einem Shell-Skript, das automatisch die richtige Versionsnummer einträgt, indem es die Makefile analysiert oder eine Datei version.h.