5.5. Benutzen der Ports-Sammlung

Die folgenden Abschnitte stellen die grundlegenden Anweisungen vor, um Anwendungen aus der Ports-Sammlung auf Ihren Rechner zu installieren oder zu löschen. ports(7) enthält eine Auflistung aller verfügbaren make-Targets und Umgebungsvariablen.

5.5.1. Installation der Ports-Sammlung

Bevor Sie einen Port installieren können, müssen Sie zuerst die Ports-Sammlung installieren, die aus Makefiles, Patches und Beschreibungen besteht. Die Ports-Sammlung wird für gewöhnlich unter /usr/ports installiert.

Bei der FreeBSD-Installation hatten Sie in sysinstall die Möglichkeit, die Ports-Sammlung zu installieren. Wenn Sie die Sammlung damals nicht installiert haben, können Sie das mit den folgenden Anweisungen nachholen:

Installieren mit CVSup

Dies ist eine schnelle Methode, um die Ports-Sammlung zu installieren und zu aktualisieren. CVSup wird im Abschnitt Benutzen von CVSup des Handbuchs beschrieben.

Anmerkung: Die im Basissystem enthaltene Variante des CVSup-Protokolls heißt csup.

Achten Sie darauf, dass das Verzeichnis /usr/ports leer ist, bevor Sie csup das erste Mal ausführen! Haben Sie die Ports-Sammlung zuvor schon aus einer anderen Quelle installiert, wird csup bereits aus dem Repository entfernte Patches nicht aus der lokalen Kopie der Ports-Sammlung löschen.

  1. Rufen Sie csup auf:

    # csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
    

    Ersetzen Sie cvsup.FreeBSD.org durch einen CVSup-Server in Ihrer Nähe. Eine vollständige Liste der CVSup-Spiegel finden Sie im Abschnitt CVSup-Server des Handbuchs.

    Anmerkung: Sie sollten sich eine an Ihre Bedürfnisse angepasste ports-supfile erstellen, um so beispielsweise zu vermeiden, dass Sie bei jedem Aufruf von CVSup wieder die Parameterliste übergeben müssen.

    1. Dazu kopieren Sie zuerst als root die Datei /usr/share/examples/cvsup/ports-supfile nach /root oder in Ihr Heimatverzeichnis.

    2. Danach müssen Sie die Datei ports-supfile anpassen.

    3. Dazu ersetzen Sie cvsup.FreeBSD.org durch einen CVSup-Server in Ihrer Nähe. Eine vollständige Liste der CVSup-Spiegel finden Sie im Abschnitt CVSup-Server des Handbuchs.

    4. Nun können Sie csup mit folgender Syntax starten:

      # csup -L 2 /root/ports-supfile
      
  2. Mit csup(1) können Sie später auch die Ports-Sammlung aktualisieren. Die installierten Ports werden mit diesem Kommando allerdings nicht aktualisiert.

Installieren mit Portsnap

Bei Portsnap handelt es sich um ein alternatives System zur Distribution der Ports-Sammlung. Eine detaillierte Beschreibung von Portsnap finden Sie im Abschnitt Portsnap: Ein Werkzeug zur Aktualisierung der Ports-Sammlung des Handbuchs.

  1. Laden Sie einen komprimierten Snapshot der Ports-Sammlung in das Verzeichnis /var/db/portsnap herunter. Danach können Sie die Internetverbindung trennen, wenn Sie dies wünschen.

    # portsnap fetch
    
  2. Wenn Sie Portsnap das erste Mal verwenden, müssen Sie den Snapshot nach /usr/ports extrahieren:

    # portsnap extract
    

    Ist die Ports-Sammlung bereits installiert, und Sie wollen diese nur aktualisieren, führen Sie stattdessen folgenden Befehl aus:

    # portsnap update
    

Installieren mit sysinstall

