[OpenBSD]

Die Ports & Packages Kollektion

Motivation

OpenBSD ist für sich schon ein ziemlich komplettes System, aber es gibt trotzdem noch eine Menge Software, die man vielleicht gerne zusätzlich haben möchte. Leider gibt es da das Problem wo die Grenze zu ziehen ist: was soll noch dabei sein, genauso wie die gelegentlich auftretenden Export- oder Lizenzbeschränkungen. Da OpenBSD als einzelnes UNIX-artiges Betriebssystem gedacht ist, können einige Dinge einfach gar nicht Teil des Systems sein, wenn es ausgeliefert wird.

Die ports & packages collection(Kollektion,Sammlung) wird KEINER Sicherheitsuntersuchung unterzogen, wie es bei OpenBSD selbst geschieht. Obwohl wir uns bemühen die Qualität der Pakete/packages hoch zu halten, haben wir doch einfach nicht genügend 'Man-Power', um den gleichen Level an Robustheit und Sicherheit sicherzustellen.

Die ports collection, zu Anfang geborgt von FreeBSD, füllt diese Lücke. Das Konzept ist, für jede Software aus dritter Hand ein Makefile zu haben, das enthält:

Diese Information wird in einer Verzeichnishierarchie unterhalb /usr/ports vorgehalten.

Packages sind die ausführbaren (binary) 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 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.

Woher und wie kriegt man packages

Eine grosse Sammmlung vor-kompilierter Pakete ist für die meisten Architekturen verfügbar. Ein package hinzuzufügen geht einfach mit 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 2.8 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/2.8/packages/i386/
    # pkg_add ${PKG_PATH}gimp-1.1.27.tgz

Ports und packages Update für eine neue OpenBSD Version

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 2.8 zu holen:

    $ cd /usr/ports
    $ cvs -q -d anoncvs@some.anon.server:/cvs up -r OPENBSD_2_8 -Pd

Beginnend mit der Version 2.8 wurden ausgewählte Binär-Pakete ebenfalls verfügbar gemacht. Der Dank für die harte Arbeit des Koordinieren der Änderungen am 'stable branch' geht an Christian Weisgerber. Bitte sieh dir die stable packages page an, um etwas über 'updated packages' und wichtige Updates für den 'stable branch' herauszufinden.

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.

Die Verwaltung installierter packages

Die packages(7) manual page enthält nützliche Informationen über verschiedene Wege seine installierten packages zu verwalten, Konflikte zu lösen (Dateien, die bereits existieren) und Abhängigkeiten zu behandeln.

Seit OpenBSD 2.8 solltest du folgendes tun, um ein package upzudaten:

Das ist etwas unbequem, da packages Abhängigkeiten haben können, und du möglicherweise eine grosse Menge von anderen Programmen/packages entfernen musst, um ein update ausführen zu können.

ports benutzen

Wenn ein bestimmes package für deine Architektur nicht existiert, kannst du normalerweise den port trotzdem kompilieren. Ausserdem werden einige User aus verschiedenen Gründen einfach alles aus dem Source kompilieren wollen.

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 CDROM ausliefern, und die mehr Tests als die von den snapshots hinter sich haben. Weitere Informationen gibt es in der ports(7) man page.

Der Lebenszyklus des Ports tree

Der ports tree verändert sich, wie der Rest von OpenBSD, ständig. Der normale Lebenszyklus des ports tree ist wie folgt:

Der Wechsel des Status wird weithin in den Mailinglisten bekannt gemacht. Mailing lists.

Der current ports tree kann nicht mit der zuletzt veröffentlichten Version benutzt werden, sobald das Umschwenken auf das Verfolgen von OpenBSD-current geschehen ist. Das liegt an den Änderungen, insbesondere der am 'port make process', die Code benötigen, den es nur im OpenBSD-current tree gibt.

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. source-changes@openbsd.org oder tech@openbsd.org sind vermutlich unverzichtbar.

Den ports-current tree kann man sich wie folgt holen:

Ports und XFree

Es gibt einige spezielle magische Dinge in den OpenBSD XFree Konfigurationsdateien, die es dem ports-tree erlauben, imake-basierte Anwendungen unter /usr/local zu installieren.

OpenBSD wird zur Zeit aus verschiedenen Gründen nicht mit XFree 4.0.x ausgelifert. Diese 'ports Magie' funktioniert (noch) nicht mit XFree 4.0.x . Dazu musst du den Patch in /usr/ports/infrastructure/patches/patch-xfree-4.0 auf die Standard 'binary' XFree 4.0.x Distribution anwenden.

Zukünftige Versionen von XFree 4.0.x werden vermutlich die nötige Magie enthalten.

Beispiele für die Benutzung des Ports tree

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 2.8 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 mal mirror-distfiles(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 enthält und einige ausgewählte packages. Wenn du nur die distfiles haben willst, musst du sie auf einem anderen Weg herunterladen.

Erzeugen neuer ports

Wenn du daran interessiert bist mitzuhelfen beim Erweitern des OpenBSD ports tree solltest du zuerst porting.html lesen. Diese Seite referenziert die porting Sektion des FreeBSD handbook genauso wie OpenBSD spezifische Verhaltensmassregeln und Hinweise.

Probleme und Kontakte

Wenn du Probleme mit existierenden ports hast oder Information zum Erzeugen neuer ports benötigst schicke eine E-Mail an die OpenBSD ports Mailingliste, ports@openbsd.org. Verbesserungen sind jederzeit willkommen, aber in jedem Fall füge bitte folgendes bei:

Falls ein port nicht richtig erzeugt wird, ist ein komplettes 'build transcript' fast jedesmal notwendig. Einige ports haben Konfigurationsschwierigkeiten mit dem, was sich bereits auf deiner Maschine befindet.
OpenBSD www@openbsd.org
Originally [OpenBSD: ports.html,v 1.46 ]
$Translation: ports.html,v 1.12 2000/12/18 20:18:06 jufi Exp $

$OpenBSD: ports.html,v 1.11 2000/12/18 20:24:37 jufi Exp $