====== Allgemein ======
Wird ein Port geändert weil es eine neuere Version gibt oder andere Änderungen notwendig sind wird im Allgemeinen ein Patch erzeugt. Im Weitere wird das Vorgehen beschrieben welches man als Maintainer anwenden kann.
====== Sicherung des aktuellen Ports ======
Der aktuelle Port wie er offiziell ist muss zunächst gesichert werden. Hierzu wird er in ein temporäres Verzeichnis kopiert:
mkdir /tmp/portname
cd /usr/ports/category/portname
rsync -av * /tmp/portname/
====== Port ändern ======
Als nächstes kann der Port unter ///usr/ports/category/portname// geändert und entsprechend angepasst werden. Zudem ermöglicht es die Installation und Deinstallation zu testen.
====== distinfo erstellen ======
Ändern sich Dateien welche heruntergeladen werden muss //distinfo// neu generiert werden. Hierzu wird im Port einfach die Datei //distinfo// gelöscht und anschließend als root mit folgendem Befehl wieder angelegt:
# make makesum
====== Port testen ======
Der Port sollte testweise installiert und deinstalliert werden so dies möglich ist. Zusätzlich sollte er mit **ports-mgmt/portlint** untersucht werden.
Im Verzeichnis des Ports wird hierzu '//portlint// aufgerufen:
# portlint -abc
====== Patch erzeugen ======
Ist die Arbeit beendet und alles funktioniert wie geplant muss noch der Patch erzeugt werden um ihn später zu übermitteln.
Zunächst wird das Portverzeichnis von möglichem Unrat befreit. Hierzu wird als root im Portverzeichnis ein clean gemacht.
# make clean
Das //work// Verzeichnis sollte nun verschwunden sein (falls eines vorhanden war).
Nun wir der Patch erzeugt.
% diff -bBruN /tmp/portname /usr/ports/category/portname > patch.txt
Somit wird ein Patch namens //patch.txt// erzeugt der alle Änderungen im Port gegenüber der alten Version beinhaltet.
====== Patch submitten ======
Um den Patch einzusenden wird das Programm **send-pr** verwendent.
% send-pr -a patch.txt
Sind mehrere Patches vorhanden kann die //-a patchname.txt// Option mehrmals verwendet werden. Es werden dann alle Dateien an den PR angehängt.
Im sich nun öffnenden //send-pr// Sind schon einige Punkte vorbelegt.