OpenBSD/ Pakete und Ports

Pakete und Ports Bearbeiten

Dieses Kapitel beschreibt, wie man Software einspielt, diese verwaltet und das System auf dem neusten Stand hält. Auf den Installations-CDs finden sie Pakete ebenso wie im Netz. Unter der Adresse ftp://ftp.openbsd.org/pub/OpenBSD/4.4/ftplist finden sie eine Datei mit Spiegelservern aus der Umgebung. Nutzen sie bitte einen Spiegelserver, statt Pakete direkt von ftp.openbsd.org herunterzuladen. Wir referenzieren einen Spiegelserver in diesem Kapitel als SPIEGELSERVER. Setzen sie dann den Namen dieses Servers an die Stelle. Das Protokoll stellen wir immer vorweg damit klar ist, ob ftp oder http benutzt werden soll. Schauen sie sich ihren Spiegelserver ruhig genau an. Dort gibt es Songs, Programme, Beschreibungen und Iso-Images.

Arbeit mit Paketen Bearbeiten

Es gibt zwei verschiedene Sorten Pakete. Die einen haben sie bei der Installation schon kennengelernt, nämlich die Sets. Diese beinhalten gruppiert eine Reihe Programme und Dateien, die man während der Installation benötigt, um ein benutzbares System mit den angegebenen Eigenschaften zu erhalten. Beispielsweise konnte man so ohne viel Mühe BSD-Spiele installieren.

Die andere Sorte Pakete sind einzelne Programme, die auf die gleiche Weise verteilt werden, jedoch anders installiert werden.

Sets nachinstallieren Bearbeiten

Installationspakete, wie zum Beispiel man44.tgz, sind einfache gzip(1)te tar(1)-Archive, die man im Wurzelverzeichnis entpacken muss. Hierbei ist es wichtig, die Dateirechte der im Archiv vorliegenden Dateien zu bewahren. Hat man beispielsweise game44.tgz bei der Installation vergessen, besorgt man sich diese Datei von einem Spiegelserver und installiert sie wie folgt:

root@puffy:~ # cd /
root@puffy:/ # tar xzvpf game44.tgz -C /
... Ausgabe, was entpackt wird ...
root@puffy:/ #

Eine Alternative ist es selbstverständlich, den Installationsprozess neu zu starten, an passender Stelle Upgrade anzugeben und dort die Sets nachzuinstallieren.

Sets sind darüber hinaus eine praktische Sache, wenn man mehrere gleiche Systeme[1] installieren möchte. Man erstellt dann einen Beispielrechner und archiviert alle nach der Grundinstallation geänderten Dateien in eine Datei namens site44.tgz, fügt gegebenenfalls Installationsskripte hinzu. Diese Datei macht man auf den anderen Rechnern verfügbar und installiert dort während der Grundinstallation oder danach dieses selbsterstellte Set.

Programmpakete Bearbeiten

Programmpakete werden ebenfalls in gezippten Archiven verteilt und liegen auf den Spiegelservern oder auf den Installationsmedien. Die Dateinamen enthalten den Namen des Programmes wie auch seine Versionsnummer, so ist joe-3.5.tgz ein Editor namens joe[2] in der Version 3.5. Programmpakete werden mit pkg_add(1) installiert, mit pkg_delete(1) wieder entfernt. Sie enthalten einige besondere Dateien. Mit pkg_info(1) können sie sich die Beschreibungsdatei des Programmpaketes anzeigen lassen.

Den Editor joe installiert man wie folgt, wobei wir uns erst seine Beschreibungsdatei ansehen. Anschließend wird er wieder entfernt:

root@puffy:~ # pkg_info ftp://SPIEGELSERVER/pub/OpenBSD/4.4/packages/i386/joe-3.5.tgz
Information for ftp://SPIEGELSERVER/pub/OpenBSD/4.4/packages/i386/joe-3.5.tgz

Comment:
Joe's Own Editor
... weitere Ausgabe ...

root@puffy:~ # pkg_add ftp://SPIEGELSERVER/pub/OpenBSD/4.4/packages/i386/joe-3.5.tgz
joe-3.5: complete
root@puffy:~ # pkg_delete joe-3.5.tgz
joe-3.5: complete
Clean shared items: complete
root@puffy:~ # 

Statt immer wieder die Spiegelserver-URL hinzuschreiben, können wir auch eine Umgebungsvariable setzen. Wir brauchen dann den Dateinamen des Programmes, das wir installieren wollen, auch nicht auszuschreiben. Abhängiggkeiten werden dabei auch vollständig aufgelöst. Wir demonstrieren das hier am Beispiel wget, einem Programm, um entfernte Dateien lokal zu übertragen:

root@puffy:~ # export PKG_PATH=ftp://SPIEGELSERVER/pub/OpenBSD/4.4/packages/i386/
root@puffy:~ # pkg_add wget
libiconv-1.12: complete
gettext-0.17: complete
wget-1.11.3: complete
root@puffy:~ # 

Arbeit mit Ports Bearbeiten

