Wie man als normaler Nutzer einen FreeBSD-Port baut
Das FreeBSD Handbuch für Portierungen ist eigentlich ziemlich klar. Allerdings funktionieren die Aktionen nur als root. Entwickeln mit solchen Rechnten mag ich nicht. Im IRC und den Mailinglisten heißt es, das sei halt so. Man könne ja mit pourdriere testen. Allerdings benötigt das ebenfalls root-Rechte.
Folgt man dem Handbuch, so ist das alles sehr einfach: Directory anlegen, Makefile schreiben und pkg-descr ausfüllen.
Der nächste Schritt ist das Herunterladen der Quellen. Schon da hatte ich erste Probleme, denn eigentlich wollte ich die Software nicht nochmal separat veröffentlichen. Aber die Idee des Ports ist halt, dass es um die Einbindung von Fremdsoftware geht. Und die liegt halt an anderer Stelle. Also lege ich eine extra Veröffentlichung an.
Damit der Port weiß, dass er die richtigen Dateien läd, werden Prüfsummen erstellt.
$ make makesum => parpd-1.1.tgz doesn't seem to exist in /usr/ports/distfiles/. => /usr/ports/distfiles/ is not writable by you; cannot fetch. *** Error code 1
Logisch. Ich bin ja nicht root auf dem System. Und in das Standardverzeichnis darf ich nicht schreiben. Was nun?
In /usr/ports/Mk/bsd.port.mk steht:
# DISTDIR - Where to search for and store copies of original sources # Default: ${PORTSDIR}/distfiles
Das kann ich ja umstellen, vielleicht geht's dann?
$ export DISTDIR=/tmp/myport $ make makesum => parpd-1.1.tgz doesn't seem to exist in /tmp/myport/. => Attempting to fetch ftp://ftp.iks-jena.de/pub/mitarb/lutz/parpd/parpd-1.1.tgz parpd-1.1.tgz 100% of 16 kB 10 MBps 00m00s $ cat distinfo TIMESTAMP = 1510327772 SHA256 (parpd-1.1.tgz) = 95318905767c1123eab87efa4fa664a57e5ed8f697802c6b7d5d0799ad8ea6e6 SIZE (parpd-1.1.tgz) = 17197
Na also! Geht doch.
Alle weiteren Schritte funktionieren dann als Nutzer ohne weitere Probleme.
Nunja, ein Problem gibt es doch noch. Hat man nämlich DEVELOPER=yes in dem make Optionen gesetzt, so erscheint bei jeden Aufruf von make
/!\ parpd-1.1: Makefile warnings, please consider fixing /!\ Not validating first entry in CATEGORIES due to being outside of PORTSDIR. Please ensure this is proper when committing.
Ist ja auch klar. Natürlich bin ich als normaler Nutzer nicht im originalen PORTSDIR tätig. Die Meldung kann man getrost ignorieren.