doc/de_DE.ISO8859-1/books/handbook/ports/chapter.xml
Bjoern Heidotting b30651a317 Update to r41084:
Revert incorrect use of &os;
Remove note about lacking pkgng support in older releases.
2015-10-09 21:42:15 +00:00

2003 lines
74 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/ports/chapter.xml,v 1.111 2011/12/19 17:13:33 bcr Exp $
basiert auf: r41084
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="ports">
<info><title>Installieren von Anwendungen: Pakete und Ports</title>
<authorgroup>
<author><personname><firstname>Uwe</firstname><surname>Pierau</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<sect1 xml:id="ports-synopsis">
<title>Übersicht</title>
<indexterm><primary>Ports</primary></indexterm>
<indexterm><primary>Pakete</primary></indexterm>
<para>&os; enthält eine umfassende Sammlung von Systemwerkzeugen,
die Teil des Basissystems sind. Allerdings ist man früher oder
später auf Software Dritter angewiesen, damit bestimmte Arbeiten
durchgeführt werden können. Um diese Software zu installieren,
stellt &os; 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).
Beide Methoden können benutzt werden, um Anwendungen 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 die Voreinstellungen der Ports-Sammlung
überschrieben werden können.</para>
</listitem>
<listitem>
<para>Die Suche nach geeigneter Software.</para>
</listitem>
<listitem>
<para>Wie Anwendungen aktualisiert werden.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="ports-overview">
<title>Installation von Software</title>
<para>Die typischen Schritte zur Installation von
Drittanbieter-Software auf einem &unix; System sind:</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 in
<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>Wenn Sie Software installieren, die nicht speziell für
&os; geschrieben wurde, müssen Sie vielleicht sogar den
Quelltext anpassen, damit die Software funktioniert.</para>
<para>&os; bietet zwei Technologien an, die diese Schritte für Sie
durchführen. Zurzeit werden über &os.numports; Anwendungen
Dritter zur Verfügung gestellt.</para>
<para>Ein &os;-Paket enthält vorkompilierte Kopien aller Befehle
für eine Anwendung, sowie zusätzliche Konfigurationsdateien und
Dokumentation. Zur Handhabung der Pakete stellt &os; Kommandos
wie &man.pkg.add.1;, &man.pkg.delete.1; und &man.pkg.info.1; zur
Verfügung.</para>
<para>Ein &os;-Port ist eine Sammlung von Dateien, die das
Kompilieren der Quelltexte einer Anwendung automatisieren. Die
Dateien, die ein Port umfasst enthalten alle notwendigen
Informationen um die Anwendung herunterzuladen, zu extrahieren,
anzupassen und zu installieren.</para>
<para>Das Portsystem kann auch dazu benutzt werden, Pakete zu
generieren, die mit den Paketverwaltungswerkzeugen von &os;
manipuliert werden können.</para>
<para>Pakete und Ports beachten
<emphasis>Abhängigkeiten</emphasis> zwischen Anwendungen.
Wenn &man.pkg.add.1; oder die Ports-Sammlung benutzt wird,
um eine Anwendung zu installieren, dann werden fehlende
Bibliotheken zuerst installiert, sofern sie nicht schon vorher
installiert waren.</para>
<para>Obwohl beide Technologien recht ähnlich sind, so haben
Pakete und Ports jeweils ihre eigenen Stärken. Welche
Technologie eingesetzt wird, hängt letzten Endes von den
Anforderungen ab, die an eine bestimmte Anwendung gestellt
werden.</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 große Pakete wie
<application>Mozilla</application>,
<application>KDE</application> oder
<application>GNOME</application> auf langsamen Maschinen
installiert werden.</para>
</listitem>
<listitem>
<para>Wenn Sie Pakete verwenden, brauchen Sie nicht zu
verstehen, wie Software unter &os; kompiliert wird.</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.
Wird eine Anwendung über die Ports übersetzt, können die
Optionen nach eigenen Bedürfnissen angepasst werden.</para>
</listitem>
<listitem>
<para>Die Eigenschaften einiger Anwendungen werden über
Optionen zum Zeitpunkt des Übersetzens festgelegt.
<application>Apache</application> kann zum Beispiel über
eine große Auswahl an eingebauten Optionen konfiguriert
werden.</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 <application>Xorg</application> Unterstützung
unterscheiden. Das Erstellen von verschiedenen Paketen 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, der durch den Benutzer kompiliert werden muss,
ausgeliefert werden.</para>
</listitem>
<listitem>
<para>Einige Leute trauen binären Distributionen nicht, oder
sie ziehen es vor den Quelltext zu lesen, um diesen nach
möglichen Problemen zu durchsuchen.</para>
</listitem>
<listitem>
<para>Wenn Sie eigene Anpassungen besitzen, benötigen Sie den
Quelltext, um diese anzuwenden.</para>
</listitem>
</itemizedlist>
<para>Wenn Sie über aktualisierte Ports informiert sein wollen,
lesen Sie die Mailinglisten &a.ports; und &a.ports-bugs;.</para>
<warning>
<para>Bevor Sie eine Anwendung installieren, informieren Sie
sich auf der Seite <uri
xlink:href="http://vuxml.FreeBSD.org/">http://vuxml.FreeBSD.org/</uri>
über mögliche Sicherheitsprobleme mit der Anwendung, oder
installieren Sie <package>ports-mgmt/portaudit</package>.
Installierte Anwendungen prüfen Sie mit
<command>portaudit -F -a</command> auf bekannte
Sicherheitsprobleme untersucht werden.</para>
</warning>
<para>Der Rest dieses Kapitels beschreibt, wie man Software
Dritter mit Paketen und Ports unter &os; installiert und
verwaltet.</para>
</sect1>
<sect1 xml:id="ports-finding-applications">
<title>Suchen einer Anwendung</title>
<para>Die Anzahl der nach &os; portierten Anwendungen steigt
ständig. Es gibt einige Wege, um nach Anwendungen zu
suchen:</para>
<itemizedlist>
<listitem>
<para>Die &os;-Webseite stellt unter
<link xlink:href="&url.base;/ports/index.html">http://www.FreeBSD.org/ports/</link>
eine aktuelle und durchsuchbare Liste aller Anwendungen zur
Verfügung. Die Ports können nach dem Namen den Anwendung,
oder über die Software-Kategorie durchsucht werden.</para>
</listitem>
<listitem>
<indexterm><primary>FreshPorts</primary></indexterm>
<para>Dan Langille verwaltet <uri
xlink:href="http://www.FreshPorts.org/">FreshPorts</uri>,
das eine umfassende Suchfunktion bietet und Änderungen an
den Anwendungen in der Ports-Sammlung verfolgt.
Registrierte Benutzer können eine Merkliste erstellen, um
automatisch eine E-Mail zu erhalten, sobald ein Port von
dieser Liste aktualisiert wurde.</para>
</listitem>
<listitem>
<indexterm><primary>Freecode</primary></indexterm>
<para>Wenn Sie den Namen einer Anwendung nicht kennen, versuchen
Sie eine Webseite wie <uri
xlink:href="http://www.freecode.com/">Freecode.com</uri>,
um eine passende Anwendung zu finden. Schauen Sie dann auf der
&os;-Webseite nach, ob die Anwendung schon portiert
wurde.</para>
</listitem>
<listitem>
<para>Verwenden Sie
<command>whereis <replaceable>Datei</replaceable></command>
um herauszufinden, in welcher Kategorie ein Port ist, wobei
<replaceable>Datei</replaceable> der Name des Programms ist,
das installiert werden soll:</para>
<screen>&prompt.root; <userinput>whereis lsof</userinput>
lsof: /usr/ports/sysutils/lsof</screen>
<para>Alternativ kann der &man.echo.1;-Befehl verwendet
werden:</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>/usr/ports/distfiles</filename>
findet, auf die der angegebene Suchbegriff passt.</para>
</listitem>
<listitem>
<para>Ein weiterer Weg nach Software zu suchen besteht darin,
die eingebaute Suchfunktion der Ports-Sammlung zu benutzen.
Wechseln Sie dazu in das Verzeichnis
<filename>/usr/ports</filename>, und rufen Sie <command>make
search name=Anwendungsname</command> auf, wobei
<replaceable>Anwendungsname</replaceable> der Name der
Software ist. Um zum Beispiel nach <command>lsof</command>
zu 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>Die <quote>Path:</quote>-Zeile zeigt an, wo der Port zu
finden ist.</para>
<para>Um weniger Informationen zu erhalten, benutzen Sie die
Funktion <command>quicksearch</command>:</para>
<screen>&prompt.root; <userinput>cd /usr/ports</userinput>
&prompt.root; <userinput>make quicksearch name=lsof</userinput>
Port: lsof-4.87.a,7
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))</screen>
<para>Erweiterte Suchen führen Sie mit
<command>make search
key=<replaceable>Text</replaceable></command> oder
<command>make quicksearch
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 der
Name des Programms nicht bekannt ist.</para>
<para>Bei der Verwendung von <buildtarget>search</buildtarget>
und <buildtarget>quicksearch</buildtarget> 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 xml:id="packages-using">
<info><title>Verwendung von Binärpaketen</title>
<authorgroup>
<author><personname><firstname>Chern</firstname><surname>Lee</surname></personname><contrib>Beigesteuert von </contrib></author>
</authorgroup>
</info>
<para>Es gibt viele unterschiedliche Werkzeuge um Pakete in &os;
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>Benutzen Sie &man.pkg.add.1;, um ein &os;-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 ftp2.FreeBSD.org</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&gt;</prompt> <userinput>cd /pub/FreeBSD/ports/packages/sysutils/</userinput>
250 CWD command successful.
<prompt>ftp&gt;</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&gt;</prompt> <userinput>exit</userinput>
&prompt.root; <userinput>pkg_add lsof-4.56.4.tgz</userinput></screen>
</example>
<para>Wenn Sie die Pakete nicht lokal vorliegen haben, zum Beispiel
auf den &os;-CD-ROMs, verwenden Sie den
Schalter <option>-r</option> von &man.pkg.add.1;. Dies
bestimmt automatisch das nötige Objektformat und
die richtige Version des Pakets, lädt dieses dann von einem
FTP-Server und installiert es, ohne das weitere
Benutzereingriffe nötig sind.</para>
<indexterm>
<primary><command>pkg_add</command></primary></indexterm>
<screen>&prompt.root; <userinput>pkg_add -r lsof</userinput></screen>
<para>Wenn Sie einen anderen &os; FTP-Mirror verwenden möchten,
geben Sie den Mirror in der Umgebungsvariablen
<envar>PACKAGESITE</envar> an. &man.pkg.add.1; benutzt
&man.fetch.3;, um Dateien herunterzuladen. Umgebungsvariablen wie
<envar>FTP_PASSIVE_MODE</envar>, <envar>FTP_PROXY</envar> und
<envar>FTP_PASSWORD</envar> werden dabei 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;.
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.</para>
<note>
<para>Unter &os.current; oder &os.stable; holt &man.pkg.add.1;
die neueste Version einer Anwendung. Unter einer -RELEASE
Version holt es die Version der Anwendung, die
im Release enthalten ist. Sie können dieses Verhalten
ändern, indem Sie die Umgebungsvariable
<envar>PACKAGESITE</envar> überschreiben. Auf einem
&os;&nbsp;8.1-RELEASE System, 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. Um &man.pkg.add.1; zu zwingen, nur
&os;&nbsp;8-STABLE-Pakete herunterzuladen, setzen Sie
<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 sind unter
<uri xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/">ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/</uri>,
oder auf der &os;-DVD-Distribution. Die Struktur des
Paketbaums entspricht der Verzeichnisstruktur unter
<filename>/usr/ports</filename>. Jede Kategorie besitzt ein
eigenes Verzeichnis und alle Pakete befinden sich im
Verzeichnis <filename>All</filename>.</para>
</sect2>
<sect2>
<title>Verwalten von Paketen</title>
<indexterm>
<primary>Pakete</primary>
<secondary>verwalten</secondary>
</indexterm>
<para>&man.pkg.info.1; kann dazu benutzt werden, alle
installierten Pakete und deren Beschreibung anzuzeigen.</para>
<indexterm>
<primary><command>pkg_info</command></primary>
</indexterm>
<screen>&prompt.root; <userinput>pkg_info</userinput>
colordiff-1.0.13 A tool to colorize diff output
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>
colordiff =
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 lokalen
Ports-Sammlung.</entry>
</row>
<row>
<entry>&gt;</entry>
<entry>Die installierte Version ist neuer als die aus
der Ports-Sammlung, was vermutlich bedeutet, dass
die lokale Ports-Sammlung veraltet ist.</entry>
</row>
<row>
<entry>?</entry>
<entry>Das installierte Paket konnte im Ports-Index
nicht gefunden werden. Dies kann passieren, wenn 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 &man.pkg.delete.1;.</para>
<screen>&prompt.root; <userinput>pkg_delete xchat-1.7.1</userinput></screen>
<para>Beachten Sie, dass &man.pkg.delete.1; die vollständige
Bezeichnung des Pakets benötigt. Die Eingabe von
<replaceable>xchat</replaceable> anstelle von
<replaceable>xchat-1.7.1</replaceable> wäre im obigen Beispiel
daher nicht ausreichend. Benutzen Sie &man.pkg.version.1;, um
die Versionsnummer des Pakets herausfinden, oder verwenden Sie
Wildcards:</para>
<screen>&prompt.root; <userinput>pkg_delete xchat\*</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>Alle Paketinformationen, einschließlich der
Beschreibungen, werden im Verzeichnis
<filename>/var/db/pkg</filename> abgelegt.</para>
</sect2>
</sect1>
<sect1 xml:id="pkgng-intro">
<title>Benutzen von <application>pkgng</application> zur
Verwaltung von Binärpaketen</title>
<para><application>pkgng</application> ist ein verbesserter
Ersatz für die traditionellen Paketverwaltungswerkzeuge
von &os;. Es bietet viele Funktionen, um den Umgang mit
Binärpaketen schneller und einfacher zu gestalten.
<application>pkgng</application> wurde erstmalig
im August 2012 veröffentlicht.</para>
<para><application>pkgng</application> ist kein Ersatz für die
Portverwaltungswerkzeuge wie
<package>ports-mgmt/portmaster</package> oder
<package>ports-mgmt/portupgrade</package>. Während
<package>ports-mgmt/portmaster</package> und
<package>ports-mgmt/portupgrade</package> Drittanbieter-Software
sowohl aus Binärpaketen als auch aus den Ports installieren
kann, so installiert <application>pkgng</application>
ausschließlich Binärpakete.</para>
<sect2 xml:id="pkgng-initial-setup">
<title>Erste Schritte mit
<application>pkgng</application></title>
<para>&os;&nbsp;9.1 und nachfolgende Versionen enthalten ein
&quot;Bootstrap&quot;-Programm für
<application>pkgng</application>. Das Bootstrap-Programm
lädt und installiert <application>pkgng</application>.</para>
<para>Um das Bootstrap Programm zu starten, geben Sie folgendes
ein:</para>
<screen>&prompt.root; <userinput>/usr/sbin/pkg</userinput></screen>
<para>Für ältere Versionen von &os; muss
<application>pkgng</application> zunächst aus der
Ports-Sammlung oder als Paket installiert werden.</para>
<para>Um <application>pkgng</application> aus den Ports zu
installieren, geben Sie folgendes ein:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/ports-mgmt/pkg</userinput>
&prompt.root; <userinput>make</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para>Um das Paket zu installieren, geben Sie folgendes
ein:</para>
<screen>&prompt.root; <userinput>pkg_add -r pkg</userinput></screen>
<para>Bestehende &os; Installationen benötigen eine
Konvertierung der
<application>pkg_install</application>-Paketdatenbank in das
neue Format. Um die Paketdatenbank zu konvertieren, geben Sie
folgendes ein:</para>
<screen>&prompt.root; <userinput>pkg2ng</userinput></screen>
<para>Auf neu installieren Systemen, auf denen noch keine
Software von Drittanbietern installiert wurde, kann dieser
Schritt entfallen.</para>
<important>
<para>Die Konvertierung ist unwiderruflich. Sobald die
Paketdatenbank in das Format von
<application>pkgng</application> umgewandelt wurde, sollten
die traditionellen <application>pkg_install</application>
Werkzeuge nicht mehr benutzt werden.</para>
</important>
<note>
<para>Bei der Konvertierung der Paketdatenbank können Fehler
ausgegeben werden, wenn die Inhalte auf die neue Version
umgewandelt werden. Im Allgemeinen können diese Fehler
ignoriert werden. Wenn <application>pkg2ng</application>
fertig ist, wird eine Liste von Drittanbieter-Software
ausgegeben, die nicht erfolgreich konvertiert werden konnte.
Diese Anwendungen müssen manuell neu installiert
werden.</para>
</note>
<para>Um sicherzustellen, dass die &os; Ports-Sammlung neue
Pakete mit <application>pkgng</application> und nicht mit
<application>pkg_install</application> registriert, muss in
&os;&nbsp;10.<replaceable>X</replaceable> und früheren
Versionen folgende Zeile in
<filename>/etc/make.conf</filename> hinzugefügt werden:</para>
<programlisting>WITH_PKGNG= yes</programlisting>
</sect2>
<sect2 xml:id="pkgng-pkg-conf">
<title>Konfiguration der <application>pkgng</application>
Umgebung</title>
<para>Das <application>pkgng</application>
Paketverwaltungssystem benutzt für die meisten Operationen ein
Paket-Repository. Der Speicherort des Paket-Repositories wird
in <filename>/usr/local/etc/pkg.conf</filename> oder der
Umgebungsvariablen <envar>PACKAGESITE</envar>
definiert.</para>
<para>Weitere Konfigurationsoptionen für
<application>pkgng</application> sind in &man.pkg.conf.5;
beschrieben.</para>
</sect2>
<sect2 xml:id="pkgng-basic-usage">
<title>Grundlegende Bedienung von
<application>pkgng</application></title>
<para>Informationen zur Bedienung von
<application>pkgng</application> ist in der Manualpage
&man.pkg.8; verfügbar. Alternativ kann <command>pkg</command>
ohne zusätzliche Argumente aufgerufen werden.</para>
<para>Jedes Argument von <application>pkgng</application> ist in
seiner spezifischen Manualpage dokumentiert. Um
beispielsweise die Manualpage von
<command>pkg install</command> zu lesen, geben Sie einen der
folgenden Befehle ein:</para>
<screen>&prompt.root; <userinput>pkg help install</userinput></screen>
<screen>&prompt.root; <userinput>man pkg-install</userinput></screen>
<sect3 xml:id="pkgng-pkg-info">
<title>Mit <application>pkgng</application> Informationen über
installierte Pakete anzeigen</title>
<para>Informationen über bereits installierte Pakete können
mit <command>pkg info</command> angezeigt werden. Dabei
wird die Version und die Beschreibung aller Pakete
ausgegeben.</para>
<para>Informationen zu einem bestimmten Paket können wie folgt
angezeigt werden:</para>
<screen>&prompt.root; <userinput>pkg info <replaceable>paketname</replaceable></userinput></screen>
<para>Um zu ermitteln welche Version von
<application>pkgng</application> installiert ist, geben Sie
folgendes ein:</para>
<screen>&prompt.root; <userinput>pkg info pkg</userinput>
pkg-1.0.2 New generation package manager</screen>
</sect3>
<sect3 xml:id="pkgng-installing-deinstalling">
<title>Installation und Deinstallation von Paketen mit
<application>pkgng</application></title>
<para>In der Regel werden Benutzer von &os; Binärpakete wie
folgt installieren:</para>
<screen>&prompt.root; <userinput>pkg install <replaceable>paketname</replaceable></userinput></screen>
<para><command>pkg install</command> benutzt das in
<xref linkend="pkgng-pkg-conf"/> erwähnte Repository.
Im Gegensatz dazu benutzt &man.pkg-add.8; kein Repository,
oder eine definierte <envar>PACKAGESITE</envar>, so dass
Abhängigkeiten nicht ordnungsgemäß aufgelöst und fehlende
Abhängigkeiten nicht von entfernten Systemen
heruntergeladen werden. Dieser Abschnitt beschreibt die
Bedienung von <command>pkg install</command>. Informationen
zur Bedienung von <command>pkg add</command> finden Sie in
&man.pkg-add.8;.</para>
<para>Zusätzliche Binärpakete können mit
<command>pkg intall</command> installiert werden. Um
beispielsweise <application>curl</application> zu
installieren:</para>
<screen>&prompt.root; <userinput>pkg install curl</userinput>
Updating repository catalogue
Repository catalogue is up-to-date, no need to fetch fresh copy
The following packages will be installed:
Installing ca_root_nss: 3.13.5
Installing curl: 7.24.0
The installation will require 4 MB more space
1 MB to be downloaded
Proceed with installing packages [y/N]: <userinput>y</userinput>
ca_root_nss-3.13.5.txz 100% 255KB 255.1KB/s 255.1KB/s 00:00
curl-7.24.0.txz 100% 1108KB 1.1MB/s 1.1MB/s 00:00
Checking integrity... done
Installing ca_root_nss-3.13.5... done
Installing curl-7.24.0... done</screen>
<para>Das neue Paket und jedes weitere Paket, das als
Abhängigkeit installiert wurde, ist in der Liste der
installierten Pakete zu sehen:</para>
<screen>&prompt.root; <userinput>pkg info</userinput>
ca_root_nss-3.13.5 The root certificate bundle from the Mozilla Project
curl-7.24.0 Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers
pkg-1.0.2 New generation package manager</screen>
<para>Wird ein Paket nicht mehr benötigt, kann es mit
<command>pkg delete</command> entfernt werden. Wenn
beispielsweise <application>curl</application> nicht mehr
benötigt wird:</para>
<screen>&prompt.root; <userinput>pkg delete curl</userinput>
The following packages will be deleted:
curl-7.24.0_1
The deletion will free 3 MB
Proceed with deleting packages [y/N]: <userinput>y</userinput>
Deleting curl-7.24.0_1... done</screen>
</sect3>
<sect3 xml:id="pkgng-upgrading">
<title>Installierte Pakete mit
<application>pkgng</application> aktualisieren</title>
<para>Pakete die nicht mehr aktuell sind, können mit
<command>pkg version</command> gefunden werden.
&man.pkg-version.8; nutzt zur Identifikation der
Paketversionen die lokale Ports-Sammlung, falls diese
installiert ist. Ansonsten wird dazu das entfernte
Repository benutzt.</para>
<para>Pakete können mit <application>pkgng</application> auf
neue Versionen aktualisiert werden. Wenn eine neue Version
von <application>curl</application> veröffentlicht wurde,
kann das lokale Paket auf die neue Version aktualisiert
werden:</para>
<screen>&prompt.root; <userinput>pkg upgrade</userinput>
Updating repository catalogue
repo.txz 100% 297KB 296KB/s 296KB/s 00:00
The following packages will be upgraded:
Upgrading curl: 7.24.0 -> 7.24.0_1
1 MB to be downloaded
Proceed with upgrading packages [y/N]: <userinput>y</userinput>
curl-7.24.0_1.txz 100% 1108KB 1.1MB/s 1.1MB/s 00:00
Checking integrity... done
Upgrading curl from 7.24.0 to 7.24.0_1... done</screen>
</sect3>
<sect3 xml:id="pkgng-auditing">
<title>Installierte Pakete mit
<application>pkgng</application> auditieren</title>
<para>Gelegentlich werden Sicherheitslücken in einer
Software innerhalb der Ports-Sammlung entdeckt.
<application>pkgng</application> besitzt ein eingebautes
Auditing, was mit dem Paket
<package>ports-mgmt/portaudit</package> vergleichbar ist.
Um die auf dem System installierte Software zu prüfen, geben
Sie folgenden Befehl ein:</para>
<screen>&prompt.root; <userinput>pkg audit -F</userinput></screen>
</sect3>
</sect2>
<sect2 xml:id="pkgng-advanced-usage">
<title>Fortgeschrittene Arbeiten mit
<application>pkgng</application></title>
<sect3 xml:id="pkgng-autoremove">
<title>Automatisches Entfernen von nicht mehr benötigten
Abhängigkeiten mit <application>pkgng</application></title>
<para>Das Entfernen eines Pakets kann möglicherweise unnötige
Abhängigkeiten hinterlassen, wie im obigen Beispiel
<package>ca_root_nss</package>. Solche Pakete sind zwar
noch installiert, aber keine weiteren Pakete hängen mehr von
ihnen ab. Unnötige Pakete, die als Abhängigkeit von anderen
Paketen installiert wurden, können automatisch erfasst und
entfernt werden:</para>
<screen>&prompt.root; <userinput>pkg autoremove</userinput>
Packages to be removed:
ca_root_nss-3.15.5
The autoremoval will free 723 kB
Proceed with autoremoval of packages [y/N]: <userinput>y</userinput>
Deinstalling ca_root_nss-3.13.5... done</screen>
</sect3>
<sect3 xml:id="pkgng-backup">
<title>Sicherung der <application>pkgng</application>
Datenbank</title>
<para>Im Gegensatz zum alten Paketverwaltungssystem beinhaltet
<application>pkgng</application> einen eigenen Mechanismus
zur Sicherung der Paketdatenbank. Um den Inhalt der
Datenbank manuell zu sichern, geben Sie folgendes
ein:</para>
<screen>&prompt.root; <userinput>pkg backup -d <replaceable>pkgng.db</replaceable></userinput></screen>
<note>
<para>Ersetzen Sie den Dateinamen
<replaceable>pkgng.db</replaceable> durch einen geeigneten
Dateinamen.</para>
</note>
<para>Zusätzlich verfügt <application>pkgng</application> über
ein &man.periodic.8;-Skript, das automatisch eine tägliche
Sicherung der Paketdatenbank erstellt, wenn in
&man.periodic.conf.5;
<literal>daily_backup_pkgng_enable</literal> auf
<literal>YES</literal> gesetzt ist.</para>
<tip>
<para>Um <application>pkg_install</application> daran zu
hindern, ebenfalls eine Sicherung der Paketdatenbank zu
erstellen, muss in &man.periodic.conf.5;
<literal>daily_backup_pkgdb_enable</literal> auf
<literal>NO</literal> gesetzt werden.</para>
</tip>
<para>Um den Inhalt einer früheren Paketdatenbank
wiederherzustellen, geben Sie folgendes ein:</para>
<screen>&prompt.root; <userinput>pkg backup -r <replaceable>/path/to/pkgng.db</replaceable></userinput></screen>
</sect3>
<sect3 xml:id="pkgng-clean">
<title>Alte Pakete mit <application>pkgng</application>
entfernen</title>
<para>Standardmäßig speichert <application>pkgng</application>
Pakete in einem Cache-Verzeichnis, welches in
&man.pkg.conf.5; in der Variablen
<envar>PKG_CACHEDIR</envar> definiert wird. Beim Upgrade
der Pakete mit <command>pkg upgrade</command>, werden die
alten Versionen der Pakete nicht automatisch
entfernt.</para>
<para>Um veraltete Pakete zu entfernen, geben Sie folgendes
ein:</para>
<screen>&prompt.root; <userinput>pkg clean</userinput></screen>
</sect3>
<sect3 xml:id="pkgng-set">
<title>Manipulation der <application>pkgng</application> Paket
Metadaten</title>
<para>Bei Software aus der &os; Ports-Sammlung kann es
vorkommen, dass die Hauptversionsnummer geändert wird. Im
Gegensatz zu <application>pkg_install</application> hat
<application>pkgng</application> ein eingebautes Kommando,
um die Quelle eines Pakets zu aktualisieren. Wenn zum
Beispiel <package>lang/php5</package> ursprünglich die
Version <literal>5.3</literal> hatte, nun aber in
<package>lang/php53</package> umbenannt wurde, um die
Version <literal>5.4</literal> zu integrieren, dann hätte
<application>pkg_install</application> zusätzliche Software,
wie beispielsweise <package>ports-mgmt/portmaster</package>
benötigt, um die Quelle des Pakets in der Paketdatenbank
zu aktualisieren.</para>
<para>Bei <package>ports-mgmt/portmaster</package> und
<package>ports-mgmt/portupgrade</package> unterscheidet sich
die Ausgabe bei der Auflistung von neuen und alten
Versionen. Für <application>pkgng</application> lautet die
Syntax:</para>
<screen>&prompt.root; <userinput>pkg set -o <replaceable>category/oldport</replaceable>:<replaceable>category/newport</replaceable></userinput></screen>
<para>Um die Quelle des Pakets für das obige Beispiel zu
ändern, geben Sie folgendes ein:</para>
<screen>&prompt.root; <userinput>pkg set -o lang/php5:lang/php53</userinput></screen>
<para>Ein weiteres Beispiel:
Um <package>lang/ruby18</package> auf
<package>lang/ruby19</package> zu aktualisieren, geben Sie
folgendes ein:</para>
<screen>&prompt.root; <userinput>pkg set -o lang/ruby18:lang/ruby19</userinput></screen>
<para>In diesem letzten Beispiel wird die Quelle der
Bibliotheken von <filename>libglut</filename> von
<package>graphics/libglut</package> auf
<package>graphics/freeglut</package> geändert:</para>
<screen>&prompt.root; <userinput>pkg set -o graphics/libglut:graphics/freeglut</userinput></screen>
<note>
<para>Bei dem Wechsel einer Paketquelle ist es in den
meisten Fällen notwendig, die Pakete neu zu installieren,
welche von dem Paket abhängig sind, welches seine
Paketquelle geändert hat. Um eine Neuinstallation von
abhängigen Paketen zu erzwingen, führen Sie folgenden
Befehl aus:</para>
<screen>&prompt.root; <userinput>pkg install -Rf <replaceable>graphics/freeglut</replaceable></userinput></screen>
</note>
</sect3>
</sect2>
</sect1>
<sect1 xml:id="ports-using">
<title>Benutzen der Ports-Sammlung</title>
<para>Dieser Abschnitt stellt die grundlegenden Anweisungen
vor, um Anwendungen aus der Ports-Sammlung zu installieren oder
zu löschen. &man.ports.7; enthält eine Auflistung aller
verfügbaren <command>make</command>-Targets und
Umgebungsvariablen.</para>
<warning>
<para>Ende 2012 hat das &os; Ports-Projekt eine Migration des
Versionskontrollsystems von CVS auf Subversion durchgeführt.
Die bevorzugte Methode zum Herunterladen der Ports-Sammlung
ist <application>Portsnap</application>.
Benutzer, die lokale Anpassungen der Ports vornehmen müssen,
werden es wahrscheinlich bevorzugen, Subversion direkt zu
verwenden. Der CVS-Service wurde am 28. Februar 2013
eingestellt. Von einer weiteren Verwendung dieses Dienstes
wird abgeraten.</para>
</warning>
<sect2 xml:id="ports-tree">
<title>Installation der Ports-Sammlung</title>
<para>Die Ports-Sammlung ist eine Reihe von Makefiles, Patches
und Beschreibungen, die unter <filename>/usr/ports</filename>
gespeichert sind. Diese Dateien werden für den Bau und die
Installation von Anwendungen unter &os; verwendet. Die
folgenden Anweisungen zeigen verschiedene Methoden zur
Installation der Ports-Sammlung, falls diese nicht schon
während der Installation von &os; installiert wurden.</para>
<procedure>
<title>Installation mit Portsnap</title>
<para><application>Portsnap</application> ist ein schnelles
und benutzerfreundliches Werkzeug zur Installation der
Ports-Sammlung und die bevorzugte Wahl für die meisten
Benutzer. Eine detaillierte Beschreibung zu
<application>Portsnap</application> finden Sie in <link
linkend="updating-upgrading-portsnap">Portsnap: ein Werkzeug
zur Aktualisierung der Ports-Sammlung</link>.</para>
<step>
<para>Laden Sie einen komprimierten Snapshot der
Ports-Sammlung in
<filename>/var/db/portsnap</filename>.</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>/usr/ports</filename> extrahieren:</para>
<screen>&prompt.root; <userinput>portsnap extract</userinput></screen>
<para>Nachdem der erste Einsatz von
<application>Portsnap</application> abeschlossen ist, kann
<filename>/usr/ports</filename> wie folgt aktualisiert
werden:</para>
<screen>&prompt.root; <userinput>portsnap update</userinput></screen>
</step>
</procedure>
<procedure>
<title>Installation mit Subversion</title>
<para>Wird mehr Kontrolle über die Ports-Sammlung benötigt
(beispielsweise für der Pflege lokaler Änderungen),
kann <application>Subversion</application> benutzt werden,
um die Ports-Sammlung zu laden. Lesen Sie <link
xlink:href="&url.articles.committers-guide;/subversion-primer.html">the
Subversion Primer</link> für eine detaillierte
Beschreibung von
<application>Subversion</application>.</para>
<step>
<para><application>Subversion</application> muss installiert
sein, bevor damit die Ports-Sammlung geladen werden kann.
Ist eine lokale Kopie der Ports-Sammlung bereits
vorhanden, installieren Sie
<application>Subversion</application> wie folgt:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/devel/subversion</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para>Ist keine lokale Kopie der Ports-Sammlung vorhanden,
kann <application>Subversion</application> als Paket
installiert werden:</para>
<screen>&prompt.root; <userinput>pkg_add -r subversion</userinput></screen>
<para>Wird <application>pkgng</application> für die
Verwaltung von Paketen benutzt, kann
<application>Subversion</application> darüber installiert
werden:</para>
<screen>&prompt.root; <userinput>pkg install subversion</userinput></screen>
</step>
<step>
<para>Laden Sie eine Kopie der Ports-Sammlung. Verwenden
Sie anstatt <replaceable>svn.FreeBSD.org</replaceable> einen
<link
xlink:href="&url.books.handbook;/mirrors-svn.html">Subversion
Mirror</link> in Ihrer Nähe. Committer sollten zuvor den
<link
xlink:href="&url.articles.committers-guide;/subversion-primer.html">Subversion
Primer</link> lesen, um sicherzustellen, dass das richtige
Protokoll gewählt wird.</para>
<screen>&prompt.root; <userinput>svn checkout
svn://<replaceable>svn.FreeBSD.org</replaceable>/ports/head/usr/ports</userinput></screen>
</step>
<step>
<para>Nach dem erstmaligen
<foreignphrase>checkout</foreignphrase> mit
<application>Subversion</application> kann
<filename>/usr/ports</filename> wie folgt aktualisiert
werden:</para>
<screen>&prompt.root; <userinput>svn update /usr/ports</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 <systemitem class="username">root</systemitem>
<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 xml:id="cvsup-migration">
<title>Migration von
<application>CVSup</application>/<application>csup</application>
zu <application>portsnap</application></title>
<warning>
<para>Seit dem 28. Februar 2013 wird die Ports-Sammlung nicht
mehr nach <application>CVS</application> exportiert. Somit
werden über <application>CVSup</application> und
<application>csup</application> keine Updates für die
Ports-Sammlung mehr zu Verfügung gestellt.</para>
</warning>
<procedure>
<title>Migration zu portsnap</title>
<para>Für die Migration werden in <filename>/usr</filename>
ca. 1&nbsp;GB freier Speicher und in
<filename>/var</filename> ca. 150&nbsp;MB freier Speicher
benötigt.</para>
<step>
<para>Deaktivieren Sie alle automatischen Updates der
Ports-Sammlung, wie beispielsweise &man.cron.8; Jobs, die
<application>CVSup</application> oder
<application>csup</application> aufrufen.</para>
</step>
<step>
<para>Verschieben Sie die bestehende Ports-Sammlung in ein
temporäres Verzeichnis:</para>
<screen>&prompt.root; <userinput>mv /usr/ports /usr/ports.old</userinput></screen>
</step>
<step>
<para>Laden Sie eine aktuelle Kopie Ports-Sammlung mit
<application>Portsnap</application> herunter und
extrahieren Sie diese nach
<filename>/usr/ports</filename>:</para>
<screen>&prompt.root; <userinput>portsnap fetch extract</userinput></screen>
</step>
<step>
<para>Verschieben Sie Distfiles und vorhandene Pakete in
die neue Ports-Sammlung:</para>
<screen>&prompt.root; <userinput>mv /usr/ports.old/distfiles /usr/ports</userinput>
&prompt.root; <userinput>mv /usr/ports.old/packages /usr/ports</userinput></screen>
</step>
<step>
<para>Löschen Sie die alte Ports-Sammlung:</para>
<screen>&prompt.root; <userinput>rm -rf /usr/ports.old</userinput></screen>
</step>
<step>
<para>Falls zuvor <application>CVSup</application> verwendet
wurde, kann es nun deinstalliert werden:</para>
<screen>&prompt.root; <userinput>pkg_delete -r -v cvsup-without-gui-\*</userinput></screen>
</step>
<step>
<para>Benutzer von <application>pkgng</application> können
das folgende Kommando benutzen:</para>
<screen>&prompt.root; <userinput>pkg delete cvsup-without-gui</userinput></screen>
</step>
</procedure>
<para>Eine detaillierte Beschreibung von
<application>Portsnap</application> und wie die
Ports-Sammlung mit <application>Portsnap</application>
aktualisiert wird, finden Sie in <link
linkend="updating-upgrading-portsnap">Portsnap: Ein Werkzeug
zur Aktualisierung der Ports-Sammlung</link>.</para>
</sect2>
<sect2 xml:id="ports-skeleton">
<title>Ports installieren</title>
<indexterm>
<primary>Ports</primary>
<secondary>installieren</secondary>
</indexterm>
<para>Ein Port-<quote>Gerüst</quote> ist ein Satz von Dateien,
die &os; sagen, wie ein Programm zu kompilieren und zu
installieren ist. Ein jeder Port beinhaltet:</para>
<itemizedlist>
<listitem>
<para><filename>Makefile</filename>: Das
<filename>Makefile</filename> enthält Anweisungen, die
spezifizieren, wie eine Anwendung kompiliert
wird und wohin sie installiert werden sollte.</para>
</listitem>
<listitem>
<para><filename>distinfo</filename>: Diese Datei
enthält Informationen, welche Dateien heruntergeladen
werden müssen sowie deren Prüfsummen (&man.sha256.1;),
um sicherzustellen, dass Dateien während des
Herunterladens nicht beschädigt wurden.</para>
</listitem>
<listitem>
<para><filename>files</filename>: Dieses Verzeichnis
enthält Patches, welche das Übersetzen und Installieren
der Anwendung unter &os; ermöglichen. Zudem können noch
weitere Dateien, die für die Übersetzung des Ports
verwendet werden, enthalten sein.</para>
</listitem>
<listitem>
<para><filename>pkg-descr</filename>: Diese Datei enthält
eine ausführlichere Beschreibung der Anwendung.</para>
</listitem>
<listitem>
<para><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 das <link xlink:href="&url.books.porters-handbook.en;/index.html">
&os; Porter's Handbook</link>.</para>
<para>Ein Port enthält nicht den eigentlichen Quellcode, der
auch als <quote>Distfile</quote> bekannt ist. Der Autor der
Software kann bestimmen, in welcher Weise die Software
verteilt wird. Die beiden Methoden zur Installation eines
&os;-Ports werden nachfolgend beschrieben.</para>
<note>
<para>Zum Installieren von Ports müssen Sie als Benutzer
<systemitem class="username">root</systemitem> angemeldet sein.</para>
</note>
<warning>
<para>Stellen Sie sicher, dass die Ports-Sammlung
aktuell ist, bevor Sie einen Port kompilieren.
Informieren Sie sich vorher zusätzlich unter
<uri xlink:href="http://vuxml.FreeBSD.org/">http://vuxml.FreeBSD.org/</uri>
über mögliche Sicherheitsprobleme
des zu installierenden Ports. Wenn
<package>ports-mgmt/portaudit</package> installiert ist,
führen Sie <command>portaudit -F</command> aus, um die
aktuelle Sicherheitsdatenbank zu aktualisieren. Die täglich
laufende Sicherheitsprüfung des Systems aktualisiert
ebenfalls die Datenbank und prüft installierte Anwendungen
auf vorhandene Sicherheitsprobleme. Für weitere
Informationen lesen Sie die Manualpage &man.portaudit.1;
und &man.periodic.8;.</para>
</warning>
<para>Die Ports-Sammlung geht davon, dass eine funktionierende
Internetverbindung besteht. Ansonsten muss eine Kopie des zu
installierenden Distfiles manuell nach
<filename>/usr/ports/distfiles</filename> kopiert
werden.</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>Um den Port zu übersetzen (auch Bauen genannt), geben Sie
am Prompt <command>make</command> ein. Die Ausgabe sollte der
in diesem Beispiel ähnlich sein:</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 mit <command>make install</command>
installieren:</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>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 install clean </command>
anstelle von <command>make</command>, <command>make
install</command> und <command>make
clean</command> eingeben.</para>
</note>
<note>
<para>Wird ein Port immer nur mit
<command>make install</command> installiert, kann es
möglicherweise zu mehreren Wartezeiten zwischen
Benutzerinteraktionen kommen, da dem Benutzer
standardmäßig Optionen angezeigt werden. Um dies bei
einer hohen Anzahl an Abhängigkeiten zu
vermeiden, starten Sie zuerst
<command>make config-recursive</command>, um die
Konfiguration der Optionen an einem Stück zu erledigen.
Führen Sie anschließend
<command>make install [clean]</command> aus.</para>
</note>
<tip>
<para>Bei der Verwendung von
<buildtarget>config-recursive</buildtarget> wird eine
Liste von Ports, die konfiguriert werden, vom
&man.make.1;-Target
<buildtarget>all-depends-list</buildtarget> erstellt.
Es wird oft empfohlen,
<command>make config-recursive</command> so lange
auszuführen, bis alle Optionen der abhängigen Ports
definiert sind und keine Optionen und
&man.dialog.1;-Masken mehr erscheinen. Damit soll
sichergestellt werden, dass alle Optionen wie
beabsichtigt konfiguriert wurden.</para>
</tip>
<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. Wenn Sie die <command>tcsh</command>
benutzen, müssen Sie eventuell <command>rehash</command>
eintippen, um die neu installierten Kommandos benutzen zu
können, ohne den vollständigen Pfad anzugeben. Unter
Shells wie der <command>sh</command> benutzen Sie
stattdessen das Kommando <command>hash -r</command>.
Weitere Informationen finden Sie in der Dokumentation
der jeweiligen Shell.</para>
</note>
<para>Einige von Dritten angebotenen DVD-Produkte wie das
&os; Toolkit von der <link
xlink:href="http://www.freebsdmall.com/">&os; Mall</link>
enthalten auch Distfiles. Diese lassen sich über die
Ports-Sammlung installieren. Dazu hängen Sie die DVD unter
<filename>/cdrom</filename> in den Verzeichnisbaum ein.
Wenn Sie einen anderen Mountpunkt verwenden, setzen Sie die
make-Variable <varname>CD_MOUNTPTS</varname>, damit die
auf der DVD enthaltenen Distfiles automatisch verwendet
werden.</para>
<note>
<para>Die Lizenzen einiger Ports verbieten die Einbeziehung
auf der DVD. Das kann verschiedene Gründe haben.
Beispielsweise ist eine Registrierung vor dem Herunterladen
erforderlich, oder die Weiterverteilung ist verboten. Wenn
Sie einen Port installieren wollen, der nicht auf
der DVD enthalten ist, müssen Sie mit dem Internet verbunden
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 können
<command>make fetch</command> im Verzeichnis
<filename>/usr/ports</filename> ausführen, um die benötigten
Dateien herunterzuladen. Es ist auch möglich,
<command>make fetch</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, benutzen Sie
<command>make fetch-recursive</command>.</para>
<note>
<para>Sie können alle Ports einer Kategorie oder alle Ports
bauen, indem Sie <command>make</command> im übergeordneten
Verzeichnis ausführen. Dies ist jedoch eine gefährliche
Methode, da einige Ports nicht nebeneinander existieren
können. Weiterhin gibt es Fälle, in denen zwei Ports
unterschiedliche Inhalte in derselben Datei speichern
wollen.</para>
</note>
<para>In einigen seltenen Fällen ist es erforderlich, die
benötigten Dateien von einem anderen Ort als den im Port
definierten <varname>MASTER_SITES</varname> herunterzuladen.
Sie können die Option <varname>MASTER_SITES</varname> mit dem
folgenden Kommando überschreiben:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/directory</userinput>
&prompt.root; <userinput>make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen>
<para>Im Beispiel wurde <varname>MASTER_SITES</varname>
mit dem Wert
<literal>ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/</literal>
überschrieben.</para>
<note>
<para>Einige Ports bieten Optionen, mit denen zusätzliche
Funktionen oder Sicherheitsoptionen eingestellt werden
können. Zusätzliche Optionen können beispielsweise für
<package>www/firefox</package>,
<package>security/gpgme</package> und
<package>mail/sylpheed-claws</package>
angegeben werden. Wenn ein Port über zusätzliche
Optionen verfügt, wird ein Menü beim Bau des Ports
ausgegeben.</para>
</note>
<sect3>
<title>Vorgabe-Verzeichnisse ändern</title>
<para>Die Variablen <varname>WRKDIRPREFIX</varname>
und <varname>PREFIX</varname> überschreiben das
voreingestellte Bau- und Zielverzeichnis.
Zum Beispiel:</para>
<screen>&prompt.root; <userinput>make WRKDIRPREFIX=/usr/home/example/ports install</userinput></screen>
<para>Dieses Kommando baut den Port unter
<filename>/usr/home/example/ports</filename> und installiert
ihn unter <filename>/usr/local</filename>.</para>
<para>Die Variable <varname>PREFIX</varname> 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>Alternativ können diese Variablen auch als
Umgebungsvariablen gesetzt werden. In der Manualpage Ihrer
Shell finden Sie Anweisungen, wie Umgebungsvariablen gesetzt
werden.</para>
</sect3>
<sect3>
<title>Ports rekonfigurieren</title>
<para>Einige Ports enthalten ein ncurses-basiertes
Menü, über dessen Optionen der Bau dieser Ports
beeinflusst werden kann. 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 config</command> eingeben. Eine andere
Möglichkeit ist <command>make showconfig</command>. Eine
weitere Alternative bietet <command>make rmconfig</command>,
der alle 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 xml:id="ports-removing">
<title>Entfernen installierter Ports</title>
<indexterm>
<primary>Ports</primary>
<secondary>entfernen</secondary>
</indexterm>
<para>Installierte Ports werden mit &man.pkg.delete.1; wieder
deinstalliert:</para>
<screen>&prompt.root; <userinput>pkg_delete lsof-4.57</userinput></screen>
</sect2>
<sect2 xml: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 xml:id="ports-file-updating">
<title>Lesen Sie
<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 xml: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
<package>ports-mgmt/portupgrade</package> wie
jeden anderen Port mit <command>make install clean</command>
installieren:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/ports-mgmt/portupgrade/</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para>Durchsuchen Sie regelmäßig die Liste der installierten
Ports mit <command>pkgdb -F</command> und beheben Sie alle
gefundenen Probleme. Es ist eine gute Idee, dies vor jedem
Update auszuführen.</para>
<para>Benutzen Sie <command>portupgrade -a</command>, um
automatisch alle veralteten Ports auf dem System zu
aktualisieren. 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>Um nur eine spezifische Anwendung zu aktualisieren,
verwenden Sie <command>portupgrade
<replaceable>Paketname</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>
<screen>&prompt.root; <userinput>portupgrade -R firefox</userinput></screen>
<para>Um Pakete anstelle von Ports zu installieren, verweden Sie
den Schalter <option>-P</option>. 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 xml:id="portmaster">
<title>Ports mit <application>portmaster</application>
aktualisieren</title>
<indexterm>
<primary>portmaster</primary>
</indexterm>
<para><package>portmaster</package> ist ein weiteres Werkzeug
zum Aktualisieren von Ports.
<application>portmaster</application> nutzt nur Werkzeuge,
die bereits im Basissystem vorhanden sind, ohne dabei von
weiteren Ports abhängig zu sein. Es verwendet Informationen
in <filename>/var/db/pkg/</filename>, um
festzustellen, welche Ports aktualisiert werden sollen.
Sie können den Port wie folgt installieren:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/ports-mgmt/portmaster</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 and is not depended on
by other ports</para>
</listitem>
<listitem>
<para>Trunk ports: no dependencies, but other ports depend
upon it</para>
</listitem>
<listitem>
<para>Branch ports: have dependencies but are depended
upon by other ports</para>
</listitem>
<listitem>
<para>Leaf ports: have dependencies but are not depended
upon by other ports</para>
</listitem>
</itemizedlist>
<para>Um eine Liste der installierten Ports anzuzeigen und
nach neueren Versionen zu suchen, verwenden Sie
<option>-L</option>:</para>
<screen>&prompt.root; <userinput>portmaster -L</userinput>
===&gt;&gt;&gt; Root ports (No dependencies, not depended on)
===&gt;&gt;&gt; ispell-3.2.06_18
===&gt;&gt;&gt; screen-4.0.3
===&gt;&gt;&gt; New version available: screen-4.0.3_1
===&gt;&gt;&gt; tcpflow-0.21_1
===&gt;&gt;&gt; 7 root ports
...
===&gt;&gt;&gt; Branch ports (Have dependencies, are depended on)
===&gt;&gt;&gt; apache-2.2.3
===&gt;&gt;&gt; New version available: apache-2.2.8
...
===&gt;&gt;&gt; Leaf ports (Have dependencies, not depended on)
===&gt;&gt;&gt; automake-1.9.6_2
===&gt;&gt;&gt; bash-3.1.17
===&gt;&gt;&gt; New version available: bash-3.2.33
...
===&gt;&gt;&gt; 32 leaf ports
===&gt;&gt;&gt; 137 total installed ports
===&gt;&gt;&gt; 83 have new versions available
</screen>
<para>Um alle installierten Ports zu aktualisieren,
verwenden Sie 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 von <option>-i</option> wird
<application>portmaster</application> im interaktiven
Modus gestartet und fragt bei jedem zu aktualisierenden
Port nach, wie weiter vorgegangen werden soll.</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 shells/bash</userinput></screen>
<para>Weiterführende Informationen finden Sie in der Manualpage
&man.portmaster.8;.</para>
</sect3>
</sect2>
<sect2 xml:id="ports-disk-space">
<title>Platzbedarf von Ports</title>
<indexterm>
<primary>Ports</primary>
<secondary>Plattenplatz</secondary>
</indexterm>
<para>Die Nutzung der Ports-Sammlung wird im Laufe der Zeit viel
Plattenplatz verschlingen. Nach dem Bau und der Installation
eines Ports, wird <command>make clean</command> die temporären
Arbeitsverzeichnisse <filename>work</filename> aufräumen.
Um die gesamte Ports-Sammlung aufzuräumen, verwenden Sie
folgenden Befehl:</para>
<screen>&prompt.root; <userinput>portsclean -C</userinput></screen>
<para>Im Laufe der Zeit werden sich zahlreiche veraltete
Distfiles in <filename>distfiles</filename> ansammeln. Mit
dem folgenden Befehl werden alle Distfiles gelöscht, die vom
keinem Port mehr benötigt werden:</para>
<screen>&prompt.root; <userinput>portsclean -D</userinput></screen>
<para>Um alle Distfiles zu löschen, 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><package>port-mgmt/pkg_cutleaves</package> automatisiert
die Deinstallation von installierten Ports, die nicht weiter
benötigt werden.</para>
</sect2>
</sect1>
<sect1 xml:id="ports-nextsteps">
<title>Nach der Installation</title>
<para>Nach der Installation einer neuen Anwendung wollen Sie
wahrscheinlich die mitgelieferte Dokumentation lesen, notwendige
Konfigurationsdateien anpassen und sicherstellen, dass die
Dienste der Anwendung automatisch beim Booten gestartet
werden.</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 sich in
<filename>man/</filename> befinden und auf
Konfigurationsdateien, die in <filename>etc/</filename> abgelegt
werden. Manche Pakete enthalten in <filename>doc/</filename>
zusätzliche Dokumentation.</para>
<para>Um festzustellen welche Version der Anwendung
installiert ist:</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 mit &man.man.1;. Überprüfen Sie die
Beispiele für Konfigurationsdateien und die zusätzliche
Dokumentation an, wenn es welche gibt.</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 foopackage-1.0.0</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 Startskript in
<filename>/usr/local/etc/rc.d</filename>.
Überprüfen Sie dieses Skript, und wenn nötig, passen Sie es
an oder benennen Sie es um. Weitere
Informationen finden Sie in
<xref linkend="configtuning-starting-services"/>.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="ports-broken">
<title>Kaputte Ports</title>
<para>Stolpern Sie einmal über einen Port, der nicht
funktioniert:</para>
<orderedlist>
<listitem>
<para>Stellen Sie fest, ob die
<link xlink:href="&url.base;/de/support.html#gnats">Datenbank mit den
Problemberichten</link> 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 maintainer</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 <link xlink:href="&url.articles.mailing-list-faq.en;/article.html">
Mailingliste</link> 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
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, benutzen
Sie &man.send-pr.1;, um einen Problembericht zu erstellen.
Bevor Sie einen solchen Bericht erstellen, lesen Sie den
Artikel <link xlink:href="&url.articles.problem-reports.en;/article.html">Writing
&os; Problem Reports</link>.</para>
</listitem>
<listitem>
<para>Reparieren Sie ihn! Das <link xlink:href="&url.books.porters-handbook.en;/index.html">&os;
Porter's Handbook</link> 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>Benutzen Sie alternativ &man.pkg.add.1;, um das Paket zu
installieren.</para>
</listitem>
</orderedlist>
</sect1>
</chapter>