<!--
     The FreeBSD Documentation Project
     The FreeBSD German Documentation Project

     $FreeBSD$
     $FreeBSDde: de-docproj/books/handbook/ports/chapter.sgml,v 1.74 2005/01/17 00:52:19 mheinen Exp $
     basiert auf: 1.237
-->

<chapter id="ports">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Uwe</firstname>
	<surname>Pierau</surname>
	<contrib>&Uuml;bersetzt von </contrib>
      </author>
    </authorgroup>
    <!-- Jul 2000 -->
  </chapterinfo>
  <title>Installieren von Anwendungen: Pakete und Ports</title>

  <sect1 id="ports-synopsis">
    <title>&Uuml;bersicht</title>

    <indexterm><primary>Ports</primary></indexterm>
    <indexterm><primary>Pakete</primary></indexterm>
    <para>FreeBSD enth&auml;lt sehr viele Systemwerkzeuge, die Teil des
      Basissystems sind.  Allerdings sind Sie fr&uuml;her oder sp&auml;ter
      auf Software Dritter angewiesen, damit Sie bestimmte Arbeiten
      durchf&uuml;hren k&ouml;nnen.  Um diese Software zu installieren,
      stellt FreeBSD zwei, sich erg&auml;nzende, Methoden zur
      Verf&uuml;gung: Die Ports-Sammlung und bin&auml;re Softwarepakete.
      Sie k&ouml;nnen beide Methoden benutzen, um Ihre Lieblingsanwendungen
      von lokalen Medien oder &uuml;ber das Netzwerk zu
      installieren.</para>

    <para>Dieses Kapitel behandelt die folgenden Themen:</para>

    <itemizedlist>
      <listitem>
	<para>Die Installation bin&auml;rer Softwarepakete.</para>
      </listitem>

      <listitem>
	<para>Der Bau Software Dritter mithilfe  der
	  Ports-Collection.</para>
      </listitem>

      <listitem>
	<para>Wie zuvor installierte Pakete oder Ports
	  entfernt werden.</para>
      </listitem>

      <listitem>
	<para>Wie Sie die Voreinstellungen der Ports-Collection
	  &uuml;berschreiben.</para>
      </listitem>

      <listitem>
	<para>Die Suche nach geeigneter Software.</para>
      </listitem>

      <listitem>
	<para>Wie Sie Ports 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&auml;tzliche Software meist wie folgt
      installiert wird:</para>

    <procedure>
      <step>
	<para>Download der Software, die als Quelltext oder im
	  Bin&auml;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&auml;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&uuml;ssen Sie vielleicht das <filename>Makefile</filename>
	  anpassen, oder <command>configure</command> laufen lassen, oder
	  andere Arbeiten durchf&uuml;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&uuml;r FreeBSD
      geschrieben wurde, m&uuml;ssen Sie vielleicht sogar den Quelltext
      anpassen, damit die Software funktioniert.</para>

    <para>Wenn Sie unbedingt wollen, k&ouml;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&ouml;nnen.  Zurzeit werden &uuml;ber
      &os.numports; Anwendungen Dritter &uuml;ber diese Methoden zur
      Verf&uuml;gung gestellt.</para>

    <para>Das FreeBSD-Paket einer Anwendung besteht aus einer einzigen
      Datei, die Sie sich herunterladen m&uuml;ssen.  Das Paket
      enth&auml;lt schon &uuml;bersetzte Kommandos der Anwendung, sowie
      zus&auml;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&uuml;gung.
      Mit diesem System k&ouml;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&uuml;hren f&uuml;r Sie alle oben
      aufgef&uuml;hrten Schritte zum Installieren einer Anwendung durch.
      Mit einigen wenigen Kommandos wird der Quellcode der Anwendung
      automatisch heruntergeladen, ausgepackt, gepatcht, &uuml;bersetzt und
      installiert.</para>

    <para>Tats&auml;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&ouml;nnen.</para>

    <para>Pakete und Ports beachten Abh&auml;ngigkeiten zwischen
      Anwendungen.  Angenommen, Sie wollen eine Anwendung installieren,
      die von einer Bibliothek abh&auml;ngt und die Anwendung wie die
      Bibliothek sind als Paket oder Port f&uuml;r FreeBSD verf&uuml;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&uuml;tzt, wo doch beide Methoden fast gleiches leisten.
      Beide Methoden haben ihre St&auml;rken und welche Sie einsetzen,
      h&auml;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&uuml;ssen nicht mehr kompiliert werden.  Dies ist
	  ein Vorteil, wenn Sie gro&szlig;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&ouml;glichst vielen System laufen sollen,
	  werden Optionen beim &Uuml;bersetzen zur&uuml;ckhaltend gesetzt.
	  Wenn Sie eine Anwendung &uuml;ber die Ports installieren,
	  k&ouml;nnen Sie die Angabe der Optionen optimieren.  Zum Beispiel
	  k&ouml;nnen Sie spezifischen Code f&uuml;r Pentium&nbsp;IV oder
	  Athlon Prozessoren erzeugen.</para>
      </listitem>

      <listitem>
	<para>Die Eigenschaften einiger Anwendungen werden &uuml;ber
	  Optionen zum Zeitpunkt des &Uuml;bersetzens festgelegt.
	  <application>Apache</application> kann zum Beispiel &uuml;ber
	  viele eingebaute Optionen konfiguriert werden.  Wenn Sie das
	  Portsystem benutzen, k&ouml;nnen Sie die Vorgaben f&uuml;r die
	  Optionen &uuml;berschreiben.</para>

	<para>F&uuml;r einige F&auml;lle existieren verschiedene
	  Pakete einer Anwendung, die beim &Uuml;bersetzen
	  unterschiedlich konfiguriert wurden.  F&uuml;r
	  <application>Ghostscript</application> gibt es ein
	  <filename>ghostscript</filename>-Paket und ein
	  <filename>ghostscript-nox11</filename>-Paket, die sich durch die
	  X11 Unterst&uuml;tzung unterscheiden.  Diese grobe Unterscheidung
	  ist mit dem Paketsystem m&ouml;glich, wird aber schnell
	  unhandlich, wenn eine Anwendung mehr als ein oder zwei Optionen
	  zum Zeitpunkt des &Uuml;bersetzens besitzt.</para>
      </listitem>

      <listitem>
	<para>Die Lizenzbestimmungen mancher Software verbietet ein
	  Verbreiten in bin&auml;rer Form.  Diese Software muss als
	  Quelltext ausgeliefert werden.</para>
      </listitem>

      <listitem>
	<para>Einige Leute trauen bin&auml;ren Distributionen nicht.  Wenn
	  Sie den Quelltext besitzen, k&ouml;nnen Sie sich diesen
	  (zumindest theoretisch) durchlesen und nach m&ouml;glichen Problemen
	  durchsuchen.</para>
      </listitem>

      <listitem>
	<para>Wenn Sie eigene Anpassungen besitzen, ben&ouml;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&uuml;rlich nur, wenn es die
	  Lizenzbestimmungen erlauben).</para>
      </listitem>
    </itemizedlist>

    <para>Wenn Sie &uuml;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>
	&uuml;ber m&ouml;gliche Sicherheitsprobleme mit der
	Anwendung informieren.</para>

      <para>Die Anwendung
	<filename role="package">security/portaudit</filename>
	pr&uuml;ft automatisch alle installierten Anwendungen
	auf bekannte Sicherheitsl&ouml;cher.  Vor dem Bau eines
	Ports findet ebenfalls eine Pr&uuml;fung statt.
	Installierte Pakete pr&uuml;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&uuml;ssen Sie deren
      Art und Namen kennen.</para>

    <para>Die Anzahl der nach FreeBSD portierten Anwendungen steigt
      st&auml;ndig.  Zum Gl&uuml;ck gibt es einige Wege, die richtige zu
      finden.</para>

    <itemizedlist>
      <listitem>
	<para>Eine aktuelle Liste verf&uuml;gbarer Anwendungen, die sich
	  auch durchsuchen l&auml;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&ouml;nnen sich alle Anwendungen einer Kategorie anzeigen
	  lassen.  Wenn Sie den Namen der Anwendung kennen, k&ouml;nnen
	  Sie nat&uuml;rlich auch direkt nach dem Namen suchen.</para>
      </listitem>

      <indexterm><primary>FreshPorts</primary></indexterm>

      <listitem>
	<para>FreshPorts, das von Dan Langille gepflegt wird, erreichen Sie
	  unter <ulink url="http://www.FreshPorts.org/"></ulink>.
	  FreshPorts verfolgt
	  &Auml;nderungen an Anwendungen aus den Ports.  Mit FreshPorts
	  k&ouml;nnen Sie ein oder mehrere Ports beobachten und sich eine
	  E-Mail schicken lassen, wenn ein Port aktualisiert wird.</para>
      </listitem>

      <indexterm><primary>FreshMeat</primary></indexterm>

      <listitem>
	<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>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 search 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&ouml;tigt, Sie brauchen sich darum
	  jetzt nicht weiter zu k&uuml;mmern.</para>

	<para>Erweiterte Suchen f&uuml;hren Sie mit dem Kommando
	  <command>make search key=<replaceable>Text</replaceable></command>
	  aus.  Damit werden Portnamen, Kommentare, Beschreibungen und
	  Abh&auml;ngigkeiten nach <replaceable>Text</replaceable>
	  durchsucht.  Dies kann sehr n&uuml;tzlich sein, wenn Sie
	  den Namen des Programms, nach dem Sie suchen, nicht kennen.</para>

        <para>In beiden F&auml;llen wird Gro&szlig;- 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>

    <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&ouml;nnen Sie ein FreeBSD-Paket von einer
	lokalen Datei oder &uuml;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&ouml;tige Objektformat und
	die richtige Version des Pakets, l&auml;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&uuml;rde ohne weitere Interaktion das
	richtige Paket herunterladen und installieren.  Pakete
	werden vom &os;-Hauptserver heruntergeladen.  Wenn Sie
	anderen Server verwenden m&ouml;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&uuml;cksichtigt, heruntergeladen.
	Wenn Sie durch eine Firewall gesch&uuml;tzt werden, m&uuml;ssen Sie
	vielleicht eine oder mehrere dieser Umgebungsvariablen setzen oder
	einen FTP oder HTTP Proxy verwenden.  Eine Liste der
	unterst&uuml;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&ouml;nnen dies &auml;ndern,
	  indem Sie die Umgebungsvariable <envar>PACKAGESITE</envar>
	  &uuml;berschreiben.</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&auml;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 &uuml;berein.</entry>
	    </row>

            <row>
	      <entry>&lt;</entry>
	      <entry>Die installierte Version ist &auml;lter als die der
	        verf&uuml;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>
	  </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>
    </sect2>

    <sect2>
      <title>Verschiedenes</title>
      <para>Informationen &uuml;ber alle installierte Pakete werden in
        <filename>/var/db/pkg</filename> abgelegt.  Das Verzeichnis
	enth&auml;lt Dateien, in denen sich die Beschreibungen der Pakete
	und Listen von Dateien, die zu einem Paket geh&ouml;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&ouml;schen.</para>

    <sect2 id="ports-tree">
      <title>Installation der Ports-Sammlung</title>

      <para>Bevor Sie einen Port installieren k&ouml;nnen, m&uuml;ssen Sie
        zuerst die Ports-Sammlung installieren, die aus Makefiles, Patches
	und Beschreibungen besteht.  Die Ports-Sammlung wird
	f&uuml;r gew&ouml;hnlich unter <filename>/usr/ports</filename>
	installiert.</para>

      <para>Bei der FreeBSD-Installation hatten Sie in
        <application>sysinstall</application> die M&ouml;glichkeit, die
	Ports-Sammlung zu installieren.  Wenn Sie die Sammlung damals nicht
	installiert haben, k&ouml;nnen Sie das mit den folgenden
	Anweisungen nachholen:</para>

      <procedure>
	<title>Installieren mit <application>sysinstall</application></title>

	<para>Sie k&ouml;nnen die Ports-Sammlung nachtr&auml;glich mit
	  <application>sysinstall</application> installieren.</para>

	<step>
	  <para>F&uuml;hren Sie als <username>root</username>
	    <command>sysinstall</command> (vor &os;&nbsp;5.2
	    <command>/stand/sysinstall</command>) aus:</para>

	  <screen>&prompt.root; <userinput>/stand/sysinstall</userinput></screen>
	</step>

	<step>
	  <para>W&auml;hlen Sie den Punkt <guimenuitem>Configure</guimenuitem>
	    aus und dr&uuml;cken Sie <keycap>Enter</keycap>.</para>
	</step>

	<step>
	  <para>W&auml;hlen Sie dann <guimenuitem>Distributions</guimenuitem>
	    aus und dr&uuml;cken Sie <keycap>Enter</keycap>.</para>
	</step>

	<step>
	  <para>In diesem Men&uuml; w&auml;hlen Sie
	    <guimenuitem>ports</guimenuitem> aus und dr&uuml;cken die
	    <keycap>Leertaste</keycap>.</para>
	</step>

	<step>
	  <para>Danach w&auml;hlen Sie <literal>Exit</literal> aus und
	    dr&uuml;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&auml;hlen Sie nun <literal>Exit</literal> aus und
	    dr&uuml;cken <keycap>Enter</keycap>.</para>
	</step>

	<step>
	  <para>Verlassen Sie <application>sysinstall</application> mit
	    <keycap>X</keycap>.</para>
	</step>
      </procedure>

      <para>Alternativ k&ouml;nnen Sie die Ports-Sammlung auch mit
        <application>CVSup</application> installieren und aktualisieren.
	Ein Beispiel f&uuml;r die Konfiguration von
	<application>CVSup</application> finden Sie in
	<filename>/usr/share/examples/cvsup/ports-supfile</filename>.
	Weitere Informationen &uuml;ber <application>CVSup</application>
	und dessen Konfiguration finden Sie in <link linkend="cvsup">Benutzen
	  von CVSup</link> (<xref linkend="cvsup">).</para>

      <procedure>
	<title>Installieren mit <application>CVSup</application></title>

	<para>Dies ist eine schnelle Methode um die Ports-Sammlung zu
	  aktualisieren.</para>

	<step>
	  <para>Installieren Sie den <filename
	      role="package">net/cvsup</filename> Port.  Weitere
	    Informationen finden Sie in
	    <link linkend="cvsup-install">Installation von CVSup</link>
	    (<xref linkend="cvsup-install">).</para>
	</step>

	<step>
	  <para>Kopieren Sie als <username>root</username>
	    <filename>/usr/share/examples/cvsup/ports-supfile</filename> an
	    einen neuen Ort, beispielsweise nach <filename>/root</filename>
	    oder in Ihr Heimatverzeichnis.</para>
	</step>

	<step>
	  <para>Editieren Sie die Kopie von
	    <filename>ports-supfile</filename>.</para>
	</step>

	<step>
	  <para>Ersetzen Sie
	    <replaceable>CHANGE_THIS.FreeBSD.org</replaceable> durch einen
	    <application>CVSup</application>-Server in Ihrer N&auml;he.
	    Eine vollst&auml;ndige Liste der
	    <application>CVSup</application>-Spiegel finden Sie in
	    <link linkend="cvsup-mirrors">CVSup Spiegel</link>
	    (<xref linkend="cvsup-mirrors">).</para>
	</step>

	<step>
	  <para>F&uuml;hren Sie <command>cvsup</command> aus:</para>

	  <screen>&prompt.root; <userinput>cvsup -g -L 2 <replaceable>/root/ports-supfile</replaceable></userinput></screen>
	</step>

	<step>
	  <para>Mit diesem Kommando k&ouml;nnen Sie sp&auml;ter die
	    Ports-Sammlung aktualisieren.  Die installierten Ports werden
	    mit diesem Kommando nicht aktualisiert.</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&uuml;st</quote> im Zusammenhang
        mit der Ports-Sammlung gemeint?  In aller K&uuml;rze: ein
	Ger&uuml;st eines Ports ist ein minimaler Satz von Dateien, mit
	denen das FreeBSD-System eine Anwendung sauber &uuml;bersetzen und
	installieren kann.  Ein jeder Port beinhaltet:</para>

      <itemizedlist>
	<listitem>
	  <para>Eine Datei <filename>Makefile</filename>.  Das
	    <filename>Makefile</filename> enth&auml;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&auml;lt Informationen, welche Dateien heruntergeladen
	    werden m&uuml;ssen, sowie MD5-Pr&uuml;fsummen, um sicher zu gehen,
	    dass diese Dateien w&auml;hrend des Herunterladens nicht
	    besch&auml;digt wurden.</para>
	</listitem>

	<listitem>
	  <para>Ein <filename>files</filename> Verzeichnis.  Hierin
	    liegen Patches, welche das &Uuml;bersetzen und Installieren
            der Anwendung erm&ouml;glichen.  Patches sind im Wesentlichen
            kleine Dateien, die &Auml;nderungen an speziellen Dateien
            spezifizieren.  Sie liegen als reiner Text vor und sagen
            ungef&auml;hr:
	    <quote>L&ouml;sche Zeile 10</quote> oder
	    <quote>&Auml;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&uuml;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&szlig;erdem sind hier Informationen enthalten, die zum
	    Entfernen des Ports ben&ouml;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
	&uuml;ber diese Dateien oder das Port-System erfahren sollen, lesen
	Sie bitte im <ulink url="&url.books.porters-handbook.en;/index.html">FreeBSD
	  FreeBSD Porter's Handbook</ulink> weiter.</para>

      <para>Ein Port enth&auml;lt Anweisungen, wie der Quelltext
	zu bauen ist, enth&auml;lt aber nicht den Quelltext selbst.
	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&auml;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&uuml;ssen Sie als Benutzer
	  <username>root</username> angemeldet sein.</para>
      </note>

      <warning>
	<para>Stellen Sie sicher, dass die Ports-Collection
	  aktuell ist, bevor Sie einen Port installieren.
	  Informieren Sie sich ebenfalls auf der Seite
	  <ulink url="http://vuxml.FreeBSD.org/"></ulink>
	  &uuml;ber m&ouml;gliche Sicherheitsprobleme
	  des Ports.</para>

	<para>Vor der Installation kann
	  <application>portaudit</application> eine neue Anwendung
	  automatisch auf Sicherheitsl&ouml;cher pr&uuml;fen.
	  Das Werkzeug befindet sich in der Ports-Collection
	  (<filename role="package">security/portaudit</filename>).
	  Vor der Installation einer neuen Anwendung sollten
	  Sie mit <command>portaudit -F</command> die
	  Sicherheitsdatenbank aktualisieren.  Die t&auml;glich
	  laufende Sicherheitspr&uuml;fung des Systems
	  aktualisiert die Datenbank und pr&uuml;ft installierte
	  Anwendungen auf vorhandene Sicherheitsl&ouml;cher.
	  Weiteres erfahren Sie in den Hilfeseiten &man.portaudit.1;
	  und &man.periodic.8;.</para>
      </warning>

      <sect3 id="ports-cd">
        <title>Installation von einer CD-ROM</title>

	<indexterm>
	  <primary>Ports</primary>
	  <secondary>von CD-ROM installieren</secondary>
	</indexterm>
	<para>Die offiziellen FreeBSD-CD-ROMs enthalten keine Distfiles
	  mehr, da diese sehr viel Platz beanspruchen, der besser von
	  vorkompilierten Paketen genutzt werden kann.  Andere FreeBSD-CD-ROMs,
	  wie der <quote>FreeBSD-PowerPak</quote>, enthalten Distfiles.
	  Diese CD-ROMs k&ouml;nnen Sie &uuml;ber einen H&auml;ndler wie
	  <ulink url="http://www.freebsdmall.com/">FreeBSD Mall</ulink>
	  beziehen.  Dieser Abschnitt geht davon aus, dass Sie eine
	  solche CD-ROM Distribution besitzen.</para>

	<para>Legen Sie die &os; CD-ROM in das Laufwerk ein und
	  h&auml;ngen Sie die CD-ROM unter
	  <filename>/cdrom</filename> ein.  Wenn Sie ein
	  anderes Verzeichnis benutzen, setzen Sie bitte
	  die make-Variable <makevar>CD_MOUNTPTS</makevar>.
	  Wechseln Sie 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&uuml;st erkennen.  Der
	  n&auml;chste Schritt ist das &Uuml;bersetzen (auch Bauen genannt)
	  des Ports.  Dies wird durch Eingabe von <command>make</command>
	  getan.  Haben Sie das eingegeben, so werden Sie etwas lesen
	  wie:</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 file:/cdrom/ports/distfiles/.