Nicht zuletzt ist es auch möglich, die Ports-Sammlung über sysinstall zu installieren. Beachten Sie dabei aber, dass bei dieser Methode nicht die aktuellste Version der Ports-Sammlung, sondern die Version, die zum Zeitpunkt der Veröffentlichung der installierten FreeBSD-Version aktuell war, installiert wird. Haben Sie Zugriff auf das Internet, so sollten Sie daher stets eine der weiter oben beschriebenen Methoden verwenden, um die Ports-Sammlung zu installieren.

  1. Führen Sie als root sysinstall aus:

    # sysinstall
    
  2. Wählen Sie den Punkt Configure aus und drücken Sie Enter.

  3. Wählen Sie dann Distributions aus und drücken Sie Enter.

  4. In diesem Menü wählen Sie ports aus und drücken die Leertaste.

  5. Danach wählen Sie Exit aus und drücken Enter.

  6. Legen Sie nun ein geeignetes Installationsmedium, wie CD-ROM oder FTP, fest.

  7. Wählen Sie nun Exit aus und drücken Enter.

  8. Verlassen Sie sysinstall mit X.

5.5.2. Ports installieren

Was ist mit einem “Gerüst” im Zusammenhang mit der Ports-Sammlung gemeint? In aller Kürze: ein Gerüst eines Ports ist ein minimaler Satz von Dateien, mit denen das FreeBSD-System eine Anwendung sauber übersetzen und installieren kann. Ein jeder Port beinhaltet:

Einige Ports besitzen noch andere Dateien, wie pkg-message, die vom Portsystem benutzt werden, um spezielle Situationen zu handhaben. Wenn Sie mehr über diese Dateien oder das Port-System erfahren sollen, lesen Sie bitte das FreeBSD Porter's Handbook.

Ein Port enthält lediglich Anweisungen, wie der Quelltext zu bauen ist, nicht aber den eigentlichen Quelltext. Den Quelltext erhalten Sie von einer CD-ROM oder aus dem Internet. Quelltexte werden in einem Format nach Wahl des jeweiligen Software-Autors ausgeliefert. Häufig ist dies ein gezipptes Tar-Archiv, aber es kann auch mit einem anderen Tool komprimiert oder gar nicht komprimiert sein. Der Quelltext, in welcher Form er auch immer vorliegen mag, wird “Distfile” genannt. Die zwei Methoden, mit denen ein Port installiert wird, werden unten besprochen.

Anmerkung: Zum Installieren von Ports müssen Sie als Benutzer root angemeldet sein.

Warnung: Stellen Sie sicher, dass die Ports-Sammlung aktuell ist, bevor Sie einen Port installieren. Informieren Sie sich vorher zusätzlich unter http://vuxml.FreeBSD.org/ über mögliche Sicherheitsprobleme des zu installierenden Ports.

Vor der Installation kann portaudit eine neue Anwendung automatisch auf Sicherheitslöcher prüfen. Das Werkzeug befindet sich in der Ports-Sammlung (ports-mgmt/portaudit). Vor der Installation einer neuen Anwendung sollten Sie mit portaudit -F die Sicherheitsdatenbank aktualisieren. Die täglich laufende Sicherheitsprüfung des Systems aktualisiert die Datenbank und prüft installierte Anwendungen auf vorhandene Sicherheitslöcher. Weiteres erfahren Sie in den Hilfeseiten portaudit(1) und periodic(8).

Die Ports-Sammlung geht davon, dass Ihr System über eine funktionierende Internetverbindung verfügt. Ist dies nicht der Fall, müssen Sie eine Kopie des zu installierenden Distfiles manuell nach /usr/ports/distfiles kopieren.

Dazu wechseln Sie als erstes in das Verzeichnis des Ports, den Sie installieren wollen:

# cd /usr/ports/sysutils/lsof

Im Verzeichnis lsof kann man das Gerüst erkennen. Der nächste Schritt ist das Übersetzen (auch Bauen genannt) des Ports durch die Eingabe des Befehls make:

# make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===>  Extracting for lsof-4.57
...
[Ausgabe des Auspackens weggelassen]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===>  Patching for lsof-4.57
===>  Applying FreeBSD patches for lsof-4.57
===>  Configuring for lsof-4.57
...
[configure-Ausgabe weggelassen]
...
===>  Building for lsof-4.57
...
[Ausgabe der Übersetzung weggelassen]
...
#

