- Port (Paketmanagement)
-
Mit Ports werden Software-Paketverwaltungssysteme in der Welt der Unix-Derivate, speziell der BSD-Betriebssysteme bezeichnet.
Ein Port bezeichnet meist ein Verzeichnis, in dem sich alle für die Installation benötigten Dateien sowie das Makefile („Kochrezept“) befinden.
Inhaltsverzeichnis
Geschichte und Verbreitung
Das erste Portsframework wurde von Jordan K. Hubbard 1994 für FreeBSD entwickelt. Später wurde die Idee von OpenBSD, NetBSD (unter dem Namen pkgsrc) und Darwin übernommen. Ports enthielten auch Einzug in die Linuxwelt. So haben Gentoo, CRUX und Arch Linux ports-ähnliche Paketverwaltungssysteme namens Portage, pkgutils und Arch Build System
Technische Funktionsweise
Beim Installieren über das Portssystem wird die Software (wenn möglich) automatisch aus dem Internet heruntergeladen und installiert. Das Portssystem besteht lediglich aus Informationen, woher man die Software bekommt, welche Anpassungen für das jeweilige System notwendig sind und wie die Software zu installieren ist. Außerdem werden alle Dateien, die ein Softwarepaket installiert, aufgezeichnet, so dass das Paket auch wieder deinstalliert werden kann. Ein Paket kann durchaus von mehreren Paketen abhängen, die allesamt nach dem Herunterladen kompiliert, evtl. konfiguriert und dann installiert werden. Dies geschieht nahezu automatisch, evtl. mit benötigten Zusatzangaben des Nutzers.
Ports sind Makefiles mit Zielformaten (targets) für das automatische Herunterladen, Auspacken, Patchen, Kompilieren und Installieren von Softwarepaketen. Ein weiteres target dient dem Erzeugen eines Binärpakets.
FreeBSD-Ports
Unter FreeBSD befindet sich der sogenannte Portstree standardmäßig unter /usr/ports. Der Portstree besteht aus Verzeichnissen, in denen sich Installationsanleitungen, in Kategorien gegliedert, befinden. Unter /usr/ports/Mk liegen verschiedene Makefiles, die von den einzelnen Ports eingebunden werden.
bsd.port.mk
ist das Hauptmakefile, es enthält die vordefinierten targets, so dass die Portmakefiles meist nur einzelne Variablen setzen müssen. Informationen über installierte Ports findet man standardmäßig unter /var/db/pkg.Weblinks
- Kapitel über Ports im deutschen FreeBSD Handbuch
- Dan Langille's Webfrontend zum FreeBSD-Ports-Tree
- Das „Porter's Handbook“ beschreibt, wie man einen neuen Port erstellt.
- Die Tinderbox für die Softwareverteilung unter FreeBSD.
OpenBSD-Ports
OpenBSD stellt, wie FreeBSD, ein Port-System zu Verfügung. Normalerweise werden die dafür nötigen Dateien wie bei FreeBSD unter /usr/ports abgelegt. Ports sind, wie bei den anderen Port-Systemen, in Untergruppen untergliedert um die Suche nach geeigneter Software zu erleichtern. Sollte man dennoch nicht fündig werden so hilft OpenBSD in dem man in das Verzeichnis wechselt in dem die Ports gespeichert sind (in unserem Beispiel also /usr/ports) und dort "make search key=SUCHBEGRIFF" eingibt. Dabei reicht der Suchbegriff von "http" bis zu präzisen Namen der Pakete. Sollte man den Namen einer Software bereits wissen aber nicht mehr wissen wo man sie findet so kann man "make search name=NAME_DER_SOFTWARE" eingeben und bekommt alle möglichen Varianten (FLAVORs) dieser Software.
Da gewisse Software Module beinhalten kann reagiert OpenBSD darauf mit sogenannten FLAVORs. Ein FLAVOR ist nichts anderes als eine Art Compilerflag. Möchte man zum Beispiel eine Software mit PostgreSQL-Unterstützung compilieren (z.B. PHP) so kann man dies mit folgendem Aufruf tun "env FLAVOR=postgresql make install" (wobei "postgre" üblicherweise durch psql abgekürzt wird) oder die Änderung permanent in der Makefile des betreffenden Ports anpassen.
Auch OpenBSD kennt eine globale Makefile wobei man zwischen der Makefile für das Betriebssystem (/etc/mk.conf) und der für das Port-System (//usr/ports/infrastructure/mk/bsd.port.mk) unterscheiden muss.
Generell sorgt das OpenBSD Port-System für eine automatische Installation, die Nachinstallation von benötigter Software (sog. dependencies, dt. Abhängigkeiten) sowie der Übersetzung der Software aus dem Quellcode und der anschließenden Erstellung eines Binärpackets sowie dem Ablegen dieses Packetes in /usr/ports/packages/ . Installierte Pakete werden entweder mittels pkg_info aufgelistet oder sind wie bei FreeBSD unter /var/db/pkg aufgeführt.
Weblinks
NetBSD pkgsrc
NetBSD verwendet den Begriff "Port" für die Portierung von NetBSD auf eine Hardwareplattform, weshalb NetBSD seinen Fork der FreeBSD ports "pkgsrc" genannt hat.
NetBSDs pkgsrc wurde mittlerweile auch auf verschiedene andere Betriebssysteme portiert, unter anderem Linux, Solaris und Mac OS X.
Siehe: pkgsrc
MacPorts
Die MacPorts für Mac OS X (ehemals DarwinPorts) verwenden statt des Programms make ein Tcl-Programm namens "port".
Gentoo Linux Ebuilds
Siehe: Ebuilds
Weblinks
Wikimedia Foundation.