===&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 &Uuml;bersetzung weggelassen]
...
&prompt.root;</screen>

        <para>Ist die &Uuml;bersetzungsprozedur beendet, sind Sie wieder
          in der Kommandozeile und der n&auml;chste Schritt ist die
          Installation.  Erweitern Sie dazu einfach die
	  <command>make</command>-Kommandozeile um das Wort
	  <command>install</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>Wenn Sie wieder den Prompt haben, sollten Sie in der Lage
	  sein, die gerade installierte Anwendung laufen zu lassen.  Da
	  <command>lsof</command> eine Anwendung ist, die mit erh&ouml;hten
	  Rechten l&auml;uft, wird eine Sicherheitswarnung angezeigt.  Sie
	  sollten alle Warnungen w&auml;hrend des Baus und der Installation
	  eines Ports beachten.</para>

        <note>
          <para>Sie k&ouml;nnen einen Schritt sparen, wenn Sie gleich
	    <command>make install</command> anstelle von
	    <command>make</command> und dem anschlie&szlig;enden
	    <command>make install</command> eingeben.</para>
        </note>

        <note>
	  <para>Um die Suche nach Kommandos zu beschleunigen, speichern
	    einige Shells eine Liste der verf&uuml;gbaren Kommandos in den
	    durch die Umgebungsvariable <envar>PATH</envar> gegebenen
	    Verzeichnissen.  Nach der Installation eines Ports m&uuml;ssen
	    Sie in einer solchen Shell vielleicht das Kommando
	    <command>rehash</command> absetzen, um die neu installierten
	    Kommandos benutzen zu k&ouml;nnen.  Das Kommando
	    <command>rehash</command> gibt es in Shells wie
	    der <command>tcsh</command>.  Unter Shells wie
	    der <command>sh</command> oder der
	    <filename role="package">shells/bash</filename>
	    benutzen Sie das Kommando <command>hash -r</command>.
	    Weiteres entnehmen Sie bitte der Dokumentation
	    Ihrer Shell.</para>
        </note>

        <note>
          <para>Beachten Sie bitte, dass die Lizenzen einiger Ports
	    die Einbeziehung auf der CD-ROM verbieten.  Das kann
	    verschiedene Gr&uuml;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&uuml;ssen Sie Online sein.  Folgen
	    Sie bitte den Anweisungen <link linkend="ports-inet">des
	      n&auml;chsten Abschnitts</link>.</para>
        </note>
      </sect3>

      <sect3 id="ports-inet">
      <title>Ports vom Internet installieren</title>

        <para>Dieser Abschnitt setzt voraus, dass Sie eine Verbindung
	  mit dem Internet haben.  Haben Sie dies nicht, m&uuml;ssen Sie
	  eine <link linkend="ports-cd">CD-ROM Installation</link>
	  durchf&uuml;hren oder das Distfile selber nach
	  <filename>/usr/ports/distfiles</filename> stellen.</para>

        <para>Das Installieren eines Ports vom Internet wird genauso
	  durchgef&uuml;hrt wie das Installieren von CD-ROM.  Der einzige
	  Unterschied zwischen beiden ist, dass das Distfile des
	  Ports vom Internet heruntergeladen und nicht von der CD-ROM
	  gelesen wird.</para>

        <para>Die durchgef&uuml;hrten Schritte sind identisch:</para>

        <screen>&prompt.root; <userinput>make install</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://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
