Die Ports-Sammlung ist eine Reihe von
Makefiles
, Patches und Beschreibungen.
Die Dateien für den Bau und die Installation von einzelnen
Anwendungen unter FreeBSD werden als Port
bezeichnet.
In der Voreinstellung wird die Ports-Sammlung im
Verzeichnis /usr/ports
gespeichert.
Bevor eine Anwendung aus den Ports erstellt werden kann, muss zuerst die Ports-Sammlung installiert werden. Wenn dies nicht bereits bei der Installation von FreeBSD geschehen ist, benutzen Sie eine der beiden Methoden um sie zu installieren:
FreeBSDs Basissystem enthält mit Portsnap ein schnelles und benutzerfreundliches Werkzeug zur Installation der Ports-Sammlung und die bevorzugte Wahl für die meisten Benutzer. Dieses Programm stellt eine Verbindung zu einem FreeBSD-Server her, überprüft den gesicherten Schlüssel und lädt eine aktuelle Kopie der Ports-Sammlung herunter. Der Schlüssel wird benötigt, um die Integrität der heruntergeladenen Dateien zu untersuchen.
Laden Sie einen komprimierten Snapshot der
Ports-Sammlung in
/var/db/portsnap
:
#
portsnap fetch
Wenn Sie Portsnap das erste
Mal verwenden, müssen Sie den Snapshot nach
/usr/ports
extrahieren:
#
portsnap extract
Nach dem ersten Einsatz von
Portsnap, kann
/usr/ports
wie folgt aktualisiert
werden:
#
portsnap fetch
#
portsnap update
Bei der Verwendung von fetch
können
die extract
oder
update
Operationen nacheinander
ausgeführt werden, etwa so:
#
portsnap fetch update
Wird mehr Kontrolle über die Ports-Sammlung benötigt, oder wenn die lokalen Änderungen beibehalten werden sollen, kann Subversion benutzt werden, um die Ports-Sammlung zu laden. Lesen Sie den Subversion Primer für eine detaillierte Beschreibung von Subversion.
Subversion muss installiert sein, bevor die Ports-Sammlung geladen werden kann. Ist eine lokale Kopie der Ports-Sammlung bereits vorhanden, installieren Sie Subversion wie folgt:
#
cd /usr/ports/devel/subversion
#
make install clean
Wenn keine lokale Kopie der Ports-Sammlung vorhanden ist, oder pkg zur Verwaltung von Paketen benutzt wird, kann Subversion als Paket installiert werden:
#
pkg install subversion
Laden Sie eine Kopie der Ports-Sammlung:
#
svn checkout https://svn.FreeBSD.org/ports/head /usr/ports
Nach dem erstmaligen
checkout mit
Subversion kann
/usr/ports
wie folgt aktualisiert
werden:
#
svn update /usr/ports
Die Ports-Sammlung enthält eine Reihe von Verzeichnissen, die jeweils eine Softwarekategorie repräsentieren. Jede Kategorie hat für jede einzelne Anwendung ein weiteres Unterverzeichnis. Jedes Unterverzeichnis enthält Dateien, die FreeBSD sagen, wie ein Programm kompiliert und installiert werden muss. Diese Dateien werden auch Port-„Gerüst“ genannt. Jedes Port-„Gerüst“ beinhaltet die folgenden Dateien und Verzeichnisse:
Makefile
: enthält Anweisungen, die
spezifizieren, wie die Anwendung kompiliert wird und wohin
die Komponenten installiert werden sollten.
distinfo
: enthält die Namen und
die Prüfsummen der Dateien, die heruntergeladen werden
müssen, um den Port zu bauen.
files
: dieses Verzeichnis
enthält Patches, welche das Übersetzen und Installieren
der Anwendung unter FreeBSD ermöglichen. Zudem können noch
weitere Dateien, die für die Übersetzung des Ports
verwendet werden, enthalten sein.
pkg-descr
: enthält
eine ausführlichere Beschreibung der Anwendung.
pkg-plist
: eine Liste
aller Dateien, die durch diesen Port installiert werden.
Außerdem sind hier Informationen enthalten, die zum
Entfernen des Ports benötigt werden.
Einige Ports beinhalten noch
pkg-message
oder weitere Dateien, die vom
Port-System benutzt werden, um spezielle Situationen zu
handhaben. Wenn Sie mehr über diese Dateien oder das
Port-System erfahren wollen, lesen Sie das
FreeBSD Porter's Handbook.
Ein Port enthält nicht den eigentlichen Quellcode, der
auch als „Distfile“ bekannt ist. Der
heruntergeladene Quellcode wird automatisch nach
/usr/ports/distfiles
extrahiert.
Dieser Abschnitt beschreibt die grundlegende Benutzung
der Ports-Sammlung, um Software zu installieren oder zu
deinstallieren. Eine ausführliche Beschreibung der
einzelnen make
-Targets finden Sie in
ports(7).
Stellen Sie sicher, dass die Ports-Sammlung
aktuell ist, bevor Sie einen Port kompilieren.
Informieren Sie sich vorher zusätzlich unter https://vuxml.FreeBSD.org/ über
mögliche Sicherheitsprobleme des zu installierenden Ports.
Alternativ können Sie pkg audit -F
ausführen, bevor Sie einen neuen Port installieren. Die
täglich laufende Sicherheitsprüfung des Systems aktualisiert
ebenfalls die Datenbank und prüft installierte Anwendungen
auf vorhandene Sicherheitsprobleme. Weitere Informationen
finden Sie in pkg-audit(8) und periodic(8).
Die Benutzung der Ports-Sammlung setzt eine funktionierende Internetverbindung und Superuser-Rechte voraus.
Um einen Port zu installieren, wechseln Sie in das
Verzeichnis des Ports, den Sie installieren möchten. Geben
Sie dann make install
am Prompt ein:
#
cd /usr/ports/sysutils/lsof
#
make install
>> lsof_4.88D.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.88 ... [Ausgabe des Auspackens weggelassen] ... >> Checksum OK for lsof_4.88D.freebsd.tar.gz. ===> Patching for lsof-4.88.d,8 ===> Applying FreeBSD patches for lsof-4.88.d,8 ===> Configuring for lsof-4.88.d,8 ... [configure-Ausgabe weggelassen] ... ===> Building for lsof-4.88.d,8 ... [Ausgabe der Übersetzung weggelassen] ... ===> Installing for lsof-4.88.d,8 ... [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. /usr/local/bin/lsof#
Da lsof
eine Anwendung ist, die mit
erhöhten Rechten läuft, wird nach der Installation eine
Sicherheitswarnung angezeigt. Sobald die Installation
abgeschlossen ist, erscheint wieder der Prompt.
Um die Suche nach Kommandos zu beschleunigen, speichern
einige Shells eine Liste der verfügbaren Kommandos in den
durch die Umgebungsvariable PATH
gegebenen
Verzeichnissen. Benutzer der tcsh
müssen
eventuell rehash
eintippen, um die neu
installierten Kommandos benutzen zu können, ohne den
vollständigen Pfad anzugeben. Benutzer der Shell
sh
müssen stattdessen
hash -r
eintippen. Weitere Informationen
finden Sie in der Dokumentation der jeweiligen Shell.
Bei der Installation wird ein Arbeitsverzeichnis erstellt, das alle temporären Dateien enthält, die während des Bauvorgangs benötigt werden. Wenn dieses Verzeichnis nach der Installation entfernt wird, spart dies Plattenplatz und minimiert mögliche Probleme bei der Aktualisierung des Ports auf eine neuere Version:
#
make clean
===> Cleaning for lsof-4.88.d,8#
Sie können zwei Schritte sparen, wenn Sie bei der
Kompilierung des Ports gleich
make install clean
eingeben.
Einige Ports bieten Optionen, mit denen zusätzliche
Funktionen oder Sicherheitsoptionen eingestellt werden
können. Beispiele dafür sind
www/firefox,
security/gpgme und
mail/sylpheed-claws. Wenn ein Port von
anderen Ports abhängig ist und diese über zusätzliche
Abhängigkeiten und Optionen verfügen, wird mehrmals ein
Menü ausgegeben, wo der Benutzer verschiedene Optionen
wählen kann. Um dies zu vermeiden und die Konfiguration in
einem Stück zu erledigen, wechseln Sie in das
Verzeichnis des Ports und geben Sie
make config-recursive
ein. Führen Sie
danach make install [clean]
aus, um den
Port zu kompilieren und zu installieren.
Bei der Verwendung von
config-recursive
wird eine
Liste von Ports, die konfiguriert werden, vom
Target all-depends-list
erstellt. Es wird empfohlen,
make config-recursive
so lange
auszuführen, bis alle Optionen der abhängigen Ports
definiert sind und keine Optionen und Menüs mehr
erscheinen. Damit soll sichergestellt werden, dass alle
Optionen konfiguriert wurden.
Es gibt diverse Möglichkeiten, dieses Menü nach dem
Bau eines Ports erneut aufzurufen, um Optionen zu
entfernen, hinzuzufügen oder anzupassen. Sie können
beispielsweise mit cd
in das
Verzeichnis des Ports wechseln und dort
make config
eingeben. Eine andere
Möglichkeit ist make showconfig
. Eine
weitere Alternative bietet
make rmconfig
, das alle ursprünglich
gewählten Optionen zurücksetzt und es Ihnen dadurch
ermöglicht, die Konfiguration erneut zu beginnen. Die
eben erwähnten Optionen werden ausführlich in
ports(7) beschrieben.
Die Ports-Sammlung benutzt zum Herunterladen von
Dateien fetch(3), das diverse Umgebungsvariablen
unterstützt. Die Variablen
FTP_PASSIVE_MODE
, FTP_PROXY
und FTP_PASSWORD
müssen unter Umständen
gesetzt werden, wenn das FreeBSD-System hinter einer Firewall
oder einem FTP/HTTP-Proxy arbeitet. Eine vollständige
Liste der unterstützten Variablen finden Sie in
fetch(1).
Benutzer ohne eine ständige Internet-Verbindung können
make fetch
im Verzeichnis
/usr/ports
ausführen, um die
benötigten Dateien herunterzuladen. 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, benutzen Sie
stattdessen
make fetch-recursive
.
In einigen seltenen Fällen ist es erforderlich, die
benötigten Dateien von einem anderen Ort als den im Port
definierten MASTER_SITES
herunterzuladen. Sie können
MASTER_SITES
mit dem folgenden Kommando
überschreiben:
#
cd /usr/ports/
directory
#
make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/
fetch
Die Variablen WRKDIRPREFIX
und
PREFIX
überschreiben das voreingestellte
Bau- und Zielverzeichnis. Zum Beispiel:
#
make WRKDIRPREFIX=/usr/home/example/ports install
Dieses Kommando baut den Port unter
/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
Alternativ können diese Variablen auch als Umgebungsvariablen gesetzt werden. In der Manualpage Ihrer Shell finden Sie Anweisungen, wie Umgebungsvariablen gesetzt werden.
Installierte Ports können mit
pkg delete
wieder deinstalliert werden.
Beispiele für dieses Kommando finden Sie in
pkg-delete(8).
Alternativ kann make deinstall
im
Verzeichnis des Ports aufgerufen werden:
#
cd /usr/ports/sysutils/lsof
make deinstall
===> Deinstalling for sysutils/lsof ===> Deinstalling Deinstallation has been requested for the following 1 packages: lsof-4.88.d,8 Thee deinstallation will free 229 kB [1/1] Deleting lsof-4.88.d,8... done
Es wird empfohlen die Nachrichten zu lesen, die ausgegeben werden, wenn ein Port deinstalliert wird. Wenn der Port noch Anwendungen hat, die von ihm abhängig sind, werdenn diese am Bildschirm angezeigt, aber die Deinstallation wird forgesetzt. In solchen Fällen ist es besser, die Anwendung neu zu installieren, um fehlende Abhängigkeiten zu vermeiden.
Im Laufe der Zeit stehen neuere Versionen der Software in der Ports-Sammlung zur Verfügung. In diesem Abschnitt wird beschrieben, wie Sie bestimmen, welche Software aktualisiert werden kann und wie das Upgrade durchzuführen ist.
Um festzustellen, ob neuere Versionen der installierten Ports verfügbar sind, stellen Sie sicher, dass die neueste Version der Ports-Sammlung installiert ist. Dies wird in Prozedur 4.1, „Installation mit Portsnap“ und Prozedur 4.2, „Installation mit Subversion“ beschrieben. Führen Sie unter FreeBSD 10 und neueren Versionen, bzw. auf Systemen die bereits mit pkg arbeiten, den folgenden Befehl aus, um eine Liste der installierten Ports zu erhalten für die eine aktuelle Version existiert:
#
pkg version -l "<"
Mit FreeBSD 9.X
und älteren
Versionen kann stattdessen dieser Befehl verwendet
werden:
#
pkg_version -l "<"
Lesen Sie zuerst
/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. Notieren Sie sich alle Anweisungen der
Ports, die aktualisiert werden müssen. Folgen Sie den
Anweisungen, wenn Sie das Upgrade durchführen.
Die Ports-Sammlung enthält mehrere Werkzeuge, um die eigentliche Aktualisierung durchzuführen. Jedes hat seine Stärken und Schwächen.
Historisch gesehen verwenden die meisten Installationen entweder Portmaster oder Portupgrade. Synth ist eine neuere Alternative.
Es bleibt dem Systemadministrator überlassen, welches dieser Werkzeuge für ein bestimmtes System am besten geeignet ist. Es wird empfohlen, die Daten zu sichern, bevor Sie eines dieser Werkzeuge verwenden.
ports-mgmt/portmaster ist ein sehr kleines Werkzeug zum Aktualisieren von Ports. Es wurde entwickelt, um mit den Werkzeugen aus dem FreeBSD Basissystem zu arbeiten, ohne dabei von anderen Ports oder Datenbanken abhängig zu sein. Sie können das Programm aus der Ports-Sammlung installieren:
#
cd /usr/ports/ports-mgmt/portmaster
#
make install clean
Portmaster teilt Ports in vier Kategorien ein:
Root Port: hat keine Abhängigkeiten und andere Ports sind nicht von diesem Port abhängig.
Trunk Port: hat keine Abhängigkeiten, aber andere Ports sind von diesem Port abhängig.
Branch Port: hat Abhängigkeiten und andere Ports sind von diesem Port abhängig.
Leaf Port: hat Abhängigkeiten, aber andere Ports sind nicht von diesem Port abhängig.
Um eine Liste der installierten Ports anzuzeigen und nach neueren Versionen zu suchen, verwenden Sie:
#
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) ===>>> apache22-2.2.3 ===>>> New version available: apache22-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 installierten Ports zu aktualisieren, verwenden Sie folgenden Befehl:
#
portmaster -a
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 von -i
wird
Portmaster im interaktiven
Modus gestartet und fragt bei jedem zu aktualisierenden
Port nach, wie weiter vorgegangen werden soll. Viele
weitere Optionen stehen zur Verfügung. Lesen Sie die
Manualpage von portmaster(8) für weitere Einzelheiten
in Bezug auf ihre Nutzung.
Treten während der Aktualisierung Fehler auf, verwenden
Sie die Option -f
, 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. Um diese Funktion zu nutzen, geben Sie den Pfad des Ports in der Ports-Sammlung an:
#
portmaster
shells/bash
Weitere Informationen über
ports-mgmt/portmaster finden Sie in der
Beschreibung pkg-descr
.
ports-mgmt/portupgrade ist ein weiteres Werkzeug zur Aktualisierung von Ports. Es installiert eine Reihe von Anwendungen, die für die Verwaltung von Ports verwendet werden können. Das Programm ist jedoch von Ruby abhängig. Um den Port zu installieren, geben Sie ein:
#
cd /usr/ports/ports-mgmt/portupgrade
#
make install clean
Durchsuchen Sie vor jedem Update die Liste der
installierten Ports mit pkgdb -F
und
beheben Sie alle gefundenen Probleme.
Benutzen Sie portupgrade -a
, um
automatisch alle veralteten Ports auf dem System zu
aktualisieren. Verwenden Sie zusätzlich den Schalter
-i
, wenn Sie individuell entscheiden
wollen, ob ein Port aktualisiert werden soll:
#
portupgrade -ai
Um nur eine spezifische Anwendung zu aktualisieren,
verwenden Sie portupgrade
. Es ist
wichtig den Schalter Paketname
-R
zu benutzen, um
zuvor alle Ports zu aktualisieren, die von dem gegebenen
Anwendung abhängen.
#
portupgrade -R firefox
Um Pakete anstelle von Ports zu installieren, verwenden
Sie den Schalter -P
. 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 die Nutzung von Ports gänzlich zu verhindern,
benutzen Sie die Option -PP
.
Portupgrade würde dann abbrechen,
falls keine Pakete zur Verfügung stehen.
#
portupgrade -PP gnome3
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 den
Schalter -F
an. Weitere Informationen zu
den verfügbaren Schaltern finden Sie in der Manualpage von
portupgrade(1).
Weitere Informationen über
ports-mgmt/portupgrade finden Sie in der
Beschreibung pkg-descr
.
Die Nutzung der Ports-Sammlung wird im Laufe der Zeit viel
Plattenplatz verschlingen. Nach dem Bau und der Installation
eines Ports, wird make clean
die temporären
Arbeitsverzeichnisse work
aufräumen.
Portmaster wird dieses Verzeichnis
nach der Installation eines Ports automatisch entfernen
(es sei denn, die Option -K
wird verwendet).
Wenn Portupgrade
installiert ist, wird der folgende Befehl alle Arbeitsverzeichnisse
der lokalen Ports-Sammlung entfernen:
#
portsclean -C
Zusätzlich werden sich im Laufe der Zeit zahlreiche
veraltete Distfiles in
/usr/ports/distfiles
ansammeln. Mit
Portupgrade können alle Distfiles
gelöscht werden, die vom keinem Port mehr benötigt
werden:
#
portsclean -D
Portupgrade kann alle Distfiles löschen, die von keinem derzeit installierten Port benötigt werden:
#
portsclean -DD
Wenn Portmaster installiert ist, benutzen Sie diesen Befehl:
#
portmaster --clean-distfiles
In der Voreinstellung arbeitet dieses Programm interaktiv und fragt den Benutzer um Bestätigung, bevor ein Distfile gelöscht wird.
Zusätzlich zu diesen Kommandos gibt es noch port-mgmt/pkg_cutleaves. Dieses Werkzeug automatisiert die Deinstallation von installierten Ports, die nicht weiter benötigt werden.
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>.