Die ports & 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 'Man-Power', um den gleichen Level an Robustheit und Sicherheit sicherzustellen.
Die ports Kollektion, anfangs geliehen von FreeBSD, 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 zur package, die im System mittels pkg_add(1) registriert werden kann.
Packages sehen aus wie einfache .tgz Bündel, 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.
Tip: du kannst zwischen packages und .tgz Bündeln mit Hilfe von
pkg_info(1).
unterscheiden.
pkg_add pkgname.tgz.
Wenn du packages immer aus einer einzigen Quelle beziehst (ein package repository),
setze PKG_PATH auf diese repository URL, um Abhängigkeiten aufzulösen.
Um zum Beispiel das gimp package für die Version 3.6 auf einer i386 Maschine direkt von der ftp-Site (inklusive von Abhängigkeiten) zu installieren, gib folgendes ein:
# setenv PKG_PATH ftp://ftp.openbsd.org/pub/OpenBSD/3.6/packages/i386/
# pkg_add ${PKG_PATH}gimp-1.2.5.tgz
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 die Version 3.6 zu holen:
$ cd /usr/ports
$ cvs -q -d anoncvs@some.anon.server:/cvs up -r OPENBSD_3_6 -Pd
Beginnend mit der Version 2.8 wurden ausgewählte Binär-Pakete ebenfalls verfügbar gemacht. Bitte sieh dir die stable packages Seite an, um etwas über 'updated 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.
Package Namen werden immer verändert, sobald ein Paket auf neueren Stand gebracht oder sonstwie verändert wird, um jegliche Verwirrung zwischen einem Paket der Original-Version und einem Paket zu vermeiden, in dem z. B. ein Bug gefixed wurde.
Seit OpenBSD 2.8 solltest du folgendes tun, um ein package upzudaten:
Du kannst die offizielle Version per FTP aus dem pub/OpenBSD/[version] (dabei ist [version] die Versionsnummer) Verzeichnis von allen FTP Mirror Sites holen. Die 'release versions' sind die, die wir mit unserer CD-ROM ausliefern, und die mehr Tests als die von den snapshots hinter sich haben. Weitere Informationen gibt es in der ports(7) man page.
Der ports tree verändert sich, wie der Rest von OpenBSD, ständig.
Der current ports tree kann nicht mit der zuletzt veröffentlichten Version benutzt werden. Das hängt mit Änderungen, typischerweise des port make Prozesses, zusammen, die code basierend auf dem OpenBSD-current Sourcetree benötigen.
Der ports tree arbeitet als einzelnes Wesen. Das Updaten eines einzelnen Verzeichnisses muss nicht
zwangsläufig klappen, da package-Abhängigkeiten dich dazu zwingen können, grosse Teile
deines port trees upzudaten 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 Produktions Maschine ports-stable zu verfolgen und einzusetzen: Wir werden versuchen, den stable ports tree in Bezug auf Probleme auf dem laufenden zu halten, genauso mit Binaries.
Denk daran, dass verschwundene distilfes kein Problem darstellen, da ftp.openbsd.org das komplette repository vorhält. Nicht einmal das Ändern von Checksummen ist ein Problem: führe das Kommando
make checksum REFETCH=true
aus, um sicherzustellen, dass du das 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 ports-current tree kann man sich wie folgt holen:
Gehen wir davon aus du hast einen ports tree und willst das Archivierungs-Werkzeug unzip installieren und kompilieren. Du solltest etwas wie das hier tun können:
% cd /usr/ports/archivers/unzip
% su
# make
# make install
# exit
Einfach, oder? Insbesondere, wenn man bedenkt, was alles im Hintergrund passiert ist:
Mit OpenBSD 3.0 erzeugen die meisten der ports beim Installieren packages.
Wenn ports erzeugt werden, wird das /usr/ports/distfiles Verzeichnis mit Programmquellcode gefüllt, und /usr/ports/packages wird mit 'binary packages' gefüllt. User 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 entdecken. Denk dran, daß die OpenBSD CD nur den ports tree und einige ausgewählte packages enthät. Wenn du nur die distfiles haben willst, musst du sie auf einem anderen Weg herunterladen.
Der ports tree hat viele Features für den fortgeschrittenen User, die ihn auch nach der Basis-Installation zu einem wertvollen Werkzeug machen. Fortgeschrittene User wollen sich möglichweise mit den Makefiles beschäftigen (sie sollten zuerst die make(1) Manual page 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) Manual page beschrieben, so wie in den unten erwähnten porting documents.
Wenn du daran interessiert bist mitzuhelfen beim Erweitern des OpenBSD ports tree, solltest du zuerst porting.html lesen. Diese Seite referenziert das FreeBSD Porter's Handbook genauso wie OpenBSD spezifische Verhaltensmassregeln und Hinweise.
Die ports collection ist ein Projekt von Freiwilligen. Manchmal hat das Projekt einfach nicht genügend Entwickler-Ressourcen, 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 hinter der allgemein üblichen Mainstream-Version hinterherhinken. Die ports collection 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 schlicht schlechter als die alte: OpenBSD kann auch ganz andere Ziele als die Mainstream Entwickler in anderen Projekten haben, was manchmal zu Features, Design- oder Implementierungsentscheidungen führt, 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 port maintainer. 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 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 ein Logfile deines build in deinem ~/portslogs Verzeichnis haben,
das du dem port maintainer schicken kannst. Stelle aber sicher, dass du keine speziellen
Optionen in deinem build benutzt, z. B. in /etc/mk.conf.
Alternativ dazu kannst du