Die Ports- u. Packages-Kollektion wird KEINER Sicherheitsuntersuchung unterzogen, wie es bei OpenBSD selbst geschieht. Obwohl wir uns bemühen, die Qualität der Packages hoch zu halten, haben wir doch einfach nicht genügend Manpower, um den gleichen Level an Robustheit und Sicherheit sicherzustellen.
Die anfangs von FreeBSD geliehene Portskollektion füllt diese Lücke. Das Konzept ist, für jede Software aus dritter Hand ein Makefile zu haben, das Folgendes enthält:
Packages sind die ausführbaren (binären) Versionen der Ports. Ein kompilierter Port wird zum Package, das im System mittels pkg_add(1) registriert werden kann.
Packages sehen aus wie einfache .tgz-Archive, aber sie
sollten immer mit Hilfe von pkg_add(1) hinzugefügt werden, da es noch weitere Informationen
geben könnte, die nur pkg_add(1) sauber verarbeiten kann.
Tipp: Du kannst zwischen Packages und .tgz-Archiven mit
Hilfe von pkg_info(1) unterscheiden.
pkg_add pkgname. Wenn du Packages immer von einer
einzigen Quelle beziehst (einem Packagerepository), setze PKG_PATH auf
diese Repository-URL, um Abhängigkeiten aufzulösen.
Um zum Beispiel das Gimp-Package für das 4.3-Release auf einer i386-Maschine direkt von der FTP-Site (inklusive der Abhängigkeiten) zu installieren, gib Folgendes ein:
# export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.3/packages/i386/
# pkg_add gimp
Zum ersten Mal gab es in der Version 2.7 einen stable-Branch für den Ports-Tree.
Um jetzt zum Beispiel den stable-Branch für das 4.3-Release zu holen:
$ cd /usr/ports
$ cvs -q -d anoncvs@some.anon.server:/cvs up -r OPENBSD_4_3 -Pd
Beginnend mit der Version 2.8 wurden ausgewählte Packages ebenfalls verfügbar gemacht. Bitte sieh dir die Seite Stable Packages an, um etwas über aktualisierte Packages und wichtige Updates für den stable-Branch herauszufinden. Wenn Du Sicherheitsankündigungen bekommen möchtest, kannst du dich auf der ports-security-Mailingliste eintragen.
Packagenamen werden immer verändert, sobald ein Package auf neueren Stand gebracht oder sonst wie verändert wird, um jegliche Verwirrung zwischen einem Package der Originalversion und einem Package zu vermeiden, in dem z. B. ein Fehler behoben wurde.
Seit OpenBSD 3.9 stellt
pkg_add(1)
einen Updatemechanismus bereit.
Um ein Package (und dessen Abhängigkeiten) zu aktualisieren muss der
PKG_PATH auf eine URL zeigen, unter der Updates zu finden sind.
Benutze dann folgenden Befehl:
pkg_add -ui pkgname.
Du kannst die offizielle Version per FTP aus dem Verzeichnis pub/OpenBSD/[Version] (dabei ist [Version] die Versionsnummer) von allen FTP-Mirrors holen. Die Releaseversionen sind die, die wir mit unserer CD-ROM ausliefern und gründlicher als die Snapshots getestet wurden. Weitere Informationen gibt es in der ports(7)-Manualseite.
Der Ports-Tree verändert sich ständig - wie der Rest von OpenBSD.
Der current-Ports-Tree kann nicht mit der zuletzt veröffentlichten Version benutzt werden. Das hängt mit Änderungen zusammen (typischerweise am port-make-Prozess), die Quelltexte des Sourcetrees von OpenBSD-current benötigen.
Der Ports-Tree arbeitet eigenständig. Die Aktualisierung eines
einzelnen Verzeichnisses muss nicht zwangsläufig klappen, da
Packageabhängigkeiten dich dazu zwingen können, große Teile deines
Ports-Trees zu aktualisieren und neu zu kompilieren. Es wird daher
allgemein empfohlen ports-current nicht zu folgen - es sei denn, man ist
bereit, sich mit verschiedenen Problemen herumzuschlagen.
Mailinglisten wie z. B.
ports-changes@openbsd.org oder
tech@openbsd.org sind vermutlich unverzichtbar.
Es wird dir geraten, auf einer Produktionsmaschine ports-stable zu verfolgen und einzusetzen: Wir werden versuchen, den stable-Ports-Tree in Bezug auf Probleme auf dem Laufenden zu halten, genauso mit Binarys.
Denk daran, dass verschwundene Distfiles kein Problem darstellen, da ftp.openbsd.org das komplette Repository vorhält. Nicht einmal die Änderung von Prüfsummen ist ein Problem: führe das Kommando
make checksum REFETCH=true
aus, um sicherzustellen, dass du die korrekte Distfile für deinen
Ports-Tree bekommst.
Für Definitionen von current und stable siehe
OpenBSDs Flavors.
Eine Liste der täglichen Änderungen an ports und ports-current ist verfügbar.
Den current-Ports-Tree kann man sich wie folgt holen:
Gehen wir davon aus, du hast einen Ports-Tree und willst das Archivierungswerkzeug unzip installieren und kompilieren. Diese Befehle sollten dir weiterhelfen können:
% cd /usr/ports/archivers/unzip
% su
# make install clean
# exit
Einfach, oder? Insbesondere, wenn man bedenkt, was alles im Hintergrund
passierte:
Mit OpenBSD 3.0 erzeugen die meisten Ports während der Installation Packages.
Wenn Ports erzeugt werden, wird das /usr/ports/distfiles-Verzeichnis mit Programmquelltext gefüllt und /usr/ports/packages wird mit Packages gefüllt. Anwender mit geringer Bandbreite sollten sich mirroring-ports(7) ansehen, um einen effizienten Weg kennenzulernen, alle Distfiles auf einmal herunterzuladen. In OpenBSD-current kannst du das Skript /usr/ports/infrastructure/fetch/clean-old benutzen, um alte Distfiles zu finden. Denk dran, dass die OpenBSD-CD nur den Ports-Tree und einige ausgewählte Packages enthält. Wenn du nur die Distfiles haben willst, musst du sie auf einem anderen Weg herunterladen.
Der Ports-Tree hat viele Funktionalitäten für den fortgeschrittenen Anwender, die ihn auch nach der Basisinstallation zu einem wertvollen Werkzeug machen. Fortgeschrittene Anwender wollen sich möglicherweise mit den Makefiles beschäftigen (sie sollten zuerst die make(1)-Manualseite lesen) oder auch mit den verschiedenen Variablen der make-Kommandozeile oder in /etc/mk.conf. Diese Variablen sind detailliert in der bsd.port.mk(5)-Manualseite beschrieben, so wie in den unten erwähnten Porting-Dokumenten.
Wenn du gerne mithelfen möchtest, den OpenBSD-Ports-Tree zu erweitern, solltest du zuerst porting.html lesen. Diese Seite verweist auf das FreeBSD Porter's Handbook genauso wie auf OpenBSD-spezifische Verhaltensmaßregeln und Hinweise.
Die Portskollektion ist ein Projekt von Freiwilligen. Manchmal hat das Projekt einfach nicht genügend Entwicklerressourcen, um alles auf dem neuesten Stand zu halten. Die Entwickler kümmern sich um die Dinge, die sie interessant finden und in ihrer Umgebung testen können. Deine Spenden entscheiden darüber, auf welchen Plattformen die Ports getestet werden können.
Einige einzelne Ports können daher der allgemein üblichen Mainstream-Version hinterherhinken. Die Portskollektion könnte z. B. eine Version haben, die noch von Januar ist, obwohl die Entwickler im Mai eine neue Version herausgebracht haben. Oftmals ist das Absicht: die neue Version kann z. B. Probleme auf OpenBSD erzeugen, die der Maintainer erst lösen will, oder die neue Version ist einfach nur schlechter als die alte: OpenBSD kann auch ganz andere Ziele als die Mainstream-Entwickler in anderen Projekten haben, wodurch manchmal Features-, Design- oder Implementationsentscheidungen getroffen werden, die aus Sicht der OpenBSD-Entwickler nicht wünschenswert sind. Außerdem kann das Update verzögert sein, weil die neue Version nichts wirklich Neues bringt.
Wenn du unbedingt die neue Version eines Ports brauchst, kannst du den MAINTAINER des Ports darum bitten, ein Update durchzuführen (siehe unten wie man herausfindet, wer der Maintainer ist). Wenn du Patches schicken kannst, dann umso besser. Saubere Patches kannst du mit Hilfe der Dokumentation über das Erzeugen von Ports erstellen.
Wenn du Probleme mit einem bereits existierenden Port hast, schicke bitte eine E-Mail an den Portmaintainer. Um herauszufinden, wer der jeweilige Maintainer des Ports ist, gib z. B. Folgendes ein:
% cd /usr/ports/archivers/unzip
% make show=MAINTAINER
Wenn es keinen Maintainer gibt oder du ihn nicht erreichen kannst,
schicke eine E-Mail an die OpenBSD-Ports-Mailingliste
ports@openbsd.org. Bitte benutze
die misc@openbsd.org-Mailingliste nicht für Fragen über Ports.
Verbesserungen sind jederzeit willkommen, aber in jedem Fall füge bitte
Folgendes bei:
uname -a,
% cd /usr/ports/archivers/unzip
% su
# mkdir -p ~/portslogs
# make clean install 2>&1 | /usr/ports/infrastructure/build/portslogger \
~/portslogs
Danach solltest du eine Logdatei deines Builds in deinem
~/portslogs-Verzeichnis haben, das du dem Portmaintainer schicken
kannst. Stelle aber sicher, dass du keine speziellen Optionen in deinem
Build benutzt, z. B. in /etc/mk.conf.
Alternativ dazu kannst du