Ports sind Sammlungen von Skriptdateien, mit deren Hilfe Quellpakete von Programmen heruntergeladen werden und auf der lokalen Maschine kompiliert werden. Das Ziel eines solchen Prozesses ist ein Paket (wie oben beschrieben), welches automatisch installiert wird. Ports wurden ursprünglich von einem anderen BSD namens FreeBSD[3] übernommen.

Wenn Sie vor der Wahl stehen, Pakete oder Ports einzusetzen, sollten sie sich immer für Pakete entscheiden. Das ist einfacher und geht schneller.

OpenBSD liegt in verschiedenen Flavors[4] vor. Diese sind Release, Stable und Current. Release wird alle sechs Monate auf CD-Rom mit einer neuen Versionsnummer herausgegeben. Stable enthält Release und einige Verbesserungen. Current ist die aktuelle Entwicklungsversion von OpenBSD. Wenn Sie selbst an der Entwicklung von OpenBSD teilnehmen wollen, sei es durch das Erstellen von Paketen und Ports oder durch Erweiterungen am Betriebssystemkern, sollten sie Current benutzen. Sonst ist Release oder Stable für sie geeignet.

In dieser Anleitung beschäftigen wir uns rein mit Ports aus dem Release-Flavor von OpenBSD. Mehr Informationen über Ports erfahren sie in der ports(7)-Manpage und unter http://www.openbsd.org/faq/de/faq15.html#PortsFetch

Ports einspielen Bearbeiten

Die Ports aus dem Release-Flavor können sie von den gekauften CD-Roms, per wget oder via ftp von ftp://ftp.SPIEGELSERRVER/pub/OpenBSD/4.4/ beziehen. Die Datei heißt dort schlicht ports.tar.gz.

root@puffy:~ # cd /tmp
root@puffy:/tmp # wget ftp://ftp.SPIEGELSERVER/pub/OpenBSD/4.4/ports.tar.gz
... Ausgabe, was geholt wird ...
root@puffy:/tmp # cd /usr
root@puffy:/usr # tar xzvf /tmp/ports.tar.gz
... Ausgabe, was entpackt wird ...
root@puffy:/usr #

Wollen sie ein anderes Flavor benutzen, müssen sie es aus dem CVS-Archiv holen.

Damit sind die Ports eingespielt, schauen sie sich im entstandenen /usr/ports-Verzeichnisbaum einmal um.

Um ein Programm zu finden, sollte man einen Teil des Dateinamens kennen, wie wir hier am Beispiel "Python[5]" demonstrieren:

root@puffy:/usr/ports # make search key=python | grep "Port:.*python-2"
Port:   python-2.3.6p6
Port:   python-2.4.4p7
Port:   python-2.5.2p4
Port:   gpsd-python-2.37p0
root@puffy:/usr/ports #

make(1) durchsucht hier den Ports-Verzeichnisbaum nach dem Schlüsselwort "python". Die Ausgabe wird durch grep(1) gefiltert[6], nur Zeilen, die "Port:" beinhalten[7], gefolgt von einer beliebigen Zeichenkette gefolgt von der Zeichenkette "python-2" werden ausgegeben.

Programme erstellen Bearbeiten

Man erstellt ein Programm aus den Ports, in dem man in das Verzeichnis wechselt und make install aufruft. Wir demonstrieren das hier am Beispiel einer Terminalemulation namens screen(1), einem sehr nützlichen Programm, wenn man mehrere Textfenster benötigt.

root@puffy:~ # cd /usr/ports/misc/screen
root@puffy:/usr/ports/misc/screen # make install
... Archiv wird geholt ...
... Screen wird kompiliert ...
... Screen wird installiert ...
root@puffy:/usr/ports/misc/screen #

Schon ist screen installiert. Bei größeren Programmen werden zuerst Abhängigkeiten aufgelöst, je nach Programm kann das Erstellen dann Stunden dauern. Programme, die im Laufe der Kompilation erzeugt wurden, wird man mit einem beherzten make clean wieder los. Die eigentlichen Programmdateien gehen dabei nicht verloren.

Programme entfernen Bearbeiten

Ein Programm löscht man, in dem man in das Ports-Verzeichnis geht und dort make uninstall eingibt:

root@puffy:~ # cd /usr/ports/misc/screen
root@puffy:/usr/ports/misc/screen # make uninstall
===> Deinstalling for screen-4.0.3p1
screen-4.0.3p1: complete
Clean shared items: complete
root@puffy:/usr/ports/misc/screen #

Damit ist das Programm entfernt.

Update Bearbeiten


  1. Auf den Installationsprozess mehrerer gleicher Computer geht http://www.openbsd.org/faq/de/faq4.html#Multiple ein.
  2. Mehr über joe erfahren Sie im Wikibook Linux-Praxisbuch.
  3. Siehe http://www.freebsd.org/de/
  4. Das deutsche Wort "Geschmacksrichtungen" trifft es nicht ganz
  5. Mehr über Python unter unixartigen Betriebssystemen gibt es im Wikibuch Python_unter_Linux zu lesen
  6. Das Pipe-Symbol "|" leitet die Ausgabe des einen Programms an die Eingabe des anderen weiter
  7. hierbei handelt es sich um einen so genannten "regulären Ausdruck". Im Wikibuch Reguläre Ausdrücke erfahren sie mehr darüber