doc/de_DE.ISO8859-1/books/handbook/ports/chapter.sgml
2012-09-14 17:47:48 +00:00

1673 lines
64 KiB
XML

<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/ports/chapter.sgml,v 1.111 2011/12/19 17:13:33 bcr Exp $
basiert auf: 1.293
-->
<chapter id="ports">
<chapterinfo>
<authorgroup>
<author>
<firstname>Uwe</firstname>
<surname>Pierau</surname>
<contrib>Übersetzt von </contrib>
</author>
</authorgroup>
</chapterinfo>
<title>Installieren von Anwendungen: Pakete und Ports</title>
<sect1 id="ports-synopsis">
<title>Übersicht</title>
<indexterm><primary>Ports</primary></indexterm>
<indexterm><primary>Pakete</primary></indexterm>
<para>FreeBSD enthält sehr viele Systemwerkzeuge, die Teil des
Basissystems sind. Allerdings sind Sie früher oder später
auf Software Dritter angewiesen, damit Sie bestimmte Arbeiten
durchführen können. Um diese Software zu installieren,
stellt FreeBSD zwei sich ergänzende Methoden zur
Verfügung: Die Ports-Sammlung (zur Installation aus dem
Quellcode) sowie Pakete (auch als
<foreignphrase>Packages</foreignphrase> bezeichnet, zur Installation
von vorkompilierten binären Softwarepaketen).
Sie können beide Methoden benutzen, um Ihre Lieblingsanwendungen
von lokalen Medien oder über das Netzwerk zu
installieren.</para>
<para>Dieses Kapitel behandelt die folgenden Themen:</para>
<itemizedlist>
<listitem>
<para>Die Installation binärer Softwarepakete.</para>
</listitem>
<listitem>
<para>Der Bau Software Dritter aus dem Quellcode mithilfe der
Ports-Sammlung.</para>
</listitem>
<listitem>
<para>Wie zuvor installierte Pakete oder Ports
entfernt werden.</para>
</listitem>
<listitem>
<para>Wie Sie die Voreinstellungen der Ports-Sammlung
überschreiben.</para>
</listitem>
<listitem>
<para>Die Suche nach geeigneter Software.</para>
</listitem>
<listitem>
<para>Wie Sie Ihre Anwendungen aktualisieren.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="ports-overview">
<title>Installation von Software</title>
<para>Wenn Sie schon einmal ein &unix; System benutzt haben, werden Sie
wissen, dass zusätzliche Software meist wie folgt
installiert wird:</para>
<procedure>
<step>
<para>Download der Software, die als Quelltext oder im
Binärformat vorliegen kann.</para>
</step>
<step>
<para>Auspacken der Software, die typischerweise ein mit
&man.compress.1;, &man.gzip.1; oder &man.bzip2.1;
komprimiertes Tar-Archiv enthält.</para>
</step>
<step>
<para>Durchsuchen der Dokumentation, die sich meist in Dateien wie
<filename>INSTALL</filename>, <filename>README</filename> oder
mehreren Dateien im Verzeichnis <filename>doc/</filename>
befindet, nach Anweisungen, wie die Software
zu installieren ist.</para>
</step>
<step>
<para>Kompilieren der Software wenn sie als Quelltext vorliegt.
Dazu müssen Sie vielleicht das <filename>Makefile</filename>
anpassen, oder <command>configure</command> laufen lassen, oder
andere Arbeiten durchführen.</para>
</step>
<step>
<para>Testen und installieren der Software.</para>
</step>
</procedure>
<para>Das beschreibt aber nur den optimalen Fall. Wenn Sie
Software installieren, die nicht speziell für FreeBSD
geschrieben wurde, müssen Sie vielleicht sogar den Quelltext
anpassen, damit die Software funktioniert.</para>
<para>Wenn Sie unbedingt wollen, können Sie mit FreeBSD Software
nach der <quote>althergebrachten</quote> Methode installieren. Mit
Paketen oder Ports bietet Ihnen FreeBSD allerdings zwei Methoden an,
die Ihnen sehr viel Zeit sparen können. Zurzeit werden über
&os.numports; Anwendungen Dritter über diese Methoden zur
Verfügung gestellt.</para>
<para>Das FreeBSD-Paket einer Anwendung besteht aus einer einzigen
Datei, die Sie sich herunterladen müssen. Das Paket
enthält schon übersetzte Kommandos der Anwendung, sowie
zusätzliche Konfigurationsdateien oder Dokumentation. Zur
Handhabung der Pakete stellt FreeBSD-Kommandos wie &man.pkg.add.1;,
&man.pkg.delete.1; oder &man.pkg.info.1; zur Verfügung.
Mit diesem System können neue Anwendungen mit einem
Kommando, <command>pkg_add</command>, installiert werden.</para>
<para>Der FreeBSD-Port einer Anwendung ist eine Sammlung von Dateien,
die das Kompilieren der Quelltexte einer Anwendung
automatisieren.</para>
<para>Die Dateien eines Ports führen für Sie alle oben
aufgeführten Schritte zum Installieren einer Anwendung durch.
Mit einigen wenigen Kommandos wird der Quellcode der Anwendung
automatisch heruntergeladen, ausgepackt, gepatcht, übersetzt und
installiert.</para>
<para>Tatsächlich kann das Portsystem auch dazu benutzt werden,
Pakete zu generieren, die Sie mit den gleich beschriebenen Kommandos,
wie <command>pkg_add</command>, manipulieren können.</para>
<para>Pakete und Ports beachten Abhängigkeiten zwischen
Anwendungen. Angenommen, Sie wollen eine Anwendung installieren,
die von einer Bibliothek abhängt und die Anwendung wie die
Bibliothek sind als Paket oder Port für FreeBSD verfügbar.
Wenn Sie <command>pkg_add</command> oder das Portsystem benutzen,
um die Anwendung zu installieren, werden Sie bemerken, dass
die Bibliothek zuerst installiert wird, wenn sie nicht schon vorher
installiert war.</para>
<para>Sie werden sich fragen, warum FreeBSD-Pakete und -Ports
unterstützt, wo doch beide Methoden fast gleiches leisten.
Beide Methoden haben ihre Stärken und welche Sie einsetzen,
hängt letztlich von Ihren Vorlieben ab.</para>
<itemizedlist>
<title>Vorteile von Paketen</title>
<listitem>
<para>Das komprimierte Paket einer Anwendung ist normalerweise
kleiner als das komprimierte Archiv der Quelltexte.</para>
</listitem>
<listitem>
<para>Pakete müssen nicht mehr kompiliert werden. Dies ist
ein Vorteil, wenn Sie große Pakete, wie
<application>Mozilla</application>, <application>KDE</application>
oder <application>GNOME</application> auf langsamen Maschinen
installieren.</para>
</listitem>
<listitem>
<para>Wenn Sie Pakete verwenden, brauchen Sie nicht zu verstehen,
wie Sie Software unter FreeBSD kompilieren.</para>
</listitem>
</itemizedlist>
<itemizedlist>
<title>Vorteile von Ports</title>
<listitem>
<para>Da die Pakete auf möglichst vielen System laufen sollen,
werden Optionen beim Übersetzen zurückhaltend gesetzt.
Wenn Sie eine Anwendung über die Ports installieren,
können Sie die Angabe der Optionen optimieren. Zum Beispiel
können Sie spezifischen Code für Pentium&nbsp;4 oder
Athlon Prozessoren erzeugen.</para>
</listitem>
<listitem>
<para>Die Eigenschaften einiger Anwendungen werden über
Optionen zum Zeitpunkt des Übersetzens festgelegt.
<application>Apache</application> kann zum Beispiel über
viele eingebaute Optionen konfiguriert werden. Wenn Sie das
Portsystem benutzen, können Sie die Vorgaben für die
Optionen überschreiben.</para>
<para>Für einige Fälle existieren verschiedene
Pakete einer Anwendung, die beim Übersetzen
unterschiedlich konfiguriert wurden. Für
<application>Ghostscript</application> gibt es ein
<filename>ghostscript</filename>-Paket und ein
<filename>ghostscript-nox11</filename>-Paket, die sich durch die
X11 Unterstützung unterscheiden. Diese grobe Unterscheidung
ist mit dem Paketsystem möglich, wird aber schnell
unhandlich, wenn eine Anwendung mehr als ein oder zwei Optionen
zum Zeitpunkt des Übersetzens besitzt.</para>
</listitem>
<listitem>
<para>Die Lizenzbestimmungen mancher Software verbietet ein
Verbreiten in binärer Form. Diese Software muss als
Quelltext ausgeliefert werden.</para>
</listitem>
<listitem>
<para>Einige Leute trauen binären Distributionen nicht. Wenn
Sie den Quelltext besitzen, können Sie sich diesen
(zumindest theoretisch) durchlesen und nach möglichen Problemen
durchsuchen.</para>
</listitem>
<listitem>
<para>Wenn Sie eigene Anpassungen besitzen, benötigen Sie den
Quelltext, um diese anzuwenden.</para>
</listitem>
<listitem>
<para>Manch einer besitzt gerne den Quelltext, um ihn zu lesen,
wenn es einmal langweilig ist, ihn zu hacken, oder sich einfach
ein paar Sachen abzugucken (natürlich nur, wenn es die
Lizenzbestimmungen erlauben).</para>
</listitem>
</itemizedlist>
<para>Wenn Sie über aktualisierte Ports informiert sein wollen,
lesen Sie bitte die Mailinglisten &a.ports; und &a.ports-bugs;.</para>
<warning>
<para>Bevor Sie eine Anwendung installieren, sollten Sie
auf der Seite <ulink url="http://vuxml.FreeBSD.org/"></ulink>
über mögliche Sicherheitsprobleme mit der
Anwendung informieren.</para>
<para>Die Anwendung
<filename role="package">ports-mgmt/portaudit</filename>
prüft automatisch alle installierten Anwendungen
auf bekannte Sicherheitslöcher. Vor dem Bau eines
Ports findet ebenfalls eine Prüfung statt.
Installierte Pakete prüfen Sie mit dem
Kommando <command>portaudit -F -a</command>.</para>
</warning>
<para>Der Rest dieses Kapitels beschreibt, wie Sie Software Dritter mit
Paketen oder Ports auf einem FreeBSD-System installieren und
verwalten.</para>
</sect1>
<sect1 id="ports-finding-applications">
<title>Suchen einer Anwendung</title>
<para>Bevor Sie eine Anwendung installieren, müssen Sie deren
Art und Namen kennen.</para>
<para>Die Anzahl der nach FreeBSD portierten Anwendungen steigt
ständig. Zum Glück gibt es einige Wege, die richtige zu
finden.</para>
<itemizedlist>
<listitem>
<para>Eine aktuelle Liste verfügbarer Anwendungen, die sich
auch durchsuchen lässt, finden Sie unter <ulink
url="&url.base;/ports/index.html">http://www.FreeBSD.org/ports/</ulink>.
Die Anwendungen sind in Kategorien unterteilt und Sie
können sich alle Anwendungen einer Kategorie anzeigen
lassen. Wenn Sie den Namen der Anwendung kennen, können
Sie natürlich auch direkt nach dem Namen suchen.</para>
</listitem>
<listitem>
<indexterm><primary>FreshPorts</primary></indexterm>
<para>FreshPorts, das von Dan Langille gepflegt wird, erreichen Sie
unter <ulink url="http://www.FreshPorts.org/"></ulink>.
FreshPorts verfolgt
Änderungen an Anwendungen aus den Ports. Mit FreshPorts
können Sie ein oder mehrere Ports beobachten und sich eine
E-Mail schicken lassen, wenn ein Port aktualisiert wird.</para>
</listitem>
<listitem>
<indexterm><primary>FreshMeat</primary></indexterm>
<para>Wenn Sie den Namen einer Anwendung nicht kennen, versuchen
Sie eine Webseite wie FreshMeat
(<ulink url="http://www.freshmeat.net/"></ulink>),
um eine passende Anwendung zu finden. Schauen Sie dann auf der
FreeBSD-Webseite nach, ob die Anwendung schon portiert
wurde.</para>
</listitem>
<listitem>
<para>Wenn Sie den Portnamen kennen und nur nach der
Kategorie suchen wollen, verwenden Sie das Kommando
&man.whereis.1;. Geben Sie einfach
<command>whereis <replaceable>Datei</replaceable></command> ein.
<replaceable>Datei</replaceable> ist der Name des
Programms, das Sie suchen:</para>
<screen>&prompt.root; <userinput>whereis lsof</userinput>
lsof: /usr/ports/sysutils/lsof</screen>
<para>Damit haben wir herausgefunden, dass sich
<command>lsof</command>, ein Systemwerkzeug, im Verzeichnis
<filename class="directory">/usr/ports/sysutils/lsof</filename>
befindet.</para>
</listitem>
<listitem>
<para>Auch mit einem einfachen &man.echo.1;-Befehl können
Sie herausfinden, wo Sie einen bestimmten Port finden. Dazu
ein Beispiel:</para>
<screen>&prompt.root; <userinput>echo /usr/ports/*/*lsof*</userinput>
/usr/ports/sysutils/lsof</screen>
<para>Beachten Sie aber, dass dieser Befehl auch alle Dateien
im Verzeichnis <filename
class="directory">/usr/ports/distfiles</filename>
findet, auf die der angegebene Suchbegriff passt.</para>
</listitem>
<listitem>
<para>Ein weiterer Weg, einen bestimmten Port zu finden, ist es,
die eingebaute Suchfunktion der Ports-Sammlung zu benutzen.
Dazu muss Ihr Arbeitsverzeichnis <filename
class="directory">/usr/ports</filename>
sein. In diesem Verzeichnis rufen Sie
<command>make <maketarget>search</maketarget>
name=<replaceable>Anwendungsname</replaceable></command>
auf, wobei <replaceable>Anwendungsname</replaceable>
der Name der gesuchten Anwendung ist. Wenn Sie
zum Beispiel nach <command>lsof</command> suchen:</para>
<screen>&prompt.root; <userinput>cd /usr/ports</userinput>
&prompt.root; <userinput>make search name=lsof</userinput>
Port: lsof-4.56.4
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Maint: obrien@FreeBSD.org
Index: sysutils
B-deps:
R-deps: </screen>
<para>Der Teil der Ausgabe der Sie interessiert ist die Zeile, die
mit <quote>Path:</quote> beginnt, weil sie Ihnen sagt, wo der Port
zu finden ist. Die anderen Informationen werden zum Installieren
des Ports nicht direkt benötigt, Sie brauchen sich darum
jetzt nicht weiter zu kümmern.</para>
<para>Erweiterte Suchen führen Sie mit dem Kommando
<command>make <maketarget>search</maketarget>
key=<replaceable>Text</replaceable></command>
aus. Damit werden Portnamen, Kommentare, Beschreibungen und
Abhängigkeiten nach <replaceable>Text</replaceable>
durchsucht. Dies kann sehr nützlich sein, wenn Sie
den Namen des Programms, nach dem Sie suchen, nicht kennen.</para>
<para>In beiden Fällen wird Groß- und Kleinschreibung bei
der Suche ignoriert. Die Suche nach <quote>LSOF</quote> wird
dieselben Ergebnisse wie die Suche nach <quote>lsof</quote>
liefern.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="packages-using">
<sect1info>
<authorgroup>
<author>
<firstname>Chern</firstname>
<surname>Lee</surname>
<contrib>Beigesteuert von </contrib>
</author>
</authorgroup>
<!-- 30 Mar 2001 -->
</sect1info>
<title>Benutzen des Paketsystems</title>
<para>Es gibt viele unterschiedliche Werkzeuge um Pakete in
FreeBSD zu verwalten:</para>
<itemizedlist>
<listitem>
<para>Auf einem laufenden System kann <command>sysinstall</command>
benutzt werden, um Pakete zu installieren, zu löschen und
verfügbare und installierte anzuzeigen. Weitere Informationen
finden Sie unter <xref linkend="packages"/>.</para>
</listitem>
<listitem>
<para>Die Paketverwaltungswerkzeuge der Kommandozeile sind die
Themen von diesem Kapitel.</para>
</listitem>
</itemizedlist>
<sect2>
<title>Installieren eines Pakets</title>
<indexterm>
<primary>Pakete</primary>
<secondary>installieren</secondary>
</indexterm>
<indexterm>
<primary><command>pkg_add</command></primary>
</indexterm>
<para>Mit &man.pkg.add.1; können Sie ein FreeBSD-Paket von einer
lokalen Datei oder über das Netzwerk installieren.</para>
<example>
<title>Download vor Installation eines Pakets</title>
<screen>&prompt.root; <userinput>ftp -a <replaceable>ftp2.FreeBSD.org</replaceable></userinput>
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230- This machine is in Vienna, VA, USA, hosted by Verio.
230- Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
<prompt>ftp></prompt> <userinput>cd /pub/FreeBSD/ports/packages/sysutils/</userinput>
250 CWD command successful.
<prompt>ftp></prompt> <userinput>get lsof-4.56.4.tgz</userinput>
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375 00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
<prompt>ftp></prompt> <userinput>exit</userinput>
&prompt.root; <userinput>pkg_add <replaceable>lsof-4.56.4.tgz</replaceable></userinput></screen>
</example>
<para>Wenn Sie die Pakete nicht lokal vorliegen haben (zum Beispiel
auf den FreeBSD-CD-ROMs), ist es wahrscheinlich einfacher den
Schalter <option>-r</option> von &man.pkg.add.1; zu verwenden. Das
Werkzeug bestimmt dann automatisch das nötige Objektformat und
die richtige Version des Pakets, lädt dieses dann von einem
FTP-Server und installiert das Paket.</para>
<indexterm>
<primary><command>pkg_add</command></primary></indexterm>
<screen>&prompt.root; <userinput>pkg_add -r <replaceable>lsof</replaceable></userinput></screen>
<para>Das obige Beispiel würde ohne weitere Interaktion das
richtige Paket herunterladen und installieren. Pakete
werden vom &os;-Hauptserver heruntergeladen. Wenn Sie
anderen Server verwenden möchten, geben Sie den
Server in der Umgebungsvariablen <envar>PACKAGESITE</envar>
an. Die Dateien werden
mit &man.fetch.3;, das Umgebungsvariablen wie
<envar>FTP_PASSIVE_MODE</envar>, <envar>FTP_PROXY</envar> und
<envar>FTP_PASSWORD</envar> berücksichtigt, heruntergeladen.
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 &man.fetch.3;.
Beachten Sie, dass im obigen Beispiel <literal>lsof</literal>
anstelle von <literal>lsof-4.56.4</literal> verwendet wird. Wenn
Sie &man.pkg.add.1; zum Herunterladen eines Pakets verwenden, darf
die Versionsnummer des Pakets nicht angegeben werden, da
automatisch die neuste Version der Anwendung geholt wird.</para>
<note>
<para>Unter &os.current; oder &os.stable; holt &man.pkg.add.1;
die neuste Version einer Anwendung, unter einer Release
holt &man.pkg.add.1; die Version der Anwendung, die
im Release enthalten ist. Sie können dies ändern,
indem Sie die Umgebungsvariable <envar>PACKAGESITE</envar>
überschreiben. Wenn Sie bespielsweise
&os;&nbsp;8.1-RELEASE installiert haben, versucht
&man.pkg.add.1; in der Voreinstellung die Pakete von
<literal>ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/</literal>
zu laden. Wollen Sie &man.pkg.add.1; dazu zwingen, nur
&os;&nbsp;8-STABLE-Pakete herunterzuladen, setzen Sie die
Umgebungsvariable <envar>PACKAGESITE</envar> auf
<literal>ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/</literal>.</para>
</note>
<para>Pakete werden im <filename>.tgz</filename>- und
<filename>.tbz</filename>-Format ausgeliefert. Sie finden Sie unter
<ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/"></ulink>
oder auf der FreeBSD-CD-ROM-Distribution. Jede CD der FreeBSD
Distribution (oder des PowerPaks) enthält Pakete im
Verzeichnis <filename>/packages</filename>. Die Struktur des
Paketbaums entspricht dem <filename>/usr/ports</filename> Baum.
Jede Kategorie besitzt ein eigenes Verzeichnis und alle
Pakete befinden sich im Verzeichnis
<filename>All</filename>.</para>
<para>Die Verzeichnisstruktur des Paketbaums ist ein Abbild der
Ports, da beide Systeme eng zusammenarbeiten.</para>
</sect2>
<sect2>
<title>Verwalten von Paketen</title>
<indexterm>
<primary>Pakete</primary>
<secondary>verwalten</secondary>
</indexterm>
<para>&man.pkg.info.1; zeigt alle installierten Pakete und deren
Beschreibung an.</para>
<indexterm>
<primary><command>pkg_info</command></primary>
</indexterm>
<screen>&prompt.root; <userinput>pkg_info</userinput>
cvsup-16.1 A general network file distribution system optimized for CV
docbook-1.2 Meta-port for the different versions of the DocBook DTD
...</screen>
<para>&man.pkg.version.1; vergleicht die Version installierter Pakete
mit der Version aus der Ports-Sammlung.</para>
<indexterm>
<primary><command>pkg_version</command></primary>
</indexterm>
<screen>&prompt.root; <userinput>pkg_version</userinput>
cvsup =
docbook =
...</screen>
<para>Die Symbole in der zweiten Spalte zeigen das Alter des Pakets
im Vergleich zu der lokalen Version aus der Ports-Sammlung an.</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry>Symbol</entry>
<entry>Bedeutung</entry>
</row>
</thead>
<tbody>
<row>
<entry>=</entry>
<entry>Die Version des installierten Paketes stimmt mit der
Version aus der lokalen Ports-Sammlung überein.</entry>
</row>
<row>
<entry>&lt;</entry>
<entry>Die installierte Version ist älter als die der
verfügbaren Version aus der Ports-Sammlung.</entry>
</row>
<row>
<entry>&gt;</entry>
<entry>Die installierte Version ist neuer als die aus der
Ports-Sammlung (Eventuell ist die lokale Ports-Sammlung
veraltet).</entry>
</row>
<row>
<entry>?</entry>
<entry>Das installierte Paket konnte in der Ports-Sammlung
nicht gefunden werden. Das kann dadurch hervorgerufen
werden, dass ein installierter Port aus der
Ports-Sammlung entfernt wurde oder einen neuen
Namen erhalten hat.</entry>
</row>
<row>
<entry>*</entry>
<entry>In der Ports-Sammlung befinden sich mehrere Versionen
der Anwendung.</entry>
</row>
<row>
<entry>!</entry>
<entry>Das installierte Paket ist zwar im Index enthalten,
aus irgendeinem Grund war <command>pkg_version</command>
aber dennoch nicht in der Lage, die Versionsnummer des
installierten Pakets mit der Versionsnummer des
entsprechenden Eintrags im Index zu vergleichen.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2>
<sect2>
<title>Entfernen eines Pakets</title>
<indexterm>
<primary><command>pkg_delete</command></primary>
</indexterm>
<indexterm>
<primary>Pakete</primary>
<secondary>entfernen</secondary>
</indexterm>
<para>Um ein zuvor installiertes Paket zu entfernen, benutzen Sie das
Werkzeug &man.pkg.delete.1;.</para>
<screen>&prompt.root; <userinput>pkg_delete <replaceable>xchat-1.7.1</replaceable></userinput></screen>
<para>Beachten Sie, dass &man.pkg.delete.1; die vollständige
Bezeichnung des Pakets benötigt (also Paketname
<emphasis>und</emphasis> Versionsnummer). Die Eingabe von
<replaceable>xchat</replaceable> (anstelle von
<replaceable>xchat-1.7.1</replaceable>) ist daher nicht
ausreichend. Zwar können Sie die Versionsnummer eines
installierten Pakets mit &man.pkg.version.1; herausfinden,
es ist aber auch möglich, ein Paket zu deinstallieren,
ohne die exakte Versionsnummer zu kennen, wenn Sie Wildcards
einsetzen:</para>
<screen>&prompt.root; <userinput>pkg_delete <replaceable>xchat\*</replaceable></userinput></screen>
<para>In diesem Beispiel werden alle Pakete gelöscht, deren
Name mit <literal>xchat</literal> beginnt.</para>
</sect2>
<sect2>
<title>Verschiedenes</title>
<para>Informationen über alle installierte Pakete werden in
<filename>/var/db/pkg</filename> abgelegt. Das Verzeichnis
enthält Dateien, in denen sich die Beschreibungen der Pakete
und Listen von Dateien, die zu einem Paket gehören,
befinden.</para>
</sect2>
</sect1>
<sect1 id="ports-using">
<title>Benutzen der Ports-Sammlung</title>
<para>Die folgenden Abschnitte stellen die grundlegenden Anweisungen
vor, um Anwendungen aus der Ports-Sammlung auf
Ihren Rechner zu installieren oder zu löschen. &man.ports.7;
enthält eine Auflistung aller verfügbaren
<command>make</command>-Targets und Umgebungsvariablen.</para>
<sect2 id="ports-tree">
<title>Installation der Ports-Sammlung</title>
<para>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 <filename>/usr/ports</filename>
installiert.</para>
<para>Bei der FreeBSD-Installation hatten Sie in
<application>sysinstall</application> 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:</para>
<procedure>
<title>Installieren mit <application>CVSup</application></title>
<para>Dies ist eine schnelle Methode, um die Ports-Sammlung zu
installieren und zu aktualisieren.
<application>CVSup</application> wird im Abschnitt <link
linkend="cvsup">Benutzen von CVSup</link> des Handbuchs
beschrieben.</para>
<note>
<para>Die im Basissystem enthaltene Variante
des <application>CVSup</application>-Protokolls heißt
<application>csup</application>.</para>
</note>
<para>Achten Sie darauf, dass das Verzeichnis <filename
class="directory">/usr/ports</filename> leer ist, bevor Sie
<application>csup</application> das erste Mal ausführen!
Haben Sie die Ports-Sammlung zuvor schon aus einer anderen
Quelle installiert, wird <application>csup</application>
bereits aus dem Repository entfernte Patches nicht aus der
lokalen Kopie der Ports-Sammlung löschen.</para>
<step>
<para>Rufen Sie <command>csup</command> auf:</para>
<screen>&prompt.root; <userinput>csup -L 2 -h <replaceable>cvsup.FreeBSD.org</replaceable> /usr/share/examples/cvsup/ports-supfile</userinput></screen>
<para>Ersetzen Sie
<replaceable>cvsup.FreeBSD.org</replaceable> durch einen
<application>CVSup</application>-Server in Ihrer Nähe.
Eine vollständige Liste der
<application>CVSup</application>-Spiegel finden Sie im
Abschnitt <link linkend="cvsup-mirrors">CVSup-Server</link>
des Handbuchs.</para>
<note>
<para>Sie sollten sich eine an Ihre Bedürfnisse angepasste
<filename>ports-supfile</filename> erstellen, um so
beispielsweise zu vermeiden, dass Sie bei jedem Aufruf von
<application>CVSup</application> wieder die Parameterliste
übergeben müssen.</para>
<procedure>
<step>
<para>Dazu kopieren Sie zuerst als <username>root</username>
die Datei
<filename>/usr/share/examples/cvsup/ports-supfile</filename>
nach <filename>/root</filename> oder in Ihr
Heimatverzeichnis.</para>
</step>
<step>
<para>Danach müssen Sie die Datei
<filename>ports-supfile</filename> anpassen.</para>
</step>
<step>
<para>Dazu ersetzen Sie
<replaceable>cvsup.FreeBSD.org</replaceable> durch einen
<application>CVSup</application>-Server in Ihrer Nähe.
Eine vollständige Liste der
<application>CVSup</application>-Spiegel finden Sie im
Abschnitt <link linkend="cvsup-mirrors">CVSup-Server</link>
des Handbuchs.</para>
</step>
<step>
<para>Nun können Sie <command>csup</command> mit
folgender Syntax starten:</para>
<screen>&prompt.root; <userinput>csup -L 2 <replaceable>/root/ports-supfile</replaceable></userinput></screen>
</step>
</procedure>
</note>
</step>
<step>
<para>Mit &man.csup.1; können Sie später auch die
Ports-Sammlung aktualisieren. Die installierten Ports werden
mit diesem Kommando allerdings nicht aktualisiert.</para>
</step>
</procedure>
<procedure>
<title>Installieren mit Portsnap</title>
<para>Bei <application>Portsnap</application> handelt es sich
um ein alternatives System zur Distribution der Ports-Sammlung.
Eine detaillierte Beschreibung von
<application>Portsnap</application> finden Sie im Abschnitt
<link linkend="updating-upgrading-portsnap">Portsnap: Ein Werkzeug
zur Aktualisierung der Ports-Sammlung</link> des Handbuchs.</para>
<step>
<para>Laden Sie einen komprimierten Snapshot der Ports-Sammlung
in das Verzeichnis <filename
class="directory">/var/db/portsnap</filename> herunter. Danach
können Sie die Internetverbindung trennen, wenn Sie dies
wünschen.</para>
<screen>&prompt.root; <userinput>portsnap fetch</userinput></screen>
</step>
<step>
<para>Wenn Sie <application>Portsnap</application> das erste
Mal verwenden, müssen Sie den Snapshot nach
<filename class="directory">/usr/ports</filename>
extrahieren:</para>
<screen>&prompt.root; <userinput>portsnap extract</userinput></screen>
<para>Ist die Ports-Sammlung bereits installiert, und Sie
wollen diese nur aktualisieren, führen Sie
stattdessen folgenden Befehl aus:</para>
<screen>&prompt.root; <userinput>portsnap update</userinput></screen>
</step>
</procedure>
<procedure>
<title>Installieren mit <application>sysinstall</application></title>
<para>Nicht zuletzt ist es auch möglich, die Ports-Sammlung
über <application>sysinstall</application> 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
&os;-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.</para>
<step>
<para>Führen Sie als <username>root</username>
<command>sysinstall</command> aus:</para>
<screen>&prompt.root; <userinput>sysinstall</userinput></screen>
</step>
<step>
<para>Wählen Sie den Punkt <guimenuitem>Configure</guimenuitem>
aus und drücken Sie <keycap>Enter</keycap>.</para>
</step>
<step>
<para>Wählen Sie dann <guimenuitem>Distributions</guimenuitem>
aus und drücken Sie <keycap>Enter</keycap>.</para>
</step>
<step>
<para>In diesem Menü wählen Sie
<guimenuitem>ports</guimenuitem> aus und drücken die
<keycap>Leertaste</keycap>.</para>
</step>
<step>
<para>Danach wählen Sie <literal>Exit</literal> aus und
drücken <keycap>Enter</keycap>.</para>
</step>
<step>
<para>Legen Sie nun ein geeignetes Installationsmedium, wie CD-ROM
oder FTP, fest.</para>
</step>
<step>
<para>Wählen Sie nun <literal>Exit</literal> aus und
drücken <keycap>Enter</keycap>.</para>
</step>
<step>
<para>Verlassen Sie <application>sysinstall</application> mit
<keycap>X</keycap>.</para>
</step>
</procedure>
</sect2>
<sect2 id="ports-skeleton">
<title>Ports installieren</title>
<indexterm>
<primary>Ports</primary>
<secondary>installieren</secondary>
</indexterm>
<para>Was ist mit einem <quote>Gerüst</quote> 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:</para>
<itemizedlist>
<listitem>
<para>Eine Datei <filename>Makefile</filename>. Das
<filename>Makefile</filename> enthält verschiedene
Anweisungen, die spezifizieren, wie eine Anwendung kompiliert
wird und wo sie auf Ihrem System installiert werden
sollte.</para>
</listitem>
<listitem>
<para>Eine Datei <filename>distinfo</filename>. Diese
enthält Informationen, welche Dateien heruntergeladen
werden müssen sowie deren MD5-Prüfsummen
(die Sie mit &man.sha256.1;
überprüfen können, um sicher zu gehen,
dass diese Dateien während des Herunterladens nicht
beschädigt wurden).</para>
</listitem>
<listitem>
<para>Ein <filename>files</filename> Verzeichnis. Hierin
liegen Patches, welche das Übersetzen und Installieren
der Anwendung ermöglichen. Patches sind im Wesentlichen
kleine Dateien, die Änderungen an speziellen Dateien
spezifizieren. Sie liegen als reiner Text vor und sagen
ungefähr:
<quote>Lösche Zeile 10</quote> oder
<quote>Ändere Zeile 26 zu ...</quote>. Patches sind
auch bekannt unter dem Namen <quote>diffs</quote>, weil
Sie mit dem Programm &man.diff.1;
erstellt werden.</para>
<para>Dieses Verzeichnis kann auch noch andere Dateien enthalten,
welche zum Bauen des Ports benutzt werden.</para>
</listitem>
<listitem>
<para>Eine Datei <filename>pkg-descr</filename>. Eine
ausführlichere, oft mehrzeilige Beschreibung der
Anwendung.</para>
</listitem>
<listitem>
<para>Eine Datei <filename>pkg-plist</filename>. Das ist eine
Liste aller Dateien, die durch diesen Port installiert werden.
Außerdem sind hier Informationen enthalten, die zum
Entfernen des Ports benötigt werden.</para>
</listitem>
</itemizedlist>
<para>Einige Ports besitzen noch andere Dateien, wie
<filename>pkg-message</filename>, 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 <ulink url="&url.books.porters-handbook.en;/index.html">
FreeBSD Porter's Handbook</ulink>.</para>
<para>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
<quote>Distfile</quote> genannt. Die zwei Methoden, mit denen
ein Port installiert wird, werden unten besprochen.</para>
<note>
<para>Zum Installieren von Ports müssen Sie als Benutzer
<username>root</username> angemeldet sein.</para>
</note>
<warning>
<para>Stellen Sie sicher, dass die Ports-Sammlung
aktuell ist, bevor Sie einen Port installieren.
Informieren Sie sich vorher zusätzlich unter
<ulink url="http://vuxml.FreeBSD.org/"></ulink>
über mögliche Sicherheitsprobleme
des zu installierenden Ports.</para>
<para>Vor der Installation kann
<application>portaudit</application> eine neue Anwendung
automatisch auf Sicherheitslöcher prüfen.
Das Werkzeug befindet sich in der Ports-Sammlung
(<filename role="package">ports-mgmt/portaudit</filename>).
Vor der Installation einer neuen Anwendung sollten
Sie mit <command>portaudit -F</command> 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 &man.portaudit.1;
und &man.periodic.8;.</para>
</warning>
<para>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
<filename>/usr/ports/distfiles</filename> kopieren.</para>
<para>Dazu wechseln Sie als erstes in das Verzeichnis des
Ports, den Sie installieren wollen:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput></screen>
<para>Im Verzeichnis <filename>lsof</filename> kann man das
Gerüst erkennen. Der
nächste Schritt ist das Übersetzen (auch Bauen genannt)
des Ports durch die Eingabe des Befehls
<command>make</command>:</para>
<screen>&prompt.root; <userinput>make</userinput>
&gt;&gt; lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
&gt;&gt; Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===&gt; Extracting for lsof-4.57
...
[Ausgabe des Auspackens weggelassen]
...
&gt;&gt; Checksum OK for lsof_4.57D.freebsd.tar.gz.
===&gt; Patching for lsof-4.57
===&gt; Applying FreeBSD patches for lsof-4.57
===&gt; Configuring for lsof-4.57
...
[configure-Ausgabe weggelassen]
...
===&gt; Building for lsof-4.57
...
[Ausgabe der Übersetzung weggelassen]
...
&prompt.root;</screen>
<para>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 <command>make
<maketarget>install</maketarget></command>:</para>
<screen>&prompt.root; <userinput>make install</userinput>
===&gt; Installing for lsof-4.57
...
[Ausgabe der Installation weggelassen]
...
===&gt; Generating temporary packing list
===&gt; Compressing manual pages for lsof-4.57
===&gt; Registering installation for lsof-4.57
===&gt; SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
&prompt.root;</screen>
<para>Nachdem die Installation abgeschlossen ist, können Sie
die gerade installierte Anwendung starten. Da
<command>lsof</command> 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.</para>
<para>Es ist eine gute Idee, das Unterverzeichnis <filename
class="directory">work</filename> 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.</para>
<screen>&prompt.root; <userinput>make clean</userinput>
===&gt; Cleaning for lsof-4.57
&prompt.root;</screen>
<note>
<para>Sie können zwei Schritte sparen, wenn Sie gleich
<command>make <maketarget>install clean</maketarget> </command>
anstelle von <command>make</command>, <command>make
install</command> und <command>make
clean</command> eingeben.</para>
</note>
<note>
<para>Um die Suche nach Kommandos zu beschleunigen, speichern
einige Shells eine Liste der verfügbaren Kommandos in den
durch die Umgebungsvariable <envar>PATH</envar> gegebenen
Verzeichnissen. Nach der Installation eines Ports müssen
Sie in einer solchen Shell vielleicht das Kommando
<command>rehash</command> absetzen, um die neu installierten
Kommandos benutzen zu können. Das Kommando
<command>rehash</command> gibt es in Shells wie
der <command>tcsh</command>. Unter Shells wie
der <command>sh</command>
benutzen Sie das Kommando <command>hash -r</command>.
Weiteres entnehmen Sie bitte der Dokumentation
Ihrer Shell.</para>
</note>
<para>Einige von Dritten angebotenen DVD-ROM-Produkte wie das
FreeBSD Toolkit von der <ulink
url="http://www.freebsdmall.com/">FreeBSD Mall</ulink>
enthalten auch Distfiles (komprimierte Quellcodepakete).
Diese lassen sich über die Ports-Sammlung installieren.
Dazu hängen Sie die DVD-ROM unter
<filename>/cdrom</filename> in den Verzeichnisbaum ein. Wenn
Sie einen anderen Mountpunkt verwenden, sollten Sie die
make-Variable <makevar>CD_MOUNTPTS</makevar> setzen, damit die
auf der DVD-ROM enthaltenen Distfiles automatisch verwendet
werden.</para>
<note>
<para>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.</para>
</note>
<para>Die Ports-Sammlung benutzt zum Herunterladen von Dateien
&man.fetch.3;, das Umgebungsvariablen wie
<envar>FTP_PASSIVE_MODE</envar>, <envar>FTP_PROXY</envar> und
<envar>FTP_PASSWORD</envar> 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 &man.fetch.3;.</para>
<para>Benutzer ohne eine ständige Internet-Verbindung
werden das Kommando <command>make fetch</command> zu
schätzen wissen. Das Kommando lädt alle
benötigten Dateien eines Ports herunter. Sie
können das Kommando im Verzeichnis
<filename>/usr/ports</filename> laufen lassen. In diesem
Fall werden <emphasis>alle</emphasis> Dateien
heruntergeladen. Es ist auch möglich, <command>make
<maketarget>fetch</maketarget></command> nur in einem Teil
des Baums, wie <filename>/usr/ports/net</filename>,
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
<maketarget>fetch</maketarget> durch
<maketarget>fetch-recursive</maketarget>.</para>
<note>
<para>Abhängig davon, in welchem Verzeichnis
Sie <command>make</command> aufrufen, können
Sie analog zu <command>make fetch</command> 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.</para>
</note>
<para>Manchmal ist es erforderlich, die benötigten
Dateien von einem anderen Ort als den im Port vorgesehenen
herunterzuladen. Der Ort wird durch die Variable
<makevar>MASTER_SITES</makevar> vorgegeben, die Sie
wie folgt überschreiben können:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/<replaceable>directory</replaceable></userinput>
&prompt.root; <userinput>make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen>
<para>Im Beispiel wurde <makevar>MASTER_SITES</makevar>
mit dem Wert
<literal>ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/</literal>
überschrieben.</para>
<note>
<para>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
<filename role="package">www/firefox</filename>,
<filename role="package">security/gpgme</filename> und
<filename role="package">mail/sylpheed-claws</filename>
angegeben werden. Wenn ein Port über zusätzliche
Optionen verfügt, werden diese beim Bau des
Ports auf der Konsole ausgegeben.</para>
</note>
<sect3>
<title>Vorgabe-Verzeichnisse ändern</title>
<para>Manchmal ist es nützlich (oder erforderlich),
in anderen Verzeichnissen zu arbeiten. Die Verzeichnisse
können Sie mit den Variablen <makevar>WRKDIRPREFIX</makevar>
und <makevar>PREFIX</makevar> einstellen. Die Variable
<makevar>WRKDIRPREFIX</makevar> gibt das Bauverzeichnis an:</para>
<screen>&prompt.root; <userinput>make WRKDIRPREFIX=/usr/home/example/ports install</userinput></screen>
<para>Dieses Kommando baut den Port in
<filename>/usr/home/example/ports</filename> und installiert
ihn unter <filename>/usr/local</filename>.</para>
<para>Die Variable <makevar>PREFIX</makevar> legt das
Installations-Verzeichnis fest:</para>
<screen>&prompt.root; <userinput>make PREFIX=/usr/home/example/local install</userinput></screen>
<para>In diesem Beispiel wird der Port unter
<filename>/usr/ports</filename> gebaut und nach
<filename>/usr/home/example/local</filename> installiert.</para>
<para>Sie können beide Variablen auch zusammen
benutzen:</para>
<screen>&prompt.root; <userinput>make WRKDIRPREFIX=../ports PREFIX=../local install</userinput></screen>
<para>Die Kommandozeile ist zu lang, um sie hier komplett
wiederzugeben, aber Sie sollten die zugrunde liegende
Idee erkennen.</para>
</sect3>
<sect3>
<title>Probleme mit <command>imake</command></title>
<indexterm><primary>imake</primary></indexterm>
<para>Einige Ports, welche &man.imake.1; (Teil des
X-Window-Systems) benutzen, funktionieren nicht gut
mit <makevar>PREFIX</makevar> und bestehen darauf,
unter <filename>/usr/X11R6</filename> installiert
zu werden. In ähnlicher Weise verhalten sich
einige Perl-Ports, die <makevar>PREFIX</makevar>
ignorieren und sich in den Perl-Verzeichnisbaum
installieren. Zu erreichen, dass solche Ports
<makevar>PREFIX</makevar> beachten, ist
schwierig oder sogar unmöglich.</para>
</sect3>
<sect3>
<title>Ports rekonfigurieren</title>
<para>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
<command>make</command> <maketarget>config</maketarget>
eingeben, wodurch das Menü mit den ursprünglichen
gewählten Optionen erneut aufgerufen wird. Eine andere
Möglichkeit bietet der Befehl <command>make</command>
<maketarget>showconfig</maketarget>, mit dem Sie eine Liste aller
Konfigurationsoptionen dieses Ports aufrufen. Eine weitere
Alternative bietet der Befehl <command>make</command>
<maketarget>rmconfig</maketarget>, 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 &man.ports.7; beschrieben.</para>
</sect3>
</sect2>
<sect2 id="ports-removing">
<title>Entfernen installierter Ports</title>
<indexterm>
<primary>Ports</primary>
<secondary>entfernen</secondary>
</indexterm>
<para>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 &man.pkg.delete.1; deinstalliert (Lesen Sie sich den
Abschnitt <link linkend="packages-using">Benutzen des
Paketsystems</link> des Handbuchs durch, wenn Sie weitere Informationen
benötigen.). Für das vorhin installierte Programm
<command>lsof</command> würden Sie dazu wie folgt
vorgehen:</para>
<screen>&prompt.root; <userinput>pkg_delete lsof-4.57</userinput></screen>
</sect2>
<sect2 id="ports-upgrading">
<title>Ports aktualisieren</title>
<indexterm>
<primary>Ports</primary>
<secondary>aktualisieren</secondary>
</indexterm>
<para>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
&man.pkg.version.1;:</para>
<screen>&prompt.root; <userinput>pkg_version -v</userinput></screen>
<sect3 id="ports-file-updating">
<title><filename>/usr/ports/UPDATING</filename></title>
<para>Nachdem Sie die Ports-Sammlung auf den neusten
Stand gebracht haben, lesen Sie bitte zuerst die Datei
<filename>/usr/ports/UPDATING</filename>, 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.</para>
<para>Sollte <filename>UPDATING</filename> etwas hier Gesagtem
widersprechen, so gilt das in <filename>UPDATING</filename>
Gesagte.</para>
</sect3>
<sect3 id="portupgrade">
<title>Ports mit Portupgrade aktualisieren</title>
<indexterm>
<primary>portupgrade</primary>
</indexterm>
<para><application>portupgrade</application> wurde entwickelt, um
die Aktualisierung von Ports zu vereinfachen. Sie können
<application>portupgrade</application> über den Port
<filename role="package">ports-mgmt/portupgrade</filename> wie
jeden anderen Port mit <command>make <maketarget>install
clean</maketarget></command> installieren:</para>
<screen>&prompt.root; <userinput>cd <filename class="directory">/usr/ports/ports-mgmt/portupgrade/</filename></userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para>Durchsuchen Sie regelmäßig (am besten vor jeder
Aktualisierung) die Liste der installierten Ports mit
<command>pkgdb -F</command> und beheben Sie alle gefundenen
Probleme.</para>
<para>Wenn Sie <command>portupgrade -a</command> eingeben,
beginnt <application>portupgrade</application> automatisch mit
der Aktualisierung aller veralteter Ports Ihres Systems.
Verwenden Sie den Schalter <option>-i</option>, wenn Sie
individuell entscheiden wollen, ob ein Port aktualisiert werden
soll:</para>
<screen>&prompt.root; <userinput>portupgrade -ai</userinput></screen>
<para>Wenn Sie nur eine einzelne Anwendung anstelle
aller Anwendungen aktualisieren wollen, verwenden
Sie das Kommando
<command>portupgrade <replaceable>pkgname</replaceable></command>.
Geben Sie den Schalter <option>-R</option> an, wenn
<application>portupgrade</application> zuvor alle
Ports aktualisieren soll, die von dem gegebenen
Paket abhängen.</para>
<para>Der Schalter <option>-P</option> verwendet zur
Installation Pakete anstelle von Ports. Mit dieser
Option durchsucht <application>portupgrade</application>
die in der Umgebungsvariablen <envar>PKG_PATH</envar>
aufgeführten Verzeichnisse nach Paketen. Sind
lokal keine Pakete vorhanden, versucht
<application>portupgrade</application> 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 <option>-PP</option>.</para>
<screen>&prompt.root; <userinput>portupgrade -PP gnome2</userinput></screen>
<para>Wenn Sie nur die Quelldateien des Ports (oder die Pakete
mit <option>-P</option>) herunterladen möchten,
ohne die Anwendung zu bauen oder zu installieren,
geben Sie die Option <option>-F</option> an.
Weitere Möglichkeiten lesen Sie bitte in
der Hilfeseite &man.portupgrade.1; nach.</para>
</sect3>
<sect3 id="portmanager">
<title>Ports mit Portmanager aktualisieren</title>
<indexterm>
<primary>portmanager</primary>
</indexterm>
<para><application>Portmanager</application> ist ein weiteres
Werkzeug, das die Aktualisierung installierter Ports
erleichtert. Es kann über den Port
<filename role="package">ports-mgmt/portmanager</filename>
installiert werden:</para>
<screen>&prompt.root; <userinput>cd <filename class="directory">/usr/ports/ports-mgmt/portmanager</filename></userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para>Alle installierten Ports können danach durch folgende
Eingabe aktualisiert werden:</para>
<screen>&prompt.root; <userinput>portmanager -u</userinput></screen>
<para>Wenn Sie zusätzlich die Optionen <option>-ui</option>
an <application>Portmanager</application> übergeben, werden
Sie bei jedem Schritt um eine Bestätigung gefragt.
<application>Portmanager</application> ist außerdem in
der Lage, neue Ports auf Ihrem System zu installieren. Im
Gegensatz zum bekannten <command>make install clean</command>
aktualisiert es aber vor dem Bau und der Installation eines
Ports alle abhängigen Ports.</para>
<screen>&prompt.root; <userinput>portmanager <replaceable>x11/gnome2</replaceable></userinput></screen>
<para>Treten bei den Abhängigkeiten des zu installierenden
Ports Probleme auf, ist <application>Portmanager</application>
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.</para>
<screen>&prompt.root; <userinput>portmanager <replaceable>graphics/gimp</replaceable> -f</userinput></screen>
<para>Weitere Informationen finden Sie in der Manualpage
&man.portmanager.1;.</para>
</sect3>
<sect3 id="portmaster">
<title>Ports mit Portmaster aktualisieren</title>
<indexterm>
<primary>portmaster</primary>
</indexterm>
<para>Bei <application>Portmaster</application> handelt es sich
um ein weiteres Werkzeug zum Aktualisieren von Ports.
<application>Portmaster</application> nutzt nur Werkzeuge, die
bereits im Basissystem vorhanden sind (ist also nicht von
weiteren Ports abhängig). Es verwendet Informationen
in <filename class="directory">/var/db/pkg/</filename>, um
festzustellen, welche Ports aktualisiert werden sollen.
Sie können dieses Program über den Port
<filename role="package">ports-mgmt/portmaster</filename>
installieren:</para>
<screen>&prompt.root; <userinput>cd <filename class="directory">/usr/ports/ports-mgmt/portmaster</filename></userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para><application>Portmaster</application> teilt Ports in vier
Kategorien ein:</para>
<itemizedlist>
<listitem>
<para>Root ports (no dependencies, not depended on)</para>
</listitem>
<listitem>
<para>Trunk ports (no dependencies, are depended on)</para>
</listitem>
<listitem>
<para>Branch ports (have dependencies, are depended on)</para>
</listitem>
<listitem>
<para>Leaf ports (have dependencies, not depended on)</para>
</listitem>
</itemizedlist>
<para>Um eine Liste aller installierter Ports anzuzeigen (und nach
neueren Versionen zu suchen), verwenden Sie die Option
<option>-L</option>:</para>
<screen>&prompt.root; <userinput>portmaster -L</userinput>
===>>> 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
</screen>
<para>Um alle derzeit installierten Ports zu aktualisieren,
verwenden Sie einfach den folgenden Befehl:</para>
<screen>&prompt.root; <userinput>portmaster -a</userinput></screen>
<note><para>In der Voreinstellung erzeugt
<application>Portmaster</application> 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
<option>-b</option> beim Aufruf von
<application>Portmaster</application>. Durch die Verwendung
der Option <option>-i</option> wird
<application>Portmaster</application> im interaktiven
Modus gestartet und fragt bei jedem zu aktualisierenden Port
nach, wie Sie vorgehen wollen.</para></note>
<para>Treten während der Aktualisierung Fehler auf, können
Sie die Option <option>-f</option> verwenden, um alle Ports zu
aktualisieren beziehungsweise neu zu bauen:</para>
<screen>&prompt.root; <userinput>portmaster -af</userinput></screen>
<para><application>Portmaster</application> ist auch in der Lage,
neue Ports zu installieren, wobei zuvor alle abhängigen Ports
aktualisiert werden:</para>
<screen>&prompt.root; <userinput>portmaster <replaceable>shells/bash</replaceable></userinput></screen>
<para>Weiterführende Informationen finden Sie in der Manualpage
&man.portmaster.8;.</para>
</sect3>
</sect2>
<sect2 id="ports-disk-space">
<title>Platzbedarf von Ports</title>
<indexterm>
<primary>Ports</primary>
<secondary>Plattenplatz</secondary>
</indexterm>
<para>Die Ports-Sammlung kann sehr viel Plattenplatz
verschlingen. Führen Sie nach dem Bau und der
Installation eines Ports <command>make
<maketarget>clean</maketarget></command> aus, um die
Arbeitsverzeichnisse zu löschen. Dieser Befehl
entfernt das Verzeichnis <filename
class="directory">work</filename> des gebauten Ports.
Wollen Sie die gesamte Ports-Sammlung aufräumen,
verwenden Sie folgenden Befehl:</para>
<screen>&prompt.root; <userinput>portsclean -C</userinput></screen>
<para>Im Laufe der Zeit werden sich zahlreiche Distfiles im
Verzeichnis <filename class="directory">distfiles</filename>
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:</para>
<screen>&prompt.root; <userinput>portsclean -D</userinput></screen>
<para>Falls Sie nur alle Distfiles löschen wollen, die von
keinem derzeit installierten Port referenziert werden:</para>
<screen>&prompt.root; <userinput>portsclean -DD</userinput></screen>
<note>
<para>Das Werkzeug <command>portsclean</command> wird
automatisch bei der Installation von
<application>portupgrade</application> mit installiert.</para>
</note>
<para>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 <filename
role="package">ports-mgmt/pkg_cutleaves</filename>
installieren.</para>
</sect2>
</sect1>
<sect1 id="ports-nextsteps">
<title>Nach der Installation</title>
<para>Nach der Installation einer neuen Anwendung wollen Sie
wahrscheinlich die mitgelieferte Dokumentation lesen und die
Konfigurationsdateien der Anwendung anpassen. Wenn die Anwendung
ein D&aelig;mon ist, sollten Sie sicherstellen, dass die
Anwendung beim Booten startet.</para>
<para>Die einzelnen Schritte sind natürlich von Anwendung zu
Anwendung verschieden. Wenn Sie sich allerdings nach der Installation
einer Anwendung die Frage <quote>Was nun?</quote> stellen, helfen die
folgenden Hinweise vielleicht weiter.</para>
<itemizedlist>
<listitem>
<para>Finden Sie mit &man.pkg.info.1; heraus, welche Dateien die
Anwendung wo installiert hat. Wenn Sie beispielsweise gerade
die Version 1.0.0 von FooPackage installiert haben, zeigt Ihnen
das folgende Kommando alle installierten Dateien des
Pakets:</para>
<screen>&prompt.root; <userinput>pkg_info -L foopackage-1.0.0 | less</userinput></screen>
<para>Achten Sie besonders auf die Manualpages, die Sie in
<filename>man/</filename> Verzeichnissen finden und auf
Konfigurationsdateien, die in <filename>etc/</filename> abgelegt
werden. Manche Pakete enthalten in <filename>doc/</filename>
zusätzliche Dokumentation.</para>
<para>Wenn Sie sich nicht sicher sind, welche Version einer
Anwendung Sie gerade installiert haben, können Sie mit dem
folgenden Kommando nach der Anwendung suchen:</para>
<screen>&prompt.root; <userinput>pkg_info | grep -i <replaceable>foopackage</replaceable></userinput></screen>
<para>Das Kommando zeigt alle installierten Pakete, deren
Paketname <replaceable>foopackage</replaceable> enthält.
Ersetzen Sie <replaceable>foopackage</replaceable> durch den
Namen der Anwendung, die Sie suchen.</para>
</listitem>
<listitem>
<para>Nachdem Sie die Manualpages der Anwendung gefunden haben,
lesen Sie diese bitte mit &man.man.1;. Schauen Sie sich auch die
Beispiele für Konfigurationsdateien und die zusätzliche
Dokumentation, wenn es welche gibt, an.</para>
</listitem>
<listitem>
<para>Wenn es für die Anwendung eine Webseite gibt, suchen
Sie dort nach zusätzlicher Dokumentation wie FAQs
(häufig gestellte Fragen). Wenn Sie die Adresse der Webseite
nicht kennen, versuchen Sie das folgende Kommando:</para>
<screen>&prompt.root; <userinput>pkg_info <replaceable>foopackage-1.0.0</replaceable></userinput></screen>
<para>Die Ausgabe enthält oft eine Zeile, die mit
<literal>WWW:</literal> beginnt und die URL der Webseite
enthält.</para>
</listitem>
<listitem>
<para>Ports, die während des Systemstarts gestartet
werden sollen, installieren meist ein Beispielskript im
Verzeichnis <filename>/usr/local/etc/rc.d</filename>.
Überprüfen Sie dieses Skript. Wenn nötig,
passen Sie das Skript an und benennen Sie es um. Weitere
Informationen finden Sie in
<xref linkend="configtuning-starting-services"/>.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="ports-broken">
<title>Kaputte Ports</title>
<para>Stolpern Sie einmal über einen Port, der bei Ihnen nicht
funktioniert, könnten Sie zum Beispiel Folgendes tun:</para>
<orderedlist>
<listitem>
<para>Stellen Sie fest, ob die
<ulink url="&url.base;/de/support.html#gnats">Datenbank mit den
Problemberichten</ulink> bereits einen Lösungsvorschlag
enthält. Ist dies der Fall, können Sie die
vorgeschlagene Lösung testen.</para>
</listitem>
<listitem>
<para>Bitten Sie den Betreuer des Ports um Hilfe. Geben
Sie dazu <command>make <maketarget>maintainer</maketarget></command>
ein oder lesen Sie das <filename>Makefile</filename> im Verzeichnis
des Ports, um an die E-Mail-Adresse zu kommen. Vergessen Sie nicht
den Namen und die Version des Ports (schicken Sie die Zeile mit
<literal>&dollar;FreeBSD:</literal> aus dem
<filename>Makefile</filename>) und die Ausgabe bis zur Fehlermeldung
mitzuschicken.</para>
<note>
<para>Einige Ports werden nicht von einer Einzelperson, sondern
von einer <ulink
url="&url.articles.mailing-list-faq.en;/article.html">
Mailingliste</ulink> betreut. Viele (aber nicht alle) dieser
Adressen haben die Form
<email role="nolink">freebsd-NameDerListe@FreeBSD.org</email>.
Denken Sie daran, wenn Sie Ihre Fragen formulieren.</para>
<para>Dies gilt insbesondere für Ports, die als als
Betreuer den Eintrag <email
role="nolink">ports@FreeBSD.org</email> aufweisen.
Derartige Ports haben überhaupt keinen Betreuer.
Korrekturen und Unterstützung kommen daher nur von
Personen, die diese Mailingliste abonniert haben. Gerade
in diesem Bereich werden jederzeit zusätzliche
freiwillige Helfer benötigt!</para>
</note>
<para>Erhalten Sie auf Ihre Anfrage keine Antwort, können
Sie über &man.send-pr.1; einen Problembericht erstellen.
Bevor Sie einen solchen Bericht erstellen, sollten Sie den
Artikel <ulink
url="&url.articles.problem-reports.en;/article.html">Writing
FreeBSD Problem Reports</ulink> lesen.</para>
</listitem>
<listitem>
<para>Reparieren Sie ihn! Das <ulink
url="&url.books.porters-handbook.en;/index.html">FreeBSD
Porter's Handbook</ulink> enthält eine detaillierte
Beschreibung des Portsystems. Damit sind Sie in der Lage,
einen gelegentlich kaputten Port zu reparieren oder einen
eigenen Port zu erstellen.</para>
</listitem>
<listitem>
<para>Holen Sie sich das Paket von einem FTP-Server in Ihrer
Nähe. Die <quote>Basis</quote>-Sammlung aller Pakete
liegt auf <hostid role="fqdn">ftp.de.FreeBSD.org</hostid> im
Verzeichnis <ulink
url="ftp://ftp.de.FreeBSD.org/pub/FreeBSD/ports/packages/">packages</ulink>.
Aber versuchen Sie <emphasis>zuerst</emphasis> einen <link
linkend="mirrors-ftp">Spiegel in Ihrer Nähe</link>! Benutzen Sie
das Programm &man.pkg.add.1;, um Pakete auf Ihrem Rechner zu
installieren. Dies hat zudem den Vorteil, dass es schneller
geht.</para>
</listitem>
</orderedlist>
</sect1>
</chapter>