# New ports collection makefile for: oneko # Date created: 5 December 1994 # Whom: asami # # $FreeBSD$ # PORTNAME= oneko PORTVERSION= 1.1b CATEGORIES= games MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/ MAINTAINER= asami@FreeBSD.org COMMENT= A cat chasing a mouse all over the screen MAN1= oneko.1 MANCOMPRESSED= yes USE_IMAKE= yes .include <bsd.port.mk>
Kapitel 3. Einen neuen Port erstellen
This translation may be out of date. To help with the translations please access the FreeBSD translations instance.
Table of Contents
Dieser Abschnitt beschreibt, wie Sie schnell einen neuen Port erstellen können. In vielen Fällen ist dies allerdings nicht ausreichend, dann werden Sie in diesem Buch weiterlesen müssen.
Als Erstes besorgen Sie sich das Original-Tarball (komprimiertes Archiv) und legen es im DISTDIR
ab, welches standardmäßig /usr/ports/distfiles ist.
Im Folgenden wird angenommen, dass die Software unverändert kompiliert werden konnte, dass also keinerlei Änderungen nötig waren, um den Port auf Ihrem FreeBSD-Rechner zum Laufen zu bringen. Falls Sie Änderungen vornehmen mussten, werden Sie auch den nächsten Abschnitt beachten müssen. |
3.1. Das Makefile schreiben
Ein minimales Makefile sieht in etwa so aus:
Versuchen Sie es zu verstehen. Machen Sie sich keine Gedanken um die $FreeBSD$
-Zeile, diese wird automatisch vom CVS eingefügt, wenn der Port in den Haupt-Ports-Tree importiert wird. Ein detailliertes Beispiel finden Sie im Abschnitt sample Makefile.
3.2. Die Beschreibungsdateien erstellen
Es gibt zwei Beschreibungsdateien, die für jeden Port benötigt werden, ob sie tatsächlich im Paket enthalten sind oder nicht. Dies sind pkg-descr und pkg-plist. Der pkg- Präfix unterscheidet sie von anderen Dateien.
3.2.1. pkg-descr
Diese enthält eine längere Beschreibung des Ports. Einer oder mehrere Absätze, die kurz und prägnant erklären, was der Port macht, sind ausreichend.
pkg-descr enthält keine Anleitung oder detaillierte Beschreibung wie der Port benutzt oder kompiliert wird! Bitte seien Sie vorsichtig, wenn Sie aus dem README oder der Manualpage kopieren; Diese sind oft keine prägnanten Beschreibungen des Ports oder sie sind in einem ungünstigen Format (Manualpages haben z.B. bündige Zwischenräume). Wenn es für die portierte Software eine offizielle Webseite gibt, sollten Sie diese hier angeben. Fügen Sie hierzu eine der Webseiten mit dem Präfix |
Das folgende Beispiel zeigt wie Ihre pkg-descr aussehen sollte:
This is a port of oneko, in which a cat chases a poor mouse all over the screen. : (etc.) WWW: http://www.oneko.org/
3.2.2. pkg-plist
Diese Datei enthält eine Liste aller Dateien, die von diesem Port installiert werden. Sie wird auch die "Packliste" genannt, da das Paket durch die hier aufgeführten Dateien erstellt wird. Die Pfadangaben sind relativ zum Installationspräfix (für gewöhnlich /usr/local oder /usr/X11R6). Wenn Sie die MANn
-Variablen verwenden (was Sie auch machen sollten), führen Sie hier keine Manualpages auf. Wenn der Port während der Installation Verzeichnisse erstellt, stellen Sie sicher entsprechende @dirrm
-Zeilen einzufügen, um die Verzeichnisse zu entfernen, wenn das Paket gelöscht wird.
Hier ist ein kleines Beispiel:
bin/oneko lib/X11/app-defaults/Oneko lib/X11/oneko/cat1.xpm lib/X11/oneko/cat2.xpm lib/X11/oneko/mouse.xpm @dirrm lib/X11/oneko
Für weitere Details zur Packliste lesen Sie in der pkg_create(1) Manualpage nach.
Es wird empfohlen alle Dateinamen in dieser Datei alphabetisch sortiert zu halten. Das erlaubt Ihnen die Änderungen bei einem Upgrade Ihres Ports deutlich einfacher zu Überprüfen. |
Eine Packlist von Hand zu erzeugen kann eine sehr mühsame Aufgabe sein. Wenn der Port eine große Anzahl Dateien installiert, kann es Zeit sparen, eine Packliste automatisch zu erstellen. |
Es gibt nur einen Fall, in dem pkg-plist weggelassen werden kann. Wenn der Port nur eine handvoll Dateien und Verzeichnisse installiert, können diese in den Variablen PLIST_FILES
und PLIST_DIRS
im Makefile aufgelistet werden. Zum Beispiel könnten wir im obigen Beispiel ohne pkg-plist für den oneko-Port auskommen, indem wir die folgenden Zeilen ins Makefile einfügen:
PLIST_FILES= bin/oneko \ lib/X11/app-defaults/Oneko \ lib/X11/oneko/cat1.xpm \ lib/X11/oneko/cat2.xpm \ lib/X11/oneko/mouse.xpm PLIST_DIRS= lib/X11/oneko
Natürlich sollte PLIST_DIRS
ungesetzt bleiben, wenn der Port keine eigenen Verzeichnisse installiert.
Der Preis für diese Art die Dateien eines Ports anzugeben ist, dass man keine Befehlsfolgen wie in pkg_create(1) nutzen kann. Deshalb ist es nur für einfache Ports geeignet und macht diese noch einfacher. Gleichzeitig bringt es den Vorteil die Anzahl der Dateien in der Ports-Sammlung zu reduzieren. Deshalb ziehen Sie bitte diese Vorgehensweise in Erwägung, bevor Sie pkg-plist benutzen.
Später werden wir uns ansehen, wie pkg-plist und PLIST_FILES
benutzt werden können, um anspruchsvollere Aufgaben zu erfüllen.
3.3. Die Checksummendatei erzeugen
Geben Sie einfach make makesum
ein. Die Regeln von Make sorgen dafür, dass die Datei distinfo automatisch erstellt wird.
Wenn sich die Checksumme einer heruntergeladenen Datei regelmäßig ändert und Sie sicher sind, dass Sie der Quelle trauen können (weil sie z.B. von einer Hersteller-CD oder täglich erstellter Dokumentation stammt), sollten Sie diese Dateien in der Variable IGNOREFILES
angeben. Dann wird die Checksumme für diese Datei bei make makesum
nicht berechnet, sondern auf IGNORE
gesetzt.
3.4. Den Port testen
Sie sollten sicherstellen, dass die Port-Regeln genau das einhalten, was Sie von ihnen erwarten, auch beim Erzeugen eines Pakets aus dem Port. Dies sind die wichtigen Punkte, die Sie überprüfen sollten.
pkg-plist enthält nichts, das nicht von Ihrem Port installiert wurde.
pkg-plist enthält alles, was von Ihrem Port installiert wurde.
Ihr Port kann mit Hilfe von
make reinstall
mehrmals installiert werden.Ihr Port räumt bei der Deinstallation hinter sich auf.
Procedure: Empfohlene Testreihenfolge
make install
make package
make deinstall
pkg_add Paket-Name
make deinstall
make reinstall
make package
Stellen Sie bitte sicher, dass während make package
und make deinstall
keine Warnungen ausgegeben werden. Nach Schritt 3 überprüfen Sie bitte, ob alle neuen Verzeichnisse korrekt entfernt wurden. Und versuchen Sie die Software nach Schritt 4 zu benutzen, um sicherzustellen, dass sie korrekt funktioniert, wenn diese aus einem Paket installiert wird.
Der gründlichste Weg diese Schritte zu automatisieren ist eine Tinderbox zu installieren. Diese verwaltet Jails
, in denen Sie alle oben genannten Schritte durchführen können, ohne den Zustand Ihres laufenden Systems zu verändern. Mehr Informationen hierzu entält ports/ports-mgmt/tinderbox
3.5. Ihren Port mit portlint
überprüfen
Bitte verwenden Sie portlint
, um festzustellen, ob Ihr Port unseren Richtlinien entspricht. Das Programm ports-mgmt/portlint ist Teil der Ports-Sammlung. Stellen Sie vor allem sicher, dass das Makefile in der richtigen Form und das Paket passend benannt ist.
3.6. Den neuen Port einreichen
Bevor Sie den neuen Port einreichen, lesen Sie bitte unbedingt den Abschnitt DOs and DON’Ts.
Nun, da Sie mit Ihrem Port zufrieden sind, müssen Sie ihn nur noch in den Haupt-Ports-Tree von FreeBSD einbringen, damit alle daran teilhaben können. Wir benötigen nicht Ihr work-Verzeichnis oder Ihr pkgname.tgz-Paket - diese können Sie nun löschen. Wenn Ihr Port beispielsweise oneko
heißt, wechseln Sie in das Verzeichnis, in dem sich das Verzeichnis oneko
befindet und führen den Befehl shar find oneko > oneko.shar
aus.
Fügen Sie Ihre Datei oneko.shar
einem Fehlerbericht an und senden Sie diesen mit Hilfe des Programms send-pr(1) (unter Bug Reports and General Commentary finden Sie weitere Informationen über send-pr(1)). Ordnen Sie den Fehlerbericht bitte in die Kategorie Ports
mit der Klasse Change-Request
ein (Markieren Sie den Bericht nicht als vertraulich
(confidential
)!). Fügen Sie bitte eine kurze Beschreibung des Programms, das Sie portiert haben, in das "Beschreibungs"-Feld des Problemberichts und die shar-Datei in das "Fix"-Feld ein (bespielsweise eine kurze Version des COMMENT
).
Sie können uns die Arbeit um einiges vereinfachen, wenn Sie eine gute Beschreibung in der Zusammenfassung des Problemberichtes verwenden. Wir bevorzugen etwas wie "Neuer Port: <Kategorie>/<Portname><Kurzbeschreibung des Ports>" für neue Ports. Wenn Sie sich an dieses Schema halten, ist die Chance, dass sich jemand bald Ihren Bericht ansieht, deutlich besser. |
Noch einmal: Bitte fügen Sie nicht das distfile der Originalquelle, das work-Verzeichnis oder das Paket, das Sie mit make package
erstellt haben, ein. Und verwenden Sie shar(1) für neue Ports (und NICHT diff(1)).
Haben Sie bitte etwas Geduld, nachdem Sie den Port eingereicht haben. Manchmal kann es einige Monate dauern, bevor ein Port in FreeBSD eingefügt wird, obwohl es wahrscheinlich nur ein paar Tage dauert. Sie können sich die Liste der PRs, die darauf warten, in FreeBSD committet zu werden, ansehen.
Nachdem wir einen Blick auf Ihren Port geworfen haben, werden wir, wenn nötig, bei Ihnen nachfragen und ihn in die Ports-Sammlung übernehmen. Ihr Name taucht dann auch in der Liste der Additional FreeBSD Contributors und in anderen Dateien auf. Ist das nicht toll?! :-)
Last modified on: 9. März 2024 by Danilo G. Baio