Die FreeBSD Ports Collection

Es 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:

portsnap fetch
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:

portsnap fetch update

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:

cd /usr/ports/ports-mgmt/portmaster
make install clean
rehash

Als erstes können wir mit portmaster eine Übersicht unserer bisher installierten Ports ausgeben:

portmaster -L

Die Ausgabe auf meinem frisch aufgesetzten Server sieht wie folgt aus:

igns:~# portmaster -L
===>>> 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

whereis bash

Den zurückgegebenen Pfad gibst du dann als Parameter an portmaster:

portmaster /usr/ports/shells/bash

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:

portmaster -e /usr/ports/shells/bash

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 /usr/ports/shells/bash

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.

These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Webnews
  • MisterWong
  • Y!GG
  • Technorati
  • Facebook
  • Furl
  • Google Bookmarks
  • Slashdot
  • Ask
  • Hype
  • Netscape
  • Readster
  • YahooMyWeb