Ist die Übersetzungsprozedur beendet, landen Sie wiederum in der Kommandozeile und können das Programm im nächsten Schritt installieren. Dazu verwenden Sie den Befehl make install:

# make install
===>  Installing for lsof-4.57
...
[Ausgabe der Installation weggelassen]
...
===>   Generating temporary packing list
===>   Compressing manual pages for lsof-4.57
===>   Registering installation for lsof-4.57
===>  SECURITY NOTE:
      This port has installed the following binaries which execute with
      increased privileges.
#

Nachdem die Installation abgeschlossen ist, können Sie die gerade installierte Anwendung starten. Da lsof eine Anwendung ist, die mit erhöhten Rechten läuft, wird eine Sicherheitswarnung angezeigt. Sie sollten alle Warnungen während des Baus und der Installation eines Ports beachten.

Es ist eine gute Idee, das Unterverzeichnis work nach erfolgter Installation wieder zu löschen. Einerseits gewinnen Sie dadurch Speicherplatz, andererseits könnte es sonst zu Problemen bei der Aktualisierung des Ports auf eine neuere Version kommen.

# make clean
===>  Cleaning for lsof-4.57
#

Anmerkung: Sie können zwei Schritte sparen, wenn Sie gleich make install clean anstelle von make, make install und make clean eingeben.

Anmerkung: Um die Suche nach Kommandos zu beschleunigen, speichern einige Shells eine Liste der verfügbaren Kommandos in den durch die Umgebungsvariable PATH gegebenen Verzeichnissen. Nach der Installation eines Ports müssen Sie in einer solchen Shell vielleicht das Kommando rehash absetzen, um die neu installierten Kommandos benutzen zu können. Das Kommando rehash gibt es in Shells wie der tcsh. Unter Shells wie der sh benutzen Sie das Kommando hash -r. Weiteres entnehmen Sie bitte der Dokumentation Ihrer Shell.

Einige von Dritten angebotenen DVD-ROM-Produkte wie das FreeBSD Toolkit von der FreeBSD Mall enthalten auch Distfiles (komprimierte Quellcodepakete). Diese lassen sich über die Ports-Sammlung installieren. Dazu hängen Sie die DVD-ROM unter /cdrom in den Verzeichnisbaum ein. Wenn Sie einen anderen Mountpunkt verwenden, sollten Sie die make-Variable CD_MOUNTPTS setzen, damit die auf der DVD-ROM enthaltenen Distfiles automatisch verwendet werden.

Anmerkung: Beachten Sie bitte, dass die Lizenzen einiger Ports die Einbeziehung auf der CD-ROM verbieten. Das kann verschiedene Gründe haben. Beispielsweise eine Registrierung vor dem Herunterladen erforderlich oder die Weiterverteilung ist verboten. Wenn Sie einen Port installieren wollen, der nicht auf der CD-ROM enthalten ist, müssen Sie online sein.

Die Ports-Sammlung benutzt zum Herunterladen von Dateien fetch(3), das Umgebungsvariablen wie FTP_PASSIVE_MODE, FTP_PROXY und FTP_PASSWORD berücksichtigt. Wenn Sie durch eine Firewall geschützt werden, müssen Sie vielleicht eine oder mehrere dieser Umgebungsvariablen setzen, oder einen FTP oder HTTP Proxy verwenden. Eine Liste der unterstützten Umgebungsvariablen finden Sie in fetch(3).

Benutzer ohne eine ständige Internet-Verbindung werden das Kommando make fetch zu schätzen wissen. Das Kommando lädt alle benötigten Dateien eines Ports herunter. Sie können das Kommando im Verzeichnis /usr/ports laufen lassen. In diesem Fall werden alle Dateien heruntergeladen. Es ist auch möglich, make fetch nur in einem Teil des Baums, wie /usr/ports/net, aufzurufen. Die Dateien von allen abhängigen Ports werden mit diesem Kommando allerdings nicht heruntergeladen. Wenn Sie diese Dateien ebenfalls herunterladen wollen, ersetzen Sie im Kommando fetch durch fetch-recursive.

