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

     Original version 1.162
     $FreeBSD$
     $FreeBSDde: de-docproj/books/handbook/ports/chapter.sgml,v 1.8 2002/04/01 15:27:02 mheinen Exp $
-->

<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>
    <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>Nachdem Sie dieses Kapitel durchgearbeitet haben, werden Sie
      wissen</para>

    <itemizedlist>
      <listitem>
	<para>wie Sie bin&auml;re Softwarepakete installieren,</para>
      </listitem>
      <listitem>
	<para>wie Sie Software Dritter mit der Ports-Sammlung bauen
	  und</para>
      </listitem>
      <listitem>
	<para>wie Sie zuvor installierte Pakete oder Ports von einem
	  System entfernen.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1>
    <title>Installation von Software</title>

    <para>Wenn Sie schon einmal ein Unix System benutzt haben, werden Sie
      wissen, da&szlig; 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; oder &man.gzip.1; komprimiertes Tar-Archiv
	  enth&auml;lt.</para>
      </step>

      <step>
	<para>Durchsuchen der Dokumentation, meist eine Datei namens
	  <filename>README</filename> oder mehrere Dateien im Verzeichnis
	  <filename>doc/</filename>, nach Informationen, 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.  Zur Zeit 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.</para>

    <para>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, da&szlig;
      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 III 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 mu&szlig; 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 Mailingliste &a.ports;.</para>

    <para>Der Rest dieses Kapitels beschreibt, wie Sie Software Dritter mit
      Paketen oder Ports auf einem FreeBSD System installieren und
      verwalten.</para>
  </sect1>

  <sect1>
    <title>Suchen einer Anwendung</title>

    <para>Bevor Sie eine Anwendung installieren, m&uuml;ssen Sie deren
      Art und Namen kennen.</para>

    <para>Die Zahl 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;&szlig;t, finden Sie unter <ulink
	    url="../../../../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/">
	    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/">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>
    </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 und Installation eines Paketes</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 CDROMs), 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-4.56.4</replaceable></userinput></screen>

      <para>Das obige Beispiel w&uuml;rde ohne weitere Interaktion das
	richtige Paket herunterladen und installieren.</para>

      <para>Pakete werden im <filename>.tgz</filename> Format ausgeliefert.
	Sie finden Sie unter <ulink
	  url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/">
	  ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/</ulink> oder
	auf der FreeBSD CDROM 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>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>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.

      <informaltable frame="none">
        <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.</entry>
	    </row>

            <row>
	      <entry>*</entry>
	      <entry>In der Ports-Sammlung befinden sich mehrere Versionen
	        der Anwendung.</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>
    </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>/stand/sysinstall</command> aus:</para>

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

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

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

	<step>
	  <para>In diesem Men&uuml; w&auml;hlen Sie
	    <literal>ports</literal> 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 CDROM
	    oder FTP, fest.</para>
	</step>

	<step>
	  <para>Verlassen Sie <application>sysinstall</application>.</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>
	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">-->Benutzen von CVSup<!--</link> (<xref
	      linkend="cvsup">)-->.</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
	    <!--<linkinkend="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; cvsup -g -L 2 <replaceable>/root/ports-supfile</replaceable></screen>
	</step>

	<step>
	  <para>Benutzen Sie dieses Kommando regelm&auml;&szlig;ig, um die
	    Ports-Sammlung zu aktualisieren.</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 Pr&uuml;fsummen, um sicher zu gehen,
	    da&szlig; 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 <application>diff</application>
	    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-comment</filename>. Eine
	    einzeilige Beschreibung der Anwendung.</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="../porters-handbook/index.html">FreeBSD
	  Handbuch f&uuml;r Portierer</ulink> weiter.</para>

      <para>Nun haben Sie genug Hintergrund Informationen &uuml;ber
	die Ports-Sammlung und Sie k&ouml;nnen Ihren ersten Port
	installieren.  Es gibt dazu zwei M&ouml;glichkeiten, die
	im folgenden erl&auml;utert werden.</para>

      <para>Bevor Sie damit beginnen, m&uuml;ssen Sie sich nat&uuml;rlich
	einen Port zum Installieren aussuchen.  Sie k&ouml;nnen
	dazu mehrere Wege gehen, als einfachste Methode gibt es die
        <ulink url="../../../../ports/index.html">Liste aller Ports auf
	dem FreeBSD Web-Server</ulink>.  Sie k&ouml;nnen dort suchen
	oder in der Liste schm&ouml;kern.  Jeder Port enth&auml;lt
        au&szlig;erdem eine Beschreibung, so da&szlig; Sie sich vor der 
        Entscheidung, welchen Port Sie installieren wollen, &uuml;ber den Port 
	informieren k&ouml;nnen.</para>

      <para>Eine andere Methode bietet das Kommando <command>whereis</command>.
	Um <command>whereis</command> zu benutzen, geben Sie einfach
	<command>whereis <replaceable>Datei</replaceable></command> ein.
	Setzen Sie f&uuml;r <replaceable>Datei</replaceable> den Namen des
	Programms ein, das Sie suchen:</para>

      <screen>&prompt.root; <userinput>whereis lsof</userinput>