439860 bytes transferred in 18.0 seconds (23.90 kBps)
===&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 &Uuml;bersetzung weggelassen]
...
===&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>Wie Sie sehen k&ouml;nnen, besteht der einzige Unterschied in
	  der Zeile, die Ihnen sagt, woher das System den Quellcode
	  holt.</para>

	<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&uuml;cksichtigt.  Wenn Sie durch
	  eine Firewall gesch&uuml;tzt werden, m&uuml;ssen Sie vielleicht
	  eine oder mehrere dieser Umgebungsvariablen setzen, oder einen FTP
	  oder HTTP Proxy verwenden.  Eine Liste der unterst&uuml;tzten
	  Umgebungsvariablen finden Sie in &man.fetch.3;.</para>

	<para>Benutzer ohne eine st&auml;ndige Internet-Verbindung
	  werden das Kommando <command>make fetch</command> zu
	  sch&auml;tzen wissen.  Das Kommando l&auml;dt alle
	  ben&ouml;tigten Dateien eines Ports herunter.  Sie
	  k&ouml;nnen das Kommando im Verzeichnis
	  <filename>/usr/ports</filename> laufen lassen.  In diesem
	  Fall werden <emphasis>alle</emphasis> Dateien
	  heruntergeladen.  Es ist auch m&ouml;glich,
	  <command>make fetch</command> nur in einem Teil
	  des Baums, wie <filename>/usr/ports/net</filename>,
	  aufzurufen.  Die Dateien von allen abh&auml;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&auml;ngig davon, in welchem Verzeichnis
	    Sie <command>make</command> aufrufen, k&ouml;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&ouml;nnen.  Weiterhin gibt es
	    F&auml;lle, in denen zwei Ports unterschiedliche
	    Inhalte in derselben Datei speichern wollen.</para>
	</note>

	<para>Manchmal ist es erforderlich, die ben&ouml;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 &uuml;berschreiben k&ouml;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>
	  &uuml;berschrieben.</para>

	<note>
	  <para>Einige Ports besitzen Optionen, mit denen Sie
	    zus&auml;tzliche Funktionen oder Sicherheitsoptionen
	    einstellen k&ouml;nnen (oder manchmal auch m&uuml;ssen).
	    Zus&auml;tzliche Optionen k&ouml;nnen beispielsweise f&uuml;r
	    <filename role="package">www/mozilla</filename>,
	    <filename role="package">security/gpgme</filename> und
	    <filename role="package">mail/sylpheed-claws</filename>
	    angegeben werden.  Wenn ein Port &uuml;ber zus&auml;tzliche
	    Optionen verf&uuml;gt, werden diese beim Bau des
	    Ports auf der Konsole ausgegeben.</para>
	</note>
      </sect3>

      <sect3>
	<title>Vorgabe-Verzeichnisse &auml;ndern</title>

	<para>Manchmal ist es n&uuml;tzlich (oder erforderlich),
	  in anderen Verzeichnissen zu arbeiten.  Die Verzeichnisse
	  k&ouml;nnen Sie mit den Variablen <makevar>PORTSDIR</makevar>
	  und <makevar>PREFIX</makevar> einstellen.  Die Variable
	  <makevar>PORTSDIR</makevar> gibt das Bauverzeichnis an:</para>

	<screen>&prompt.root; <userinput>make PORTSDIR=/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&ouml;nnen beide Variablen auch zusammen
	  benutzen:</para>

	<screen>&prompt.root; <userinput>make PORTSDIR=../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 &auml;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&ouml;glich.</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 einen Port entfernt, f&uuml;r den
	Fall, dass Sie versehentlich einen falschen installiert haben.
        Nun wollen wir mal unser vorheriges Beispiel wieder
	l&ouml;schen (f&uuml;r alle die nicht aufgepasst haben, das
	war <command>lsof</command>).
	Wie beim Installieren wechseln Sie zuerst in das Verzeichnis des
	Ports <filename>/usr/ports/sysutils/lsof</filename>.  Nachdem Sie
	das Verzeichnis gewechselt haben, k&ouml;nnen Sie
	<command>lsof</command> mit <command>make deinstall</command>
	entfernen:</para>

      <screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput>