Anmerkung: Abhängig davon, in welchem Verzeichnis Sie make aufrufen, können Sie analog zu make fetch die Ports einer Kategorie oder alle Ports bauen. Beachten Sie allerdings, dass manche Ports nicht zusammen installiert werden können. Weiterhin gibt es Fälle, in denen zwei Ports unterschiedliche Inhalte in derselben Datei speichern wollen.

Manchmal ist es erforderlich, die benötigten Dateien von einem anderen Ort als den im Port vorgesehenen herunterzuladen. Der Ort wird durch die Variable MASTER_SITES vorgegeben, die Sie wie folgt überschreiben können:

# cd /usr/ports/directory
# make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

Im Beispiel wurde MASTER_SITES mit dem Wert ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ überschrieben.

Anmerkung: Einige Ports besitzen Optionen, mit denen Sie zusätzliche Funktionen oder Sicherheitsoptionen einstellen können (oder manchmal auch müssen). Zusätzliche Optionen können beispielsweise für www/firefox, security/gpgme und mail/sylpheed-claws angegeben werden. Wenn ein Port über zusätzliche Optionen verfügt, werden diese beim Bau des Ports auf der Konsole ausgegeben.

5.5.2.1. Vorgabe-Verzeichnisse ändern

Manchmal ist es nützlich (oder erforderlich), in anderen Verzeichnissen zu arbeiten. Die Verzeichnisse können Sie mit den Variablen WRKDIRPREFIX und PREFIX einstellen. Die Variable WRKDIRPREFIX gibt das Bauverzeichnis an:

# make WRKDIRPREFIX=/usr/home/example/ports install

Dieses Kommando baut den Port in /usr/home/example/ports und installiert ihn unter /usr/local.

Die Variable PREFIX legt das Installations-Verzeichnis fest:

# make PREFIX=/usr/home/example/local install

In diesem Beispiel wird der Port unter /usr/ports gebaut und nach /usr/home/example/local installiert.

Sie können beide Variablen auch zusammen benutzen:

# make WRKDIRPREFIX=../ports PREFIX=../local install

Die Kommandozeile ist zu lang, um sie hier komplett wiederzugeben, aber Sie sollten die zugrunde liegende Idee erkennen.

5.5.2.2. Probleme mit imake

Einige Ports, welche imake(1) (Teil des X-Window-Systems) benutzen, funktionieren nicht gut mit PREFIX und bestehen darauf, unter /usr/X11R6 installiert zu werden. In ähnlicher Weise verhalten sich einige Perl-Ports, die PREFIX ignorieren und sich in den Perl-Verzeichnisbaum installieren. Zu erreichen, dass solche Ports PREFIX beachten, ist schwierig oder sogar unmöglich.

5.5.2.3. Ports rekonfigurieren

Beim Bau einiger Ports erhalten Sie ein ncurses-basiertes Menü, über dessen Optionen Sie den Bau dieser Ports beeinflussen können. Es gibt diverse Möglichkeiten, dieses Menü nach dem Bau eines Ports erneut aufzurufen, um beispielsweise Optionen zu entfernen, hinzuzufügen oder anzupassen. Sie können beispielsweise in das Verzeichnis des Ports wechseln und dort den Befehl make config eingeben, wodurch das Menü mit den ursprünglichen gewählten Optionen erneut aufgerufen wird. Eine andere Möglichkeit bietet der Befehl make showconfig, mit dem Sie eine Liste aller Konfigurationsoptionen dieses Ports aufrufen. Eine weitere Alternative bietet der Befehl make rmconfig, der die von Ihnen ursprünglich gewählten Optionen zurücksetzt und es Ihnen dadurch ermöglicht, die Konfiguration erneut zu beginnen. Die eben erwähnten Optionen (und viele andere) werden ausführlich in der Manualpage ports(7) beschrieben.

5.5.3. Entfernen installierter Ports

Da Sie nun wissen, wie man einen Port installiert, wollen Sie sicher auch wissen, wie man ein über einen Port installiertes Programm wieder deinstallieren kann. Ports werden analog zu Paketen mit pkg_delete(1) deinstalliert (Lesen Sie sich den Abschnitt Benutzen des Paketsystems des Handbuchs durch, wenn Sie weitere Informationen benötigen.). Für das vorhin installierte Programm lsof würden Sie dazu wie folgt vorgehen:

