Die FreeBSD Ports Collection
Thursday, August 7th, 2008Es gibt verschiedene Werkzeuge, um die Ports Collection auf dem aktuellen Stand zu halten und Software zu installieren. Ich setze auf relativ neue Programme, die simpler und schneller arbeiten als ihre etwas angestaubten Vorgänger. Namentlich sind das portsnap und portmaster.
Portsnap ist dafür zuständig unsere Ports Collection aktuell zu halten. Wenn das System gerade frisch aufgesetzt wurde, kann die Ports Collection wie folgt besorgt werden:
mkdir /usr/ports
portsnap extract
Dadurch wird der Ports Tree in gepackter Form auf den Server geladen. Außerdem lege ich das Verzeichnis /usr/ports an (möglicherweise geschieht das mittlerweile automatisch). extract sorgt dann dafür, dass der Ports Tree in /usr/ports abgelegt wird.
In Zukunft kann der Ports Tree dann auch mit portsnap aktualisiert werden:
Um nun die Abhängigkeiten von Ports und ihre Aktualisierung zu verwalten, setze ich portmaster ein. Dieses Werkzeug arbeitet nur mit den Informationen, die in /usr/ports stehen und hat kein eigenes DB-Backend. Das ist mir sehr sympathisch, denn damit bleibt eine potentielle Inkonsistenz direkt außen vor. Außerdem ist portmaster ziemlich fix bei der Arbeit. Auf zur Installation:
make install clean
rehash
Als erstes können wir mit portmaster eine Übersicht unserer bisher installierten Ports ausgeben:
Die Ausgabe auf meinem frisch aufgesetzten Server sieht wie folgt aus:
===>>> Root ports (No dependencies, not depended on)
===>>> libtool-1.5.24
===>>> portmaster-2.1
===>>> 2 root ports
===>>> Trunk ports (No dependencies, are depended on)
===>>> libiconv-1.11_1
===>>> 1 trunk ports
===>>> Branch ports (Have dependencies, are depended on)
===>>> gettext-0.16.1_3
===>>> 1 branch ports
===>>> Leaf ports (Have dependencies, not depended on)
===>>> bash-3.2.33
===>>> 1 leaf ports
===>>> 5 total installed ports
===>>> There are no new versions available
Software lässt sich nun ganz simpel mit portmaster nachinstallieren. Wenn du also beispielsweise ebenfalls die Bash nachinstallieren willst, suchst du als erstes das richtige Verzeichnis in /usr/ports mit
Den zurückgegebenen Pfad gibst du dann als Parameter an portmaster:
portmaster kümmert sich nun um das Bauen der Abhängigkeiten und der gewünschten Software. Dir bleibt Zeit, um dir einen Kaffee (oder wie ich einen Tee) zu holen.
Mit dem Parameter -e lässt sich Software inklusive nicht mehr benötigter Abhängigkeiten wieder entfernen:
Wenn die Ausgabe von portmaster -L dir Kandidaten auflistet, bei denen eine neue Version verfügbar ist und du diesen Versionssprung mitmachen möchtest, dann gehst du genau wie beim Installieren eines Ports vor. Nehmen wir an, wir möchten unsere Bash aktualisieren, dann rufen wir portmaster wieder wie folgt auf:
portmaster überprüft wieder alle Abhängigkeiten, aktualisiert Abhängigkeiten wenn nötig und aktualisiert dann das angegebene Paket.
Alternativ kann portmaster mit dem Parameter -a aufgerufen werden. Daraufhin werden alle Pakete, die aktualisiert werden können, auf den neusten Stand gebracht.