&prompt.root; <userinput>make deinstall</userinput>
===&gt;  Deinstalling for lsof-4.57</screen>

      <para>Das war leicht, Sie haben <command>lsof</command>
	von Ihrem System entfernt.  M&ouml;chten Sie den Port doch
	wieder neu installieren, geben Sie
	<command>make reinstall</command> im Verzeichnis
        <filename>/usr/ports/sysutils/lsof</filename> ein.</para>

      <para><command>make deinstall</command> und <command>make
          reinstall</command> funktionieren nicht mehr, wenn Sie einmal
	<command>make clean</command> ausgef&uuml;hrt haben.  Wenn Sie
	dennoch einen Port nach einem <command>make clean</command>
	entfernen m&ouml;chten, benutzen Sie &man.pkg.delete.1;
	wie im Abschnitt <link linkend="packages-using">Benutzen des
	  Paketsystems</link> beschrieben.</para>
    </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&uuml;hren Sie nach dem Bau und der
	Installation eines Ports <command>make clean</command>
	aus, um die Arbeitsverzeichnisse zu l&ouml;schen.
	Das Kommando entfernt das Verzeichnis
	<filename class="directory">work</filename> nachdem
	ein Port gebaut und installiert wurde.  Die Quelldateien
	im Verzeichnis <filename class="directory">distfiles</filename>
	k&ouml;nnen Sie ebenfalls l&ouml;schen.  Entfernen Sie
	nicht mehr ben&ouml;tigte Ports, um weiteren Plattenplatz
	freizugeben.</para>

      <para>Wenn Sie die Ports-Sammlung mit
        <application>CVSup</application> synchronisieren,
	k&ouml;nnen Sie in der Datei <filename>refuse</filename>
	Kategorien angeben, die nicht heruntergeladen werden
	sollen.  <xref linkend="cvsup-refuse-file"> beschreibt
	die Datei <filename>refuse</filename>.</para>
    </sect2>

    <sect2 id="ports-upgrading">
      <title>Ports aktualisieren</title>

      <indexterm>
	<primary>portupgrade</primary>
      </indexterm>
      <indexterm>
	<primary>Ports</primary>
	<secondary>aktualisieren</secondary>
      </indexterm>

      <para>Nachdem Sie die Ports-Collection auf den neusten
	Stand gebracht haben, lesen Sie bitte
	<filename>/usr/ports/UPDATING</filename> bevor
	Sie einen Port aktualisieren.  In dieser Datei werden
	Probleme und zus&auml;tzlich durchzuf&uuml;hrende
	Schritte bei der Aktualisierung einzelner Ports
	beschrieben.</para>

      <para>Es kann sehr m&uuml;hsam sein, einen Port zu
	aktualisieren:  Sie m&uuml;ssen den Port im Port-Verzeichnis
	bauen, den alten Port entfernen, den neuen Port
	installieren und anschlie&szlig;end aufr&auml;umen.  Stellen
	Sie sich vor, Sie m&uuml;ssten f&uuml;nf Ports auf
	diese Weise aktualisieren!  Viele Systemadministratoren
	haben sich &uuml;ber dieses aufw&auml;ndige Verfahren
	beklagt.  Mittlerweile gibt es aber den Port
	<filename role="package">sysutils/portupgrade</filename>,
	der diese Aufgabe automatisiert.  Installieren Sie
	diesen Port, wie jeden anderen, mit dem Kommando
	<command>make install clean</command>.</para>

      <para>Das Werkzeug <application>portupgrade</application>
	ben&ouml;tigt eine Datenbank, die installierte Ports
	enth&auml;lt.  Das Kommando <command>pkgdb -F</command>
	erstellt diese Datenbank im Verzeichnis
	<filename>/var/db/pkg</filename>.  Das Kommando
	<command>portupgrade -a</command> aktualisiert alle
	Ports des Systems.  Dazu wird die Datenbank und die
	Datei <filename>INDEX</filename> der Ports-Sammlung
	gelesen.  Anschlie&szlig;end werden die ben&ouml;tigten
	Quelldateien heruntergeladen, die Ports gebaut, gesichert
	und installiert.  Zum Abschlu&szlig; r&auml;umt
	<application>portupgrade</application> die Arbeitsverzeichnisse
	auf.  Das Programm <application>portupgrade</application>
	ist sehr vielseitig.  Die wichtigsten Anwendungen
	sind im folgenden Absatz zusammengefasst.</para>

      <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> auch alle
	Pakete aktualisieren soll, die von dem gegebenen
	Paket abh&auml;ngen.  Der Schalter <option>-R</option>
	aktualisiert alle Pakete, die das angegebene Paket
	voraussetzen.</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&uuml;hrten Verzeichnisse nach Paketen.  Sind
	lokal keine Pakete vorhanden, versucht
	<application>portupgrade</application> die Pakete
	&uuml;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>

      <para>Wenn Sie nur die Quelldateien des Ports (oder die Pakete
	mit <option>-P</option>) herunterladen m&ouml;chten,
	ohne die Anwendung zu bauen oder zu installieren,
	geben Sie die Option <option>-F</option> an.
	Weitere M&ouml;glichkeiten lesen Sie bitte in
	der Hilfeseite &man.portupgrade.1; nach.</para>

      <note>
	<para>Es ist wichtig, regelm&auml;&szlig;ig
	  Unstimmigkeiten in der Paketdatenbank mit
	  dem Kommando <command>pkgdb -F</command> zu
	  bereinigen.  Besonders wichtig ist dies, wenn
	  <application>portupgrade</application> explizit
	  zur Bereinigung der Datenbank auffordert.
	  Unterbrechen Sie <application>portupgrade</application>
	  keinesfalls w&auml;hrend die Paketdatenbank bereinigt
	  wird, da sonst die Datenbank korrumpiert wird.</para>
      </note>

      <para>Im Verzeichnis <filename>ports/sysutils</filename>
	finden Sie weitere Werkzeuge, mit denen Sie die
	Ports-Sammlung aktualisieren k&ouml;nnen.</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&uuml;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&auml;tzliche Dokumentation.</para>

	<para>Wenn Sie sich nicht sicher sind, welche Version einer
	  Anwendung Sie gerade installiert haben, k&ouml;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&auml;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&uuml;r Konfigurationsdateien und die zus&auml;tzliche
	  Dokumentation, wenn es welche gibt, an.</para>
      </listitem>

      <listitem>
	<para>Wenn es f&uuml;r die Anwendung eine Webseite gibt, suchen
	  Sie dort nach zus&auml;tzlicher Dokumentation wie FAQs
	  (h&auml;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&auml;lt oft eine Zeile, die mit
	  <literal>WWW:</literal> beginnt und die URL der Webseite
	  enth&auml;lt.</para>
      </listitem>

      <listitem>
	<para>Ports, die w&auml;hrend des Systemstarts gestartet
	  werden sollen, installieren meist ein Beispielskript im
	  Verzeichnis <filename>/usr/local/etc/rc.d</filename>.
	  &Uuml;berpr&uuml;fen Sie dieses Skript.  Wenn n&ouml;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 mal &uuml;ber einen Port, der bei Ihnen nicht
      funktioniert, k&ouml;nnten Sie zum Beispiel Folgendes tun:</para>

    <orderedlist>
      <listitem>
	<para>Reparieren Sie ihn!  Das <ulink
	  url="&url.books.porters-handbook.en;/index.html">FreeBSD
	    Porter's Handbook</ulink> enth&auml;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>Rummeckern &ndash; <emphasis>nur mittels E-Mail</emphasis>!
	  Senden Sie zuerst eine E-Mail an den Betreuer des Ports.  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.  Erhalten
	  Sie vom Betreuer keine Resonanz, k&ouml;nnen mit
	  &man.send-pr.1; einen Fehler-Report senden.</para>
      </listitem>

      <listitem>
	<para>Holen Sie sich das Paket von einem FTP-Server in Ihrer
	  N&auml;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 Spiegel in
	  Ihrer N&auml;he!  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>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