# pkg_delete lsof-4.57

5.5.4. Ports aktualisieren

Als erstes sollten sie sich alle installierten Ports anzeigen lassen, von denen eine aktuellere Version in der Ports-Sammlung existiert. Dazu verwenden Sie den Befehl pkg_version(1):

# pkg_version -v

5.5.4.1. /usr/ports/UPDATING

Nachdem Sie die Ports-Sammlung auf den neusten Stand gebracht haben, lesen Sie bitte zuerst die Datei /usr/ports/UPDATING, bevor Sie einen Port aktualisieren. In dieser Datei werden Probleme und zusätzlich durchzuführende Schritte bei der Aktualisierung einzelner Ports beschrieben. Dazu gehören solche Dinge wie geänderte Dateiformate, verschobene Konfigurationsdateien, aber auch Inkompatibilitäten zu einer Vorgängerversion.

Sollte UPDATING etwas hier Gesagtem widersprechen, so gilt das in UPDATING Gesagte.

5.5.4.2. Ports mit Portupgrade aktualisieren

portupgrade wurde entwickelt, um die Aktualisierung von Ports zu vereinfachen. Sie können portupgrade über den Port ports-mgmt/portupgrade wie jeden anderen Port mit make install clean installieren:

# cd /usr/ports/ports-mgmt/portupgrade/
# make install clean

Durchsuchen Sie regelmäßig (am besten vor jeder Aktualisierung) die Liste der installierten Ports mit pkgdb -F und beheben Sie alle gefundenen Probleme.

Wenn Sie portupgrade -a eingeben, beginnt portupgrade automatisch mit der Aktualisierung aller veralteter Ports Ihres Systems. Verwenden Sie den Schalter -i, wenn Sie individuell entscheiden wollen, ob ein Port aktualisiert werden soll:

# portupgrade -ai

Wenn Sie nur eine einzelne Anwendung anstelle aller Anwendungen aktualisieren wollen, verwenden Sie das Kommando portupgrade pkgname. Geben Sie den Schalter -R an, wenn portupgrade zuvor alle Ports aktualisieren soll, die von dem gegebenen Paket abhängen.

Der Schalter -P verwendet zur Installation Pakete anstelle von Ports. Mit dieser Option durchsucht portupgrade die in der Umgebungsvariablen PKG_PATH aufgeführten Verzeichnisse nach Paketen. Sind lokal keine Pakete vorhanden, versucht portupgrade die Pakete über das Netz herunterzuladen. Gibt es die Pakete weder lokal noch auf entfernten Rechnern, werden die Ports verwendet. Um dies zu verhindern, benutzen Sie die Option -PP.

# portupgrade -PP gnome2

Wenn Sie nur die Quelldateien des Ports (oder die Pakete mit -P) herunterladen möchten, ohne die Anwendung zu bauen oder zu installieren, geben Sie die Option -F an. Weitere Möglichkeiten lesen Sie bitte in der Hilfeseite portupgrade(1) nach.

5.5.4.3. Ports mit Portmanager aktualisieren

Portmanager ist ein weiteres Werkzeug, das die Aktualisierung installierter Ports erleichtert. Es kann über den Port ports-mgmt/portmanager installiert werden:

# cd /usr/ports/ports-mgmt/portmanager
# make install clean

Alle installierten Ports können danach durch folgende Eingabe aktualisiert werden:

# portmanager -u

Wenn Sie zusätzlich die Optionen -ui an Portmanager übergeben, werden Sie bei jedem Schritt um eine Bestätigung gefragt. Portmanager ist außerdem in der Lage, neue Ports auf Ihrem System zu installieren. Im Gegensatz zum bekannten make install clean aktualisiert es aber vor dem Bau und der Installation eines Ports alle abhängigen Ports.

# portmanager x11/gnome2

Treten bei den Abhängigkeiten des zu installierenden Ports Probleme auf, ist Portmanager in der Lage, alle Abhängigkeiten in der korrekten Reihenfolge neu zu bauen. Nachdem dieser Schritt abgeschlossen ist, wird der problematische Port ebenfalls neu gebaut.