lsof: /usr/ports/sysutils/lsof</screen>

      <para>Damit haben wir herausgefunden, da&szlig; sich
        <command>lsof</command>, ein Systemwerkzeug, in
	<filename>/usr/ports/sysutils/lsof</filename> befindet.</para>

      <para>Ein weiterer Weg, einen bestimmten Port zu finden, ist es,
	die eingebaute Suchfunktion der Ports-Sammlung zu benutzen.
	Dazu m&uuml;ssen Sie im Verzeichnis <filename>/usr/ports</filename> 
	sein.  Darin geben Sie 
	<command>make search name=<replaceable>Anwendungsname</replaceable>
	  </command> ein, worin <replaceable>Anwendungsname</replaceable>
	der Name der von Ihnen 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>Mit <command>make search key=<replaceable>Text</replaceable>
	  </command> k&ouml;nnen Sie erweiterte Suchen durchf&uuml;hren.
	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>

      <note>
        <para>Zum Installieren von Ports m&uuml;ssen Sie als Benutzer
	  <username>root</username> angemeldet sein.</para>
      </note>

      <para>Jetzt, wo Sie den gew&uuml;nschten Port gefunden haben, kann es
	mit der eigentlichen Installation losgehen.  Der Port enth&auml;lt
	Anweisungen, wie der Quelltext zu bauen ist, enth&auml;lt aber
	nicht den Quelltext selber.  Den Quelltext erhalten Sie von einer
	CDROM 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.</para>

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

	<indexterm>
	  <primary>Ports</primary>
	  <secondary>Installation von einer CDROM</secondary>
	</indexterm>
	<para>Die offiziellen FreeBSD CDROMs enthalten keine Distfiles
	  mehr, da diese sehr viel Platz beanspruchen, der besser von
	  vorkompilierten Paketen genutzt werden kann.  Andere FreeBSD CDROMs,
	  wie der <quote>FreeBSD PowerPak</quote>, enthalten Distfiles.
	  Diese CDROMs 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, da&szlig; Sie eine
	  solche CDROM Distribution besitzen.</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 das 
          Installieren.  Dazu h&auml;ngen Sie einfach ein Wort an das
          <command>make</command>-Kommando, und dieses Wort ist
          <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>Beachten Sie bitte, da&szlig; die Lizenzen einiger Ports
	    die Einbeziehung auf der CDROM verbieten.  Das k&ouml;nnte
	    aufgrund verschiedener Gr&uuml;nde der Fall sein, beispielsweise
	    weil man sich vor dem Herunterladen registrieren lassen
	    mu&szlig; oder eine Weiterverteilung verboten ist u.s.w.
	    W&uuml;nschen Sie einen Port zu installieren, der nicht auf
	    der CDROM enthalten ist, so m&uuml;ssen Sie online gehen und
	    mit Hilfe <link linkend="ports-inet">des n&auml;chsten 
	    Abschnitts</link> den Port installieren.</para>
        </note>
      </sect3>

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

        <para>Dieser Abschnitt setzt voraus, da&szlig; Sie eine Verbindung
	  mit dem Internet haben.  Haben Sie dies nicht, m&uuml;ssen Sie
	  eine <link linkend="ports-cd">CDROM Installation</link>
	  durchf&uuml;hren.</para>

        <para>Das Installieren eines Ports vom Internet wird genauso
	  durchgef&uuml;hrt wie das Installieren von CDROM.  Der einzige
	  Unterschied zwischen beiden ist, da&szlig; das Distfile des
	  Ports vom Internet heruntergeladen und nicht von der CDROM 
	  genommen 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>Sie wissen nun, wie Sie Ports auf Ihrem Computer
	  installieren k&ouml;nnen.  Jetzt lernen Sie, wie Sie einen
	  Port wieder von Ihrem System l&ouml;schen.</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, da&szlig; Sie versehentlich einen falschen installiert haben.
        Nun wollen wir mal unser vorheriges Beispiel wieder
	l&ouml;schen (f&uuml;r alle die nicht aufgepa&szlig;t 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 <command>pkg_delete</command>
	wie im Abschnitt <link linkend="packages-using">Benutzen des
	  Paketsystems</link> beschrieben.</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, da&szlig; 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 Manual-Seiten, 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 <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 Manual-Seiten 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>
    </itemizedlist>
  </sect1>

  <sect1 id="ports-trouble">
    <title>Fehlersuche und -behebung</title>

    <para>Der folgende Abschnitt beschreibt einige einfache
      Fehlerbehebungsm&ouml;glichkeiten beim Benutzen der Ports-Sammlung
      und ein paar Fehlerbehandlungen, falls ein <link
      linkend="ports-broken">Port kaputt</link> ist.</para>

    <sect2 id="ports-questions">
      <title>Einige Fragen und Antworten</title>

      <qandaset>
        <qandaentry>
	  <question>
	  <para>Ich dachte hierbei ging es um Modems??!</para>
	  </question>

	  <answer>
	  <para>Ah, Sie m&uuml;ssen an die serielle Schnittstelle auf der
	    R&uuml;ckseite Ihres Computers gedacht haben (engl. port).  Wir
	    benutzen hier <quote>Port</quote> als Ergebnis des
	    <quote>Portierens</quote> einer Anwendung von einer Unix-Variante
            zu einer anderen.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para id="ports-patch">Was ist ein Patch?</para>
	  </question>

	  <answer>
	  <para>Ein Patch ist eine kleine Datei, die beschreibt, wie man
	    von einer Version einer Datei zu einer anderen kommt.  Sie
	    enth&auml;lt reinen Text und sagt im Prinzip Dinge wie
	    <quote>l&ouml;sche Zeile 23</quote>,
	    <quote>f&uuml;ge diese zwei Zeilen hinter Zeile 468 an</quote>,
	    oder <quote>&auml;ndere Zeile 197 hierzu</quote>.  Sie sind
	    auch bekannt als diffs, weil sie mit der Anwendung
	    <application>diff</application> erstellt werden.</para>
	  </answer>
	</qandaentry>

	<indexterm><primary>Tarball</primary></indexterm>
	<qandaentry>
	  <question>
	  <para id="ports-tarball">Worum gehts eigentlich bei diesen
	    Tarballs?</para>
	  </question>

	  <answer>
	  <para>Das ist eine Datei mit der Endung <filename>.tar</filename>
	    oder als Varianten mit <filename>.tar.gz</filename>,
	    <filename>.tar.Z</filename>, <filename>.tar.bz2</filename>,
	    oder auch <filename>.tgz</filename>.</para>

	  <para>Vereinfacht ist das ein Verzeichnisbaum, welcher in eine
	    einzelne Datei (<filename>.tar</filename>) archiviert und 
	    optional gepackt (<filename>.gz</filename>) wurde.  Diese
	    Technik wurde urspr&uuml;nglich f&uuml;r 
	    <emphasis>T</emphasis>ape <emphasis>AR</emphasis>chives 
	    benutzt (daher der Name <command>tar</command>), aber stellt
	    heute einen weit verbreiteten Weg da, im Internet Quellcode
            zu verbreiten und zu verteilen.</para>

	  <para>Sie k&ouml;nnen nachsehen, welche Dateien im Archiv
	    enthalten sind oder diese auspacken, indem Sie das Unix-Programm
	    <command>tar</command>, das Teil des FreeBSD Basissystems ist,
	    benutzen.  Das s&auml;he in etwa so aus:</para>

	  <screen>&prompt.user; <userinput>tar tvzf foobar.tar.gz</userinput>
&prompt.user; <userinput>tar xzvf foobar.tar.gz</userinput>
&prompt.user; <userinput>tar tvf foobar.tar</userinput>
&prompt.user; <userinput>tar xvf foobar.tar</userinput></screen>
	  </answer>
	</qandaentry>

	<indexterm><primary>Pr&uuml;fsumme</primary></indexterm>
	<qandaentry>
	  <question>
	  <para id="ports-checksum">Eine Pr&uuml;fsumme?</para>
	  </question>

	  <answer>
	  <para>Das ist eine Zahl, die dadurch generiert wird, indem man
	    die ganzen Daten einer Datei aufaddiert.  &Auml;ndert sich ein
	    Zeichen in dieser Datei, ist die Pr&uuml;fsumme nicht mehr die
	    gleiche und ein einfacher Vergleich erm&ouml;glicht das
	    Erkennen des Unterschieds.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Ich tat, was ihr zum &Uuml;bersetzen von Ports von der
	    CDROM geschrieben habt und es funktionierte auch prima, bis ich 
	    zum Port kermit kam.</para>

	  <screen>&prompt.root; <userinput>make install</userinput>
&gt;&gt; cku190.tar.gz doesn't seem to exist on this system.
&gt;&gt; Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/.</screen>

	  <para>Warum kann die Datei nicht gefunden werden?  Habe ich eine kaputte
	    CDROM?</para>
	  </question>

	  <answer>
	  <para>Wie im Abschnitt <link linkend="ports-cd">Installation von
	    CDROM</link> erl&auml;utert, d&uuml;rfen einige Ports wegen
	    Lizenz-Beschr&auml;nkungen nicht auf CDROM ver&ouml;ffentlicht
            werden. Kermit ist ein solches Beispiel.  Die Lizenz-Bestimmungen
	    verbieten uns das Brennen des Tarballs auf CDROM, leider
	    m&uuml;ssen Sie es sich von Hand aus dem Netz 
	    herunterladen &mdash; sorry!</para>

	  <para>Der Grund f&uuml;r die ganzen Fehlermeldungen liegt darin,
	    da&szlig; Sie zu diesem Zeitpunkt nicht mit dem Internet verbunden
            waren.  Haben Sie den Tarball von einer der
	    <makevar>MASTER_SITES</makevar> (aufgef&uuml;hrt im
	    <filename>Makefile</filename>) gezogen, k&ouml;nnen Sie die
	    Installation erneut starten.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Das habe ich getan, aber als ich ihn ins Verzeichnis
	    <filename>/usr/ports/distfiles</filename> legen wollte, erhielt
	    ich eine Fehlermeldung bez&uuml;glich der Zugriffsrechte.</para>
	  </question>

	  <answer>
	  <para>Der Port-Mechanismus versucht heruntergeladene Tarballs in
	    <filename>/usr/ports/distfiles</filename> abzulegen.  Dieses
	    Verzeichnis verweist aber oft auf ein Verzeichnis eines
	    Fileservers oder eine CDROM, die nur gelesen werden
	    k&ouml;nnen.  Wenn dies der Fall ist, k&ouml;nnen Sie einen
	    anderen Ort zum Speichern der Tarballs angeben:</para>

	  <screen>&prompt.root; <userinput>make DISTDIR=<replaceable>/Verzeichnis/mit/Schreibberechtigung</replaceable> install</userinput></screen>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Funktioniert das Konzept der Ports nur, wenn alles in
	    <filename>/usr/ports</filename> abl&auml;uft?  Mein 
	    Systemadministrator sagt, da&szlig; ich alles unter
	    <filename>/u/people/guests/wurzburger</filename> haben
	    mu&szlig;, aber das scheint nicht zu klappen.</para>
	  </question>

	  <answer>
	  <para>Sie k&ouml;nnen die Variablen <makevar>PORTSDIR</makevar>
	    und <makevar>PREFIX</makevar> benutzen, um dem Ports-System zu
	    sagen, da&szlig; es andere Verzeichnisse nutzen soll.  Zum
	    Beispiel w&uuml;rde,</para>

	  <screen>&prompt.root; <userinput>make PORTSDIR=/u/people/guests/wurzburger/ports install</userinput></screen>

	  <para>den Port in 
	    <filename>/u/people/guests/wurzburger/ports</filename>
	    kompilieren und alles unter <filename>/usr/local</filename>
	    installieren.</para>

	  <screen>&prompt.root; <userinput>make PREFIX=/u/people/guests/wurzburger/local install</userinput></screen>

	  <para>kompiliert in <filename>/usr/ports</filename> und
	    installiert ihn in
	    <filename>/u/people/guests/wurzburger/local</filename>.</para>

	  <para>Und nat&uuml;rlich</para>

	  <screen>&prompt.root; <userinput>make PORTSDIR=../ports PREFIX=../local install</userinput></screen>

	  <para>kombiniert die beiden Sachen. (Es ist aber ein wenig lang,
	    um es hier komplett aufzuschreiben.  Sie sollten aber die 
	    zugrunde liegende Idee erkennen.)</para>

	  <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, da&szlig; solche
	    Ports <makevar>PREFIX</makevar> beachten, ist schwierig oder
	    sogar unm&ouml;glich.</para>

	  <para>Wenn Sie keine Lust haben, dies jedesmal zu tippen,
	    sollten Sie diese Variablen als Umgebungsvariablen setzen.
	    Lesen Sie die Manual-Seite Ihrer Shell, um zu erfahren, wie man
	    das anstellt.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Ich habe keine FreeBSD CDROM, w&uuml;rde aber gerne die 
	    Tarballs auf meinem Rechner liegen haben, damit ich nicht
	    jedesmal auf das Herunterladen warten mu&szlig;, wenn ich mal einen
	    Port installieren will.  Gibt es einen Weg, alle auf einmal
	    zu holen?</para>
	  </question>

	  <answer>
	  <para>Um jeden einzelnen Tarball f&uuml;r die Ports-Sammlung zu
	    holen geben Sie ein:</para>

	  <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
&prompt.root; <userinput>make fetch</userinput></screen>

	  <para>F&uuml;r alle Tarballs eines Ports-Verzeichnis:</para>

	  <screen>&prompt.root; <userinput>cd /usr/ports/<replaceable>Verzeichnis</replaceable></userinput>
&prompt.root; <userinput>make fetch</userinput></screen>

	  <para>und f&uuml;r nur einen Port &mdash; gut, das haben Sie sicher
	    schon erraten.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Ich wei&szlig;, das es wohl schneller geht, wenn ich die
	    Tarballs von einem FreeBSD Mirror in der N&auml;he hole.  Kann
	    ich sagen, da&szlig; andere als in MASTER_SITES angegebene 
	    Server genommen werden sollen?</para>
	  </question>

	  <answer>
	  <para>Ja.  Zum Beispiel, wenn <hostid 
	    role="fqdn">ftp.FreeBSD.org</hostid> n&auml;her bei Ihnen
	    ist, als der in <makevar>MASTER_SITES</makevar> angegebene,
	    machen Sie das wie folgt:</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>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Ich w&uuml;rde gerne vorher wissen, welche Dateien 
	    <command>make</command> holen wird, bevor es das versucht.</para>
	  </question>

	  <answer>
	  <para><command>make fetch-list</command> gibt aus, welche Dateien
	    f&uuml;r den Port ben&ouml;tigt werden.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Gibt es einen Weg einen Port am Kompilieren zu hindern?  Ich
	    m&ouml;chte gerne vor der Installation etwas im Quellcode hacken.
            Es ist aber etwas nervig, immer aufzupassen und im richtigen 
            Moment mit
	    <keycombo action="simul">
	      <keycap>Ctrl</keycap>
	      <keycap>C</keycap>
	    </keycombo>
	    abzubrechen.</para>
	  </question>

	  <answer>
            <para>Die Eingabe von <command>make extract</command> erreicht,
	      da&szlig; der Port Quellcode nur geholt und entpackt wird.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Ich versuche einen eigenen Port zu erstellen und will,
	    da&szlig; der Port vor dem &Uuml;bersetzen anh&auml;lt, damit
	    ich eine Chance habe zu sehen, ob meine Patches sauber
	    funktionieren.  Gibt es etwas wie <command>make
	    extract</command> f&uuml;r Patches?</para>
	  </question>

	  <answer>
	  <para>Klar, <command>make patch</command> ist alles was Sie
	    w&uuml;nschen.  Sie werden wahrscheinlich die Variable
	    <makevar>PATCH_DEBUG</makevar> auch recht n&uuml;tzlich finden.
	    Ach ja, und vielen Dank f&uuml;r Ihre Bem&uuml;hungen!</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Stimmt es, da&szlig; einige Compiler Fehler machen?  Wie
	    kann ich sicher gehen, da&szlig; ich mit den richtigen
	    Einstellungen &uuml;bersetze?</para>
	  </question>

	  <answer>
	  <para>Ja, in der Version 2.6.3 des <command>gcc</command> (diese
	    Version ist bei FreeBSD 2.1.0 und 2.1.5 dabei) kann die Option
	    <option>-O2</option> fehlerhafte Ergebnisse liefern, sofern man
	    nicht auch die Option <option>-fno-strength-reduce</option>
	    benutzt.  (Die meisten Ports benutzen <option>-O2</option>
	    nicht).  Sie <emphasis>sollten</emphasis> die Compiler-Optionen
	    etwa wie folgt spezifizieren k&ouml;nnen:</para>

	  <screen>&prompt.root; <userinput>make CFLAGS='-O2 -fno-strength-reduce' install</userinput></screen>

	  <para>Die Compiler-Optionen k&ouml;nnen Sie auch in
	    <filename>/etc/make.conf</filename> angeben,
	    allerdings beachten das nicht alle Ports.  Der sicherste Weg ist,
	    nach einem <command>make configure</command> in das Verzeichnis
	    mit dem Quellcode zu gehen und dort die Makefiles von Hand zu
	    untersuchen.  Das kann aber sehr m&uuml;hselig werden, da es
	    oft sehr viele Unterverzeichnisse mit eigenen Makefiles geben
	    kann.</para>

	    <para>Die bei FreeBSD voreingestellten Compiler Optionen sind
	      recht konservativ, Sie sollten eigentlich keine Probleme
	      bekommen, wenn Sie diese nicht ver&auml;ndert haben.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Das sind aber ganz sch&ouml;n viele Ports und es ist nicht
	    leicht, den einen zu finden, den ich gerade m&ouml;chte.  Gibt es
	    eine Liste der erh&auml;ltlichen Ports?</para>
	  </question>

	  <answer>
	  <para>Schauen Sie in die Datei <filename>INDEX</filename> im
	    Verzeichnis <filename>/usr/ports</filename>.  Sie k&ouml;nnen
	    auch die Ports-Sammlung nach einem Stichwort durchsuchen.
	    Wollen Sie zum Beispiel alle Ports finden, die mit der
	    Programmiersprache LISP zu tun haben, geben Sie ein:</para>

	  <screen>&prompt.user; <userinput>cd /usr/ports</userinput>
&prompt.user; <userinput>make search key=lisp</userinput></screen>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Als ich den Port <literal>bla</literal> installieren
	    wollte, h&ouml;rt das System auf einmal mit dem Kompilieren auf
            und fing an, den Port <literal>s&uuml;lz</literal> zu
	    erstellen.  Was ist hier los?</para>
	  </question>

	  <answer>
	  <para>Der Port <literal>bla</literal> braucht etwas aus dem
	    Port <literal>s&uuml;lz</literal> &mdash; beispielsweise,
	    wenn <literal>bla</literal> Grafik benutzt, k&ouml;nnte der Port
	    <literal>s&uuml;lz</literal> eine Bibliothek mit
	    n&uuml;tzlichen grafischen Routinen enthalten.  Oder
	    <literal>s&uuml;lz</literal> k&ouml;nnte ein Werkzeug sein, das zum
	    &Uuml;bersetzen des Ports <literal>bla</literal> notwendig 
	    ist.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para id="ports-remove">  Ich habe aus der Ports-Sammlung die
	    Anwendung <literal>grizzle</literal> installiert und nun
	    festgestellt, da&szlig; es reine Verschwendung von Plattenplatz
	    ist.  Ich will ihn wieder l&ouml;schen, wei&szlig; aber nicht
	    wohin der Port seine Dateien installiert hat.  Tips?</para>
	  </question>

	  <answer>
	  <para>Alles kein Problem, tippen Sie einfach:</para>

	  <screen>&prompt.root; <userinput>pkg_delete grizzle-6.5</userinput></screen>

	  <para>Sie k&ouml;nnen alternativ auch eingeben:</para>

	  <screen>&prompt.root; <userinput>cd <replaceable>/usr/ports/somewhere/grizzle</replaceable></userinput>
&prompt.root; <userinput>make deinstall</userinput></screen>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Moment, man mu&szlig; die Versionsnummer wissen, um das
	    Kommando benutzen zu k&ouml;nnen.  Es wird aber nicht wirklich
	    erwartet, da&szlig; ich mich daran noch erinnere, oder?</para>
	  </question>

	  <answer>
	  <para>Nein, Sie finden diese Nummer durch folgende Eingabe heraus:</para>

	  <screen>&prompt.root; <userinput>pkg_info -a | grep 'grizzle*'</userinput>
Information for grizzle-6.5:
grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up
arcade game.</screen>

	  <para>Die Versionsnummer finden Sie auch mit
	    <command>pkg_info</command> heraus, oder indem Sie
	    <command>ls /var/db/pkg</command> eingeben.</para>

	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Apropos Plattenplatz, die Ports-Sammlung scheint recht viel
	    Platz einzunehmen.  Ist es gef&auml;hrlich darin
	    Sachen zu l&ouml;schen?</para>
	  </question>

	  <answer>
	  <para>Nun, wenn Sie Anwendungen installiert haben und sicher sind, 
	    da&szlig; Sie den Quellcode nicht ben&ouml;tigen, gibt es 
	    keinen Grund diesen herumliegen zu haben.  Der sicherste Weg
	    aufzur&auml;umen ist:</para>

	  <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
&prompt.root; <userinput>make clean</userinput></screen>

	  <para>Das geht durch alle Ports-Verzeichnisse und l&ouml;scht
	    f&uuml;r jeden Port alles bis auf das Ger&uuml;st.</para>

	  <tip><para>Dasselbe k&ouml;nnen Sie auch erreichen, ohne
	    rekursiv jedes <filename>Makefile</filename> aufzurufen.  Die
	    <filename>work/</filename> Verzeichnisse k&ouml;nnen Sie auch
	    mit dem folgenden Kommando l&ouml;schen:
	    <screen>&prompt.root; <userinput>find /usr/ports -depth -name work -exec rm -rf {} \;</userinput></screen></para>
	  </tip>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Das habe ich probiert, aber da liegen immer noch diese
	    Tarballs (oder wie die genannt werden) im Verzeichnis
	    <filename>distfiles</filename> herum.  Darf ich die auch
	    l&ouml;schen?</para>
	  </question>

	  <answer>
	  <para>Ja, wenn Sie mit denen fertig sind, k&ouml;nnen die auch
	     verschwinden.  Man kann sie von Hand l&ouml;schen oder das
	     Kommando <command>make distclean</command> benutzen.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Ich finde es toll, tierisch viele Anwendungen zu haben und
	    damit rumzuspielen.  Gibt es einen Weg alle Ports auf einmal
	    zu installieren?</para>
	  </question>

	  <answer>
	  <para>Machen Sie einfach:</para>

	  <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
&prompt.root; <userinput>make install</userinput></screen>

	    <para>Vorsicht: Einige Ports k&ouml;nnten Dateien mit dem
	      gleichen Namen installieren.  Wenn man zwei grafische Ports
	      installiert und beide eine Datei
	      <filename>/usr/local/bin/plot</filename> anlegen, haben Sie
	      ein Problem.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Okay, das habe ich gemacht und da ich dachte, da&szlig; das
	    sicherlich ziemlich lange dauert, ging ich zu Bett.  Als ich heute
	    morgen zum Computer kam, waren erst dreieinhalb Ports
	    installiert.  Hat da etwas nicht geklappt?</para>
	  </question>

	  <answer>
	  <para>Nein, das Problem ist, da&szlig; es Ports gibt, die Ihnen
	    Fragen stellen, auf die wir die Antworten nicht f&uuml;r Sie
	    geben konnten (z.B. <quote>Drucken Sie auf Papier im A4 oder US 
	    Letter Format?</quote>).  In solchen F&auml;llen mu&szlig;
	    jemand da sein und die Fragen beantworten.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Ich m&ouml;chte aber nicht wirklich einen ganzen Tag damit
	    verbringen, auf den Monitor zu starren.  Irgendeine bessere
	    Idee?</para>
	  </question>

	  <answer>
	  <para>Klar, bevor Sie ins Bett/zur Arbeit/in den Park gehen,
	    geben Sie ein:</para>

	  <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
&prompt.root; <userinput>make -DBATCH install</userinput></screen>

	  <para>Das installiert Ihnen alle Ports, die
	    <emphasis>keine</emphasis> Eingaben des Benutzers erfordern.
	    Die restlichen Ports installieren Sie, wenn Sie zur&uuml;ck
	    sind, mit dem Kommando:</para>

	  <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
&prompt.root; <userinput>make -DINTERACTIVE install</userinput></screen>

	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Auf der Arbeit benutzen wir die Anwendung 
	    <literal>frobble</literal>, die in der Ports-Sammlung ist.  Wir
	    haben sie aber etwas auf unsere Bed&uuml;rfnisse angepa&szlig;t.
	    K&ouml;nnen wir irgendwie eigene Pakete erstellen, so
	    da&szlig; wir die Anwendung auf unseren Rechnern leichter 
	    verteilen k&ouml;nnen?</para>
	  </question>

	  <answer>
	  <para>Kein Problem.  Angenommen Sie wissen, wie Sie f&uuml;r Ihre
	    Anpassungen Patches erzeugen:</para>

	  <screen>&prompt.root; <userinput>cd <replaceable>/usr/ports/somewhere/frobble</replaceable></userinput>
&prompt.root; <userinput>make extract</userinput>
&prompt.root; <userinput>cd work/frobble-2.8</userinput>
[Ihre patche einspielen]
&prompt.root; <userinput>cd ../..</userinput>
&prompt.root; <userinput>make package</userinput></screen>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Diese Geschichte mit den Ports ist wirklich clever.  Ich
	    habe keine Ahnung, wie ihr das hinbekommen habt.  Was ist das
            Geheimnis dahinter?</para>
	  </question>

	  <answer>
	  <para>Keine Geheimnisse.  Sehen Sie einfach in die Dateien
	    <filename>bsd.port.mk</filename> und
	    <filename>bsd.port.subdir.mk</filename> im Verzeichnis
	    <filename>/usr/ports/Mk/</filename>.</para>

	  <para>Lesern mit einer Aversion gegen komplizierte Shell-Skripte
	    wird geraten, dieses Verzeichnis nicht zu besuchen.</para>
	  </answer>
	</qandaentry>
      </qandaset>
    </sect2>

    <sect2 id="ports-broken">
      <title>Hilfe!  Dieser Port ist kaputt!</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="../porters-handbook/index.html">Handbuch der
	      Portierer</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 &mdash;<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 Sie auch das
	    <command>send-pr</command> Kommando benutzen, um einen
	    Fehler-Report einzusenden.</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 Mirror 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, da&szlig; es schneller geht.</para>
	</listitem>
      </orderedlist>
    </sect2>
  </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:
-->

