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.
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/
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.
Ä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
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
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.
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.