# portmanager graphics/gimp -f

Weitere Informationen finden Sie in der Manualpage portmanager(1).

5.5.4.4. Ports mit Portmaster aktualisieren

Bei Portmaster handelt es sich um ein weiteres Werkzeug zum Aktualisieren von Ports. Portmaster nutzt nur Werkzeuge, die bereits im Basissystem vorhanden sind (ist also nicht von weiteren Ports abhängig). Es verwendet Informationen in /var/db/pkg/, um festzustellen, welche Ports aktualisiert werden sollen. Sie können dieses Program über den Port ports-mgmt/portmaster installieren:

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

Portmaster teilt Ports in vier Kategorien ein:

  • Root ports (no dependencies, not depended on)

  • Trunk ports (no dependencies, are depended on)

  • Branch ports (have dependencies, are depended on)

  • Leaf ports (have dependencies, not depended on)

Um eine Liste aller installierter Ports anzuzeigen (und nach neueren Versionen zu suchen), verwenden Sie die Option -L:

# portmaster -L
===>>> Root ports (No dependencies, not depended on)
===>>> ispell-3.2.06_18
===>>> screen-4.0.3
        ===>>> New version available: screen-4.0.3_1
===>>> tcpflow-0.21_1
===>>> 7 root ports
...
===>>> Branch ports (Have dependencies, are depended on)
===>>> apache-2.2.3
        ===>>> New version available: apache-2.2.8
...
===>>> Leaf ports (Have dependencies, not depended on)
===>>> automake-1.9.6_2
===>>> bash-3.1.17
        ===>>> New version available: bash-3.2.33
...
===>>> 32 leaf ports

===>>> 137 total installed ports
        ===>>> 83 have new versions available
	

Um alle derzeit installierten Ports zu aktualisieren, verwenden Sie einfach den folgenden Befehl:

# portmaster -a

Anmerkung: In der Voreinstellung erzeugt Portmaster eine Sicherheitskopie, bevor ein installierter Port gelöscht wird. Ist die Installation der neuen Version erfolgreich, wird dieses Backup wieder gelöscht. Wollen Sie das Backup lieber manuell löschen, verwenden Sie die Option -b beim Aufruf von Portmaster. Durch die Verwendung der Option -i wird Portmaster im interaktiven Modus gestartet und fragt bei jedem zu aktualisierenden Port nach, wie Sie vorgehen wollen.

Treten während der Aktualisierung Fehler auf, können Sie die Option -f verwenden, um alle Ports zu aktualisieren beziehungsweise neu zu bauen:

# portmaster -af

Portmaster ist auch in der Lage, neue Ports zu installieren, wobei zuvor alle abhängigen Ports aktualisiert werden:

# portmaster shells/bash

Weiterführende Informationen finden Sie in der Manualpage portmaster(8).

5.5.5. Platzbedarf von Ports

Die Ports-Sammlung kann sehr viel Plattenplatz verschlingen. Führen Sie nach dem Bau und der Installation eines Ports make clean aus, um die Arbeitsverzeichnisse zu löschen. Dieser Befehl entfernt das Verzeichnis work des gebauten Ports. Wollen Sie die gesamte Ports-Sammlung aufräumen, verwenden Sie folgenden Befehl:

# portsclean -C

Im Laufe der Zeit werden sich zahlreiche Distfiles im Verzeichnis distfiles ansammeln. Sie können diese entweder händisch löschen, oder Sie verwenden den folgenden Befehl, um alle Distfiles zu löschen, die nicht länger benötigt werden:

# portsclean -D

Falls Sie nur alle Distfiles löschen wollen, die von keinem derzeit installierten Port referenziert werden:

# portsclean -DD

Anmerkung: Das Werkzeug portsclean wird automatisch bei der Installation von portupgrade mit installiert.

Denken Sie daran, installierte Ports wieder zu entfernen, wenn Sie diese nicht mehr benötigen. Um diese Arbeit zu erleichtern, können Sie den Port ports-mgmt/pkg_cutleaves installieren.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.