<!--
     The FreeBSD Documentation Project

     $FreeBSD$
     $FreeBSDes: doc/es_ES.ISO8859-1/books/handbook/ports/chapter.sgml,v 1.2 2004/10/08 21:26:03 jesusr Exp $
-->

<chapter id="ports">
  <title>Instalaci&oacute;n de Aplicaciones: Paquetes y Ports</title>

  <sect1 id="ports-synopsis">
    <title>Sin&oacute;psis</title>

    <indexterm><primary>ports</primary></indexterm>
    <indexterm><primary>paquetes</primary></indexterm>
    <para>FreeBSD esta colmado de una excelente colecci&oacute;n de herramientas
      de sistema, como parte del sistema base.  A pesar de esto, existe gran 
      cantidad de cosas que uno requiere hacer para poner las cosas realmente en
      marcha, para lo cual se necesita instalar software adicional de terceros.  
      FreeBSD ofrece dos tecnolog&iacute;as complementarias para instalar 
      software de terceros en nuestro sistema: la Colecci&oacute;n de Ports de
      FreeBSD y Paquetes binarios.  Cualquiera de los dos sistemas puede ser
      usado para instalar las versiones m&aacute;s recientes, de forma local o
      directamente desde la red.</para>

    <para>Despu&eacute;s de leer este cap&iacute;tulo, usted sabr&aacute;:</para>

    <itemizedlist>
      <listitem>
	<para>Como instalar paquetes binarios de software de terceros.</para>
      </listitem>
      <listitem>
	<para>Como compilar software de terceros desde la Colecci&oacute;n de
	  Ports.</para>
      </listitem>
      <listitem>
	<para>Como eliminar paquetes o ports instalados previamente.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="ports-overview">
    <title>Aproximaci&oacute;n a la Instalaci&oacute;n de Software</title>

    <para>Si usted ha usado un sistema &unix; con anterioridad, sabr&aacute; que el
      procedimiento t&iacute;pico para instalar software de terceros es algo
      similar a esto:</para>

    <procedure>
      <step>
	<para>Descargar el software, que puede distribuirse en formato de 
	  c&oacute;digo fuente, o binario.</para>
      </step>

      <step>
	<para>Desempacar el software de su formato de distribuci&oacute;n 
	  (normalmente en un tarball comprimido ya sea con &man.compress.1;, &man.gzip.1;  
	  o &man.bzip2.1;).</para>
      </step>

      <step>
	<para>Ver la documentaci&oacute;n (quiz&aacute;s un fichero <filename>INSTALL</filename> o 
	  <filename>README</filename>, o los ficheros del subdirectorio 
	  <filename>doc/</filename>) para ver como instalar el software.</para>
      </step>

      <step>
	<para>Si el software es distribuido como fuente, compilarlo.  Esto puede
	  requerir que editemos el fichero <filename>Makefile</filename> o que
	  ejecutemos el script <command>configure</command>, entre otras.</para>
      </step>

      <step>
	<para>Instalar y probar el software.</para>
      </step>
    </procedure>

    <para>Y esto solamente si todo marcha bien.  Si usted esta instalando un 
      software que no ha sido creado espec&iacute;ficamente para FreeBSD, puede
      que sea necesario editar el c&oacute;digo para que trabaje correctamente.
      </para>

    <para>Si usted lo desea, puede continuar instalando software de la forma
      <quote>tradicional</quote> bajo FreeBSD.  Aunque FreeBSD le provee de
      dos tecnolog&iacute;s que le pueden ahorrar gran cantidad de tiempo y
      esfuerzo: los paquetes y ports.  Al momento de escribir esto, existen
      m&aacute;s de &os.numports; aplicaciones de terceros, que estan disponibles
      de esta manera.</para>

    <para>Los paquetes de FreeBSD, para cualquier aplicaci&oacute;n, son un 
      simple fichero que debe descargar.  Los paquetes contienen copia de 
      binarios pre-compilados de la aplicaci&oacute;n, as&iacute; como cualquier
      fichero de configuraci&oacute;n necesario o documentaci&oacute;n.  Los
      paquetes descargados, pueden ser manipulados con los comandos de manejo de
      paquetes de FreeBSD, tales como: &man.pkg.add.1;, &man.pkg.delete.1;, 
      &man.pkg.info.1;, etc. El instalar una aplicaci&oacute;n nueva puede
      realizarse con un simple comando.</para>

    <para>Por otro lado un Port de FreeBSD, es una colecci&oacute;n de ficheros
      dise&ntilde;ados para automatizar el proceso de compilaci&oacute;n del
      software, desde el c&oacute;digo fuente.</para>

    <para>Recuerde que existen ciertos pasos que deber&aacute; llevar a cabo 
      para efecto de compilar un programa por usted mismo (desempacar, parchar,
      compilar e instalar).  Los ficheros que conforman un port, permiten 
      automatizar esto por usted.  Usted ejecuta un conjunto de comandos simples
      y el c&oacute;digo fuente es descargado, desempacado, parchado, compilado 
      e instalado.</para>

    <para>De hecho, el sistema de ports tambi&eacute;n se puede usar para crear
      paquetes que posteriormente manipule con <command>pkg_add</command> y las
      otras utilidades del manejo de paquetes que veremos en breve.</para>

    <para>Tanto el sistema de ports como el de paquetes entienden las 
      <emphasis>dependencias</emphasis>.  Suponga que desea instalar una 
      aplicaci&oacute;n que depende de que una librer&iacute;a 
      espec&iacute;fica este instalada.  Tanto la librer&iacute;a como la
      aplicaci&oacute;n existen en FreeBSD como paquete o port.  Si utiliza
      el comando <command>pkg_add</command> o el sistema de ports para instalar
      la aplicaci&oacute;n, ambos notaran que la librer&iacute;a no esta
      instalada, y proceder&aacute;n a instalar la librer&iacute;a en primer
      t&eacute;rmino.</para>

    <para>Dado que ambas tecnolog&iacute;s son similares, quiz&aacute;s se 
      pregunte por que FreeBSD se toma la molest&iacute;a de contar con ambas.  
      Los Paquetes y los Ports cuentan con sus propias fortalezas, y cual
      utlizar depender&aacute; de sus preferencias.</para>

    <itemizedlist>
      <title>Beneficios de los Paquetes</title>
      
      <listitem>
	<para>El t&iacute;pico fichero tarball de un paquete, es normalmente 
	  m&aacute;s peque&ntilde;o que el tarball comprimido que cuenta con el
	  c&oacute;digo fuente del software.</para>
      </listitem>

      <listitem>
	<para>Los paquetes <emphasis>no</emphasis> requiere de compilaci&oacute;n
	  adicional.  Este punto puede ser de gran importancia, principalmente en
	  equipos lentos, cuando compila grandes aplicaciones tales como 
	  <application>Mozilla</application>, <application>KDE</application>, o 
	  <application>GNOME</application>.</para>
      </listitem>

      <listitem>
	<para>Los paquetes no requieren que usted comprenda el proceso que envuelve
	  el compilar software bajo FreeBSD.</para>
      </listitem>
    </itemizedlist>

    <itemizedlist>
      <title>Beneficios del Sistema de Ports</title>
      
      <listitem>
	<para>Normalmente los paquetes son compilados con opciones conservadoras,
	  en virtud del gran numero de equipos donde ser&aacute;n instalados.  Al
	  instalar desde el port, usted puede editar las preferencias para (por
	  ejemplo) ejecutarse bajo un procesador Pentium IV o Athlon.</para>
      </listitem>

      <listitem>
	<para>Algunas aplicaciones opciones relacionadas con lo que pueden y lo 
	  que no pueden hacer.  Por ejemplo <application>Apache</application> puede
	  ser configurado con una gran variedad de opciones.  Al compilarlo desde los
	  ports usted no tiene por que aceptar todas, puede seleccionar cuales 
	  opciones desea.</para>

	<para>En algunos casos, existen varios paquetes para la misma 
	  aplicaci&oacute;n con diferentes opciones.  Por ejemplo,
	  <application>Ghostscript</application> esta disponible como paquete
	  <filename>ghostscript</filename> o bien como paquete 
	  <filename>ghostscript-nox11</filename>, dependiendo si usted cuenta o
	  no con el servidor X11.  En este caso decidir puede ser sencillo, pero esto
	  se puede volver un problema si cuenta con m&aacute;s de una o dos opciones
	  al momento de la compilaci&oacute;n.</para>
      </listitem>

      <listitem>
	<para>Las condiciones de licenciamiento de algunas aplicaciones, prohiben la
	  distribuci&oacute;n de binarios.  Solo permiten la distribuci&oacute;n del
	  c&oacute;digo fuente.</para>
      </listitem>

      <listitem>
	<para>Existe gente que no confia en los binarios.  Al menos con el 
	  c&oacute;digo fuente, usted puede (en teor&iacute;a) revisarlo y
	  localizar problemas potenciales.</para>
      </listitem>

      <listitem>
	<para>Si cuenta con parches locales, necesitar&aacute; el c&oacute;digo 
	  fuente para poder aplicarlos.</para>
      </listitem>

      <listitem>
	<para>Existe gente que le gusta contar con el c&oacute;digo fuente, para
	  poder leerlo en ratos de ocio, modificarlo, tomar partes prestadas (si la
	  licencia lo permite, claro esta), y tal.</para>
      </listitem>
    </itemizedlist>

    <para>Para poder estar actualizado en sus ports, suscribase a
      &a.ports;.</para>

    <para>El resto de este cap&iacute;tulo le explicar&aacute; como usar los 
      ports y paquetes para instalar software de terceros en FreeBSD.</para>
  </sect1>

  <sect1 id="ports-finding-applications">
    <title>Localizando su Aplicaci&oacute;n</title>

    <para>Antes de poder instalar cualquier software, usted debe saber que desea
      instalar y como se llama dicha aplicaci&oacute;n.</para>

    <para>La lista de software disponible para FreeBSD crece constantemente.  
      Afortunadamente existen varias formas de localizar lo que busca:</para>

    <itemizedlist>
      <listitem>
	<para>El sitio web de FreeBSD mantiene una base actualizada de todas las 
	  aplicaciones disponibles para FreeBSD, en la direcci&oacute;n 
	  <ulink url="../../../../ports/index.html">http://www.FreeBSD.org/ports/
	  </ulink>.  Esta base esta segmentadas por categor&iacute;as, y usted puede
	  buscar por nombre (si lo sabe) o bien listas las aplicaciones disponibles
	  en cierta categor&iacute;a.</para>
      </listitem>

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

      <listitem>
	<para>Dan Langille mantiene FreshPorts, en
	  <ulink url="http://www.FreshPorts.org/">http://www.FreshPorts.org/</ulink>.
	  FreshPorts verifica los cambios en las aplicaciones del &aacute;rbol de
	  ports, y le permite <quote>observar</quote> uno o m&aacute;s ports, y le
	  enviar&aacute; un correo cada vez que se actualicen.</para>
      </listitem>

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

      <listitem>
	<para>Si no conoce el nombre de la aplicaci&oacute;n que desea, pruebe usar
	  un sitio como FreshMeat (<ulink  
	  url="http://www.freshmeat.net/">http://www.freshmeat.net/</ulink>) para
	  encontrar una aplicaci&oacute;n, posteriormente verifique en el sitio de
	  FreeBSD, para ver si la aplicaci&oacute;n ha sido portada a FreeBSD.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="packages-using">
    <sect1info>    
      <authorgroup>
        <author>
          <firstname>Chern</firstname>
	  <surname>Lee</surname>
	  <contrib>Contribuido por</contrib>
        </author>
      </authorgroup>
    <!-- 30 Mar 2001 -->
    </sect1info>

    <title>Usando el Sistema de Paquetes</title>

    <sect2>
      <title>Instalando un Paquete</title>
      <indexterm>
        <primary>paquetes</primary>
        <secondary>instalando</secondary>
      </indexterm>
    
      <indexterm>
        <primary><command>pkg_add</command></primary>
      </indexterm>
      <para>Puede usar la utilidad &man.pkg.add.1; para instalar software de un
    paquete bajo FreeBSD, desde un fichero local o desde un servidor remoto que
    esta en red.</para>

      <example>
        <title>Descarga de un Paquete e Instalaci&oacute;n en nuestro sistema</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>Si usted no cuenta con una fuente local de paquetes (como pudiese ser
        un CDROM de FreeBSD), pudiese ser que su mejor alternativa sea usar
        &man.pkg.add.1;.  Esto provocar&aacute; que la utilidad determine
        autom&aacute;ticamente el formato del objeto correcto, para que 
        posteriormente lo descargue y lo instale desde un sitio FTP.</para>

      <indexterm>
        <primary><command>pkg_add</command></primary></indexterm>
      <screen>&prompt.root; <userinput>pkg_add -r <replaceable>lsof</replaceable></userinput></screen>

      <para>En el ejemplo anterior, el paquete correspondiente ser&aacute; 
        descargado e instalado sin mayor intervenci&oacute;n del usuario.  
        &man.pkg.add.1; utiliza &man.fetch.1; para descargar los ficheros, 
        que toma como referencia varias variables de entorno, que incluyen 
        <envar>FTP_PASSIVE_MODE</envar>, <envar>FTP_PROXY</envar> y 
        <envar>FTP_PASSWORD</envar>.  Quiz&aacute;s deba modificar alguna de
        estas, si se encuentra detr&aacute;s de un firewall, o bien usar un 
        proxy FTP/HTTP.  Vea la p&aacute;gina de ayuda &man.fetch.3; para una
        lista completa.  Tambi&eacute;n puede notar que en el ejemplo anterior
        usamos <literal>lsof</literal> en vez de <literal>lsof-4.56.4</literal>. 
        Cuando hacemos uso de <quote>fetch</quote> de forma remota, la 
        versi&oacute;n del paquete debe ser removida.  El programa 
        &man.pkg.add.1; obtendr&aacute; autom&aacute;ticamente la versi&oacute;n
        m&aacute;s reciente.</para>

      <para>Los paquetes son distribuidos en formato <filename>.tgz</filename>  
        y <filename>.tbz</filename>. Puede encontrarlos en <ulink
        url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/">
        ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/</ulink>, o bien, en el
        CDROM de FreeBSD.  Cada CD de la distribuci&oacute;n de 4 CDs (y del 
        PowerPak, etc) contiene los paquetes en el directorio 
        <filename>/packages</filename>.  El orden de dicho directorio, es similar
        al &aacute;rbol de <filename>/usr/ports</filename>.  Cada 
        categor&iacute;a cuenta con su subdirectorio, y todos los paquetes estan
        disponibles en el directorio <filename>All</filename>.</para>

      <para>La estructura del directorio de paquetes es identica a la de ports; 
        estos trabajan en conjunto para formar el sistema de paquetes/ports.
        </para>

    </sect2>

    <sect2>
      <title>Eliminando un Paquete</title>
      <indexterm>
        <primary><command>pkg_delete</command></primary>
      </indexterm>
      <indexterm>
        <primary>paquetes</primary>
        <secondary>eliminando</secondary>
      </indexterm>
      <para>Para eliminar un paquete previemante instalado, utilice la utilidad
	    &man.pkg.delete.1;.</para>

      <screen>&prompt.root; <userinput>pkg_delete <replaceable>xchat-1.7.1</replaceable></userinput></screen>
    </sect2>

    <sect2>
      <title>Manejo de Paquetes</title>

      <indexterm>
        <primary>paquetes</primary>
        <secondary>manejo</secondary>
      </indexterm>
      <para>&man.pkg.info.1; es una utilidad que muestra y describe
        todos los paquetes que tenemos instalados.</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; es una utilidad que resume las versiones de los 
        paquetes instalados.  Estas son comparadas con las versiones actuales del
        &aacute;rbol de ports.</para>
      <indexterm>
        <primary><command>pkg_version</command></primary>
      </indexterm>
        <screen>&prompt.root; <userinput>pkg_version</userinput>
cvsup                       =
docbook                     =
...</screen>

      <para>Los s&iacute;mbolos de la segunda columna, nos indican la edad 
        relativa de la versi&oacute;n instalada, comparada con la versi&oacute;n
        disponible en el &aacute;rbol local de ports.</para>

      <informaltable frame="none">
        <tgroup cols="2">
	  <thead>
            <row>
              <entry>S&iacute;mbolo</entry>
              <entry>Significado</entry>
            </row>
          </thead>

 	  <tbody>
  	    <row>
	    <entry>=</entry> <entry>La versi&oacute;n del paquete instalado es igual
	    a la versi&oacute;n del &aacute;rbol local de ports.</entry>
  	    </row>
 
        <row><entry>&lt;</entry>
	    <entry>La versi&oacute;n instalada es m&aacute;s antigua a la 
	    versi&oacute;n del &aacute;rbol local de ports.</entry>
	</row>

        <row><entry>&gt;</entry><entry>La versi&oacute;n instalada es m&aacute;s
          reciente que la que se encuentra en el &aacute;rbol local de ports 
          (probablemente el &aacute;rbol de ports esta desactualizado).</entry>
          </row>

        <row><entry>?</entry><entry>El paquete instalado no se ha localizado en
          el &iacute;ndice (index) de los ports.</entry></row>

        <row><entry>*</entry><entry>Existen multiples versiones del paquete.
        </entry></row>

	</tbody>
	</tgroup>
    </informaltable>
    </sect2>

    <sect2>
      <title>Miscelaneos</title>
      <para>Toda la informaci&oacute;n relacionada con los paquetes, se guarda en
        el directorio <filename>/var/db/pkg</filename>.  Los paquetes instalados, 
        as&iacute; como una descripci&oacute;n de los mismos, puede encontrarse
        en este subdirectorio.</para>
    </sect2>
  </sect1>
  
  <sect1 id="ports-using">
    <title>Usando la Colecci&oacute;n de Ports</title>

    <para>La siguiente secci&oacute;n le provee de las instrucciones 
      b&aacute;sicas para instalar o eliminar programas de su sistema, usando la
      Colecci&oacute;n de Ports.</para>

    <sect2 id="ports-tree">
      <title>Obteniendo la Colecci&oacute;n de Ports</title>

      <para>Antes de poder instalar ports, primero debe de hacerse de la
        Colecci&oacute;n de Ports&mdash; que escencialmente esta compuesta de
        ficheros <filename>Makefiles</filename>, parches y ficheros con la
        descripci&oacute;n de los ports, ubicados en 
        <filename>/usr/ports</filename>.</para>

      <para>Cuando instal&oacute; su sistema FreeBSD, el programa
	    <application>Sysinstall</application> le pregunto si deseaba instalar
	    la Colecci&oacute;n de Ports.  Si contesto que no, puede seguir estas
	    instrucciones para obtener dicha colecci&oacute;n:</para>

      <procedure>
	<title>Metodo por Sysinstall</title>

	<para>Este metodo implica el uso del programa
	  <application>sysinstall</application> nuevamente, para instalar
	  Colecci&oacute;n de Ports.</para>

	<step>
	  <para>Siendo usuario <username>root</username>, ejecute el programa
	    <command>/stand/sysinstall</command> como se muestra:</para>

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

	<step>
	  <para>Posicionese en la opci&oacute;n <guimenuitem>Configure</guimenuitem>,
	    y presione <keycap>Enter</keycap>.</para>
	</step>

	<step>
	  <para>Seleccione la opci&oacute;n <guimenuitem>Distributions</guimenuitem>,
	  y presione <keycap>Enter</keycap>.</para>
	</step>

	<step>
	  <para>Seleccione la opci&oacute;n <guimenuitem>ports</guimenuitem>, y
	    presione la <keycap>Barra Espaciadora</keycap>.</para>
	</step>

	<step>
	  <para>Dirijase a la opci&oacute;n <guimenuitem>Exit</guimenuitem>, y
	    presione <keycap>Enter</keycap>.</para>
	</step>

	<step>
	  <para>Seleccione el medio de instalaci&oacute;n deseado, tal como CDROM, 
	    FTP y tal.</para>
	</step>

	<step>
	  <para>Siga los menus para salir de <application>sysinstall</application>.
	    </para>
	</step>
      </procedure>

      <para>El metodo alternativo para obtener y mantener actualizada la
        Colecci&oacute;n de Ports, es usando <application>CVSup</application>.  
        Lea el fichero de ports para <application>CVSup</application>, en
	    <filename>/usr/share/examples/cvsup/ports-supfile</filename>.  
	    Vea el cap&iacute;tulo Usando CVSup
	  para ver m&aacute;s informaci&oacute;n en el uso de 
	  <application>CVSup</application> y del fichero mencionado.</para>

      <procedure>
	<title>Metodo por CVSup</title>

	<para>Este es un metodo r&aacute;pido de obtener la Colecci&oacute;n de Ports
	  usando <application>CVSup</application>.  Si desea mantener su &aacute;rbol
	  de ports actualizado, o bien, aprender m&aacute;s acerca de 
	  <application>CVSup</application>, lea los documentos comentados 
	  anteriormente.</para>

	<step>
	  <para>Instale el port <filename role="package">net/cvsup</filename>.  
	    Vea Instalaci&oacute;n de CVSup para m&aacute;detalles.</para>
	</step>

	<step>
	  <para>Como usuario <username>root</username>, copie el fichero 
	    <filename>/usr/share/examples/cvsup/ports-supfile</filename>
	    a una nueva ubicaci&oacute;n, como puede ser el directorio 
	    <filename>/root</filename> o bien su propio directorio home.</para>
	</step>

	<step>
	  <para>Edite el fichero <filename>ports-supfile</filename>.</para>
	</step>

	<step>
	  <para>Cambie <replaceable>CHANGE_THIS.FreeBSD.org</replaceable> a un
	    servidor <application>CVSup</application> cercano.  Vea
	      Mirrors de CVSup para ver una lista completa de los servidores
	      CVSup.</para>
	</step>

	<step>
	  <para>Ejecute <command>cvsup</command>:</para>

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

	<step>
	  <para>Al ejecutar esto posteriormente, se descargaran las actualizaciones
	    de la Colecci&oacute;n de Ports.</para>
	</step>
      </procedure>
    </sect2>

    <sect2 id="ports-skeleton">
      <title>Instalando Ports</title>

      <indexterm>
        <primary>ports</primary>
        <secondary>instalando</secondary>
      </indexterm>
      <para>Al hablar de la Colecci&oacute;n de Ports, lo primero que debemos 
        comentar es; a que nos referimos cuando hablamos de un 
        <quote>esqueleto</quote> (skeleton).  En s&iacute; mismo, un esqueleto de
        port, es una serie m&iacute;nima de ficheros, que le indican a FreeBSD
        como compilar e instalar un programa.  Cada esqueleto incluye:</para>

      <itemizedlist>
	<listitem>
	  <para>Un fichero <filename>Makefile</filename>.  Este fichero contiene 
	    varias sentencias, que le indican al sistema como compilarlo y donde
	    deber&aacute; instalarlo en su sistema.</para>
	</listitem>

	<listitem>
	  <para>Un fichero <filename>distinfo</filename>.  Este fichero contiene 
	    informaci&oacute;n de los ficheros que debe ser descargados para efecto
	    de compilar el programa, as&iacute; como el identificador checksum, para
	    asegurarse se han descargado correctamente, sin corrupciones
	    usando &man.md5.1;.</para>
	</listitem>
	
	<listitem>
	  <para>Un directorio <filename>files</filename>.  Este directorio contiene 
	    los parches necesarios para compilar e instalar en su sistema FreeBSD.  
	    B&aacute;sicamente, los parches son peque&ntilde;os ficheros, que
	    incluyen algunos cambios.  Estos son en formato de texto plano, y 
	    b&aacute;sicamente dicen cosas como <quote>Remove line 10</quote> 
	    (Remover la l&iacute;nea 10) o <quote>Change line 26 to this...</quote> 
	    (Cambiar la l&iacute;nea 26 por esto...).  Los parches tambi&eacute;n son
	    conocidos como <quote>diffs</quote>, ya que son generados por el 
	    programa del mismo nombre; &man.diff.1;.</para>

	  <para>Es posible que este directorio tambi&eacute; contenga algun otro
	    fichero necesario para compilar e instalar el port.</para>
	</listitem>

	<listitem>
	  <para>Un fichero <filename>pkg-comment</filename>.  Este es una descripcion
	    del programa en una sola l&iacute;nea.</para>
	</listitem>

	<listitem>
	  <para>Un fichero <filename>pkg-descr</filename>.  Esta es una descripcion
	    m&aacute;s detallada del programa.  En ocasiones multi-l&iacute;nea.
	    </para>
	</listitem>
	
	<listitem>
	  <para>Un fichero <filename>pkg-plist</filename>.  Esta es una lista de 
	    todos los ficheros que ser&aacute;n instalados por el port.  
	    Tambi&eacute;n le indica al sistema de ports qu&eacute; ficheros eliminar en
	    caso de una desinstalaci&oacute;n.</para>
	</listitem>
      </itemizedlist>

      <para>Algunos ports cuentan con otros ficheros, tal como 
        <filename>pkg-message</filename>.  El sistema de ports usa estos, para
        manejar situaciones especiales.  Si desea saber m&aacute;s detalles al
        respecto, o bien de ports en general, vea el libro <ulink  
        url="../porters-handbook/index.html">FreeBSD Porter's
        Handbook</ulink>.</para>

      <para>Ahora que tiene suficientes antecedentes sobre que hacer con la
        Colecci&oacute;n de Ports, esta listo para instalar su primer port.  
        Existen dos formas de lllevar esto a cabo, y cada una de ellas se 
        explican a continuaci&oacute;n.</para>

      <para>Pero, antes de que podamos proceder con la instalaci&oacute;n, usted
        necesita seleccionar un port para instalar.  Existen varias formas de 
        hacer esto, siendo el metodo m&aacute;s sencillo los <ulink  
	    url="../../../../ports/index.html">ports listados en el sitio web de 
	    FreeBSD</ulink>.  Puede navegar entre los ports listados ah&iacute; o 
	    bien, usar la funci&oacute;n de buscar en el sitio.  Cada port incluye
	    una descripci&oacute;n, para que pueda leer un poco acerca de cada port
	    antes de decidirse a instalarlo.</para>

      <para>Otro metodo es por medio del comando &man.whereis.1;.  Simplemente
        teclee <command>whereis <replaceable>fichero</replaceable></command>, 
	    donde <replaceable>fichero</replaceable> es el programa que desea 
	    instalar.  Si se encuentra en su sistema, se le indicara donde se 
	    localiza, tal como:</para>

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

      <para>Esto nos indica que <command>lsof</command> (una utilidad de sistema)
        puede encontrarse en <filename>/usr/ports/sysutils/lsof</filename>.</para>

      <para>Incluso otra forma de encontrar un port en particular, es usando el
        mecanismo de b&uacute;squeda incluido en el sistema de ports.  Para 
        efecto de usar esta habilidad, debe estar situado en el directorio
	    <filename>/usr/ports</filename>.  Una vez que este ah&iacute;, ejecute 
	    <command>make search name=<replaceable>nombre-del-programa</replaceable>
	    </command> donde <replaceable>nombre-del-programa</replaceable> es el 
	    nombre del programa que desea encontrar.  Por ejemplo, si busca
	    <command>lsof</command>:</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>De esta informaci&oacute;n, la parte que debe prestar atenci&oacute;n
        es la que se refiere a la ruta, esto es; la l&iacute;nea 
        <quote>Path:</quote>, en virtud de que esta le indica la ubicaci&oacute;n
        del programa.  El resto de la informaci&oacute;n no es necesaria para la
        instalaci&oacute;n, por lo que no se ver&aacute; aqui.</para>

      <para>Para una b&uacute;squeda m&aacute;s profunda, puede usar el comando 
       <command>make search key=<replaceable>cadena</replaceable></command> donde 
       <replaceable>cadena</replaceable> es algun texto a buscar.  Esto busca 
       nombres de ports, descripciones y dependencia y puede usarse para buscar
       ports que se relacionan a un determinado texto, si no sabe el nombre del
       port que esta buscando.</para>

      <para>En ambos casos, la b&uacute;squeda es indistinto el uso de 
        may&uacute;sculas o minusculas.  El buscar <quote>LSOF</quote> y
        <quote>lsof</quote> arrojaran los mismos resultados.</para>

      <note>
        <para>Usted debe ser usuario <username>root</username> , para instalar
          ports.</para>
      </note>

      <para>Ahora que hemos encontrado un port que deseamos instalar, estamos
        listos para llevar a cabo la instalaci&oacute;n.  El port incluye las
        instrucciones necesarias para compilar el c&oacute;digo fuente, pero
        no contiene el c&oacute;digo.  Puede obtener el c&oacute;digo de un CDROM
        o desde Internet.  El c&oacute;digo fuente es distribuido de cualquier
        manera que el autor del software lo desee.  Frecuentemente esto es en
        un fichero <filename>tar.gz</filename>, pero puede estar comprimido con
        algun otro programa o de hecho sin estar comprimido.  De cualquier forma
        que se presente, el c&oacute;digo fuente del programa, le llamamos
        <quote>distfile</quote>.  Puede obtener los <quote>distfiles</quote> 
        desde Internet o bien desde un CDROM.</para>

      <sect3 id="ports-cd">
        <title>Instalando Ports desde un CDROM</title>

        <indexterm>
          <primary>ports</primary>
          <secondary>instalando desde CDROM</secondary>
        </indexterm>
        <para>Los CDROMs oficiales del Proyecto de FreeBSD, ya no incluyen 
          distfiles.  Estos ocupan gran espacio, que en su lugar se ha usado para
          incluir paquetes precompilados.  CDROMs como el PowerPak de FreeBSD, si
          inlcuyen distfiles, y puede ordenar estos de distribuidores como
	      <ulink url="http://www.freebsdmall.com/">FreeBSD Mall</ulink>.  Esta
	      secci&oacute;n asume que usted cuenta con un juego de CDROMs de 
	      FreeBSD.</para>

        <para>Coloque su CDROM en la unidad correspondiente.  Montelo en
	      <filename>/cdrom</filename>.  (Si utiliza un punto de montaje diferente
	      la instalaci&oacute;n no ser&aacute; exitosa).  Para comenzar dirijase
	      al directorio donde se localiza el port que desea instalar:</para>

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

        <para>Una vez que este en el directorio <filename>lsof</filename>, 
          ver&aacute; el esqueleto del port.  El pr&oacute;ximo paso es la
          compilaci&oacute;n del port.  Esto lo hacemos, simplemente tecleando
	      <command>make</command> en la l&iacute;nea de comandos.  Una vez que 
	      ha hecho esto, ver&aacute; algo similar a lo siguiente:</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
...
[extraction output snipped]
...
&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 output snipped]
...
===&gt;  Building for lsof-4.57
...
[compilation output snipped]
...
&prompt.root;</screen>

        <para>Note que una vez que ha terminado la compilaci&oacute;n, 
          regresara a la l&iacute;nea de comandos.  El siguiente paso es instalar
          el port.  Para efecto de instalarlo, simplemente debemos a&ntilde;adir
          una palabra al comando <command>make</command>, y esa palabra es
	      <command>install</command>:</para>

        <screen>&prompt.root; <userinput>make install</userinput>
===&gt;  Installing for lsof-4.57
...
[installation output snipped]
...
===&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>Una vez que regrese a la l&iacute;nea de comandos, le ser&aacute;
          posible ejecutar la aplicaci&oacute;n que recien instalo.  Dado que el
          programa <command>lsof</command> se ejecuta con privilegios, nos
          aparece una advertencia de seguridad.  Debe tomar nota de cualquier
          otra advertencia que aparezca durante la compilaci&oacute;n e
          instalaci&oacute;n.</para>

        <note>
          <para>Puede ahorrarse algo de tiempo al ejecutar <command>make
            install</command> en un solo comando, en lugar de ejecutar 
            <command>make</command> y <command>make install</command> 
            en dos pasos diferentes.</para>
	</note>

	<note>
	  <para>Algunos shells cuentan con un cache de los comandos disponibles bajo
	    los directorios incluidos en la variable de entorno <envar>PATH</envar>, 
	    para agilizar las operaciones de b&uacute;squeda de los ejecutables de
	    estos ficheros.  Si usted esta haciendo uso de alguno de estos shells, 
	    puede usar el comando <command>rehash</command> una vez que ha terminado 
	    de instalar el port, para poder hacer uso de su nuevo programa.  Esto es
	    v&aacute;lido para ambos shells que forman parte del sistema base (tal 
	    como <command>tcsh</command>) y shells que estan disponibles como 
	    ports (por ejemplo <filename role="package">shells/zsh</filename>).
	    </para>
	</note>

        <note>
          <para>Por favor, tenga en cuenta que algunos ports cuentan con una 
            licencia que no permite su inclusi&oacute;n en el CDROM.  
            Probablemente esto es a consecuencia de un registro que se debe hacer
            previo a la descarga, as&iacute; mismo algunos no permiten su 
            re-distribuci&oacute;n, y tal.  Si desea instalar un port que no se
            encuentra en el CDROM, deber&aacute; encontrarse conectado a
            Internet, para poder hacerlo (vea la <link  
            linkend="ports-inet">siguiente secci&oacute;n</link>).</para>
	</note>
      </sect3>

      <sect3 id="ports-inet">
      <title>Instalando Ports desde Internet</title>

        <para>Como en la secci&oacute;n anterior, en este secci&oacute;n se asume
          que usted cuenta con una conexi&oacute;n activa a Internet.  Si no es
          as&iacute;, deber&aacute; de llevar a cabo la instalaci&oacute;n por 
          <link linkend="ports-cd">medio de CDROM</link>, o ponga una copia del 
          distfile en <filename>/usr/ports/distfiles</filename> manualmente.</para>

        <para>El instalar un port desde Internet, se hace exactamente de la
          misma forma que se hace desde un CDROM.  La &uacute;nica diferencia
          entre estos dos metodos, es que el fichero distfile es descargado de
          Internet, en lugar de tomarlo del CDROM.</para>

        <para>Los pasos que implica son identicos:</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
...
[extraction output snipped]
...
&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 output snipped]
...
===&gt;  Building for lsof-4.57
...
[compilation output snipped]
...
===&gt;  Installing for lsof-4.57
...
[installation output snipped]
...
===&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>Como puede ver, la &uacute;nica diferencia es la l&iacute;nea que
          indica de donde esta descargando el sistema el c&oacute;digo.</para>

	<para>El sistema de ports utiliza &man.fetch.1; para descargar los ficheros,
	  que hace uso de varias variables de entorno, como son 
	  <envar>FTP_PASSIVE_MODE</envar>, <envar>FTP_PROXY</envar>, 
	  y <envar>FTP_PASSWORD</envar>.  Puede ser necesario que modifique una o 
	  m&aacute;s de estas, si se encuentra detr&aacute;s de un cortafuegos 
	  (firewall), o si requiere usar de un proxy FTP/HTTP.  Vea la p&aacute;gina
	  de ayuda &man.fetch.3; para una lista completa de las opciones.</para>

	<para>La opci&oacute;n <command>make <maketarget>fetch</maketarget></command>
	  se provee para usuarios que no pueden estar conectados constantemente.
	  Solo se tiene que ejecutar el comando en <filename>/usr/ports</filename>
	  y los ficheros requeridos ser&aacute;n descargados. Este comando funciona
	  tambi&eacute;n en subdirectorios, por ejemplo: <filename>/usr/ports/net</filename>.
	  Si el port tiene dependencias en librerias u otros ports, esta orden
	  <emphasis>no</emphasis> descargar&aacute; los distfiles de estos ports.
	  Remplace <maketarget>fetch</maketarget> por <maketarget>fetch-recursive
	  </maketarget> si se quiere descargar las dependencias de otro port.</para>

	<note><para>Es posible compilar los ports por categoria, o todos si se desea,
	  ejecutando la orden <command>make</command> en <filename>/usr/ports</filename>
	  usando el ya descrito m&eacute;todo de <command>make<makevar>fetch</makevar>
	  </command>. Esto puede resultar peligroso ya que algunos ports no pueden 
	  coexistir. En otros casos, algunos ports pueden instalar dos diferentes 
	  ficheros bajo el mismo nombre.</para></note>

	<para>Puede darse el caso que se necesite descargar los tarballs de otro sitio
	  diferente a <makevar>MASTER_SITES</makevar> (de donde se descargan los 
	  ficheros). Es posible renombrar la opci&oacute;n <makevar>MASTER_SITES</makevar>
	  de la siguiente manera:</para>

        <screen>&prompt.root; <userinput>cd /usr/ports/<replaceable>directory</replaceable></userinput></screen>
        <screen>&prompt.root; <userinput>make MASTER_SITE_OVERRIDE= \
        ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen>

	<para>En este ejemplo cambiamos la opci&oacute;n <makevar>MASTER_SITES</makevar>
	  a <hostid role="fqdn">ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/</hostid>.</para> 

	<para>Algunos ports permiten (o requieren) que se provea opciones de 
	  compilaci&oacute;n que pueden habilitar/deshabilitar partes de la 
	  aplicaci&oacute;n que no son necesarias, algunas opciones de seguridad
	  y otros arreglos. Algunos ejemplos de estos son <filename role="package">
	  www/mozilla</filename>, <filename role="package">security/gpgme</filename> y
	  <filename role="package">mail/sylpheed-claws</filename>. Se notificar&aacute;
	  con un mensaje cuando opciones como estas estan disponibles.</para>
      </sect3>  

      <sect3>
	<title>Rehubicando el directorio de Ports</title>

	<para>Algunas veces es &uacute;til (o necesario) usar diferentes distfiles y
	  directorio de ports. Las variables <makevar>PORTSDIR</makevar> y <makevar>
	  PREFIX</makevar> pueden sustituir los recursos por defecto. Por ejemplo:</para>

        <screen>&prompt.root; <userinput>make PORTSDIR=/usr/home/example/ports install</userinput></screen>
	<para>Esto compilar&aacute; el port en 
	  <filename>/usr/home/example/ports</filename> y lo
	  instalar&aacute; en <filename>/usr/local</filename>.</para>
        
	<screen>&prompt.root; <userinput>make PREFIX=/usr/home/example/local install</userinput></screen>
	<para>Esto compilar&aacute; el port en <filename>/usr/ports</filename> y lo 
	  instalar&aacute; en <filename>/usr/home/example/local</filename>.</para>

	<para>Y claro,</para>

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

	<para>Combinar&aacute; los dos (demasiado largo para escribirlo completamente,
	  pere debe darle una idea general).</para>
	
	<para>Es posible tambi&eacute;n cambiar estas variables como parte su su entorno.
	  Lea el manual de su consola (shell) para hacerlo.</para>
      </sect3>	

      <sect3>
	<title>Usando <command>imake</command></title>

	<para>Algunos ports que usan <command>imake</command> (como parte del Sistema
	  X Windows) no funcionan correctamente con <makevar>PREFIX</makevar>, e 
	  insistir&aacute; en instalar en <filename>/usr/X11R6</filename>. Al igual,
	  algunos ports de Perl ignoran <makevar>PREFIX</makevar> e instalan en el 
	  &aacute;rbol de Perl. Hacer que estos ports respeten <makevar>PREFIX</makevar>
	  es una tarea dif&iacute;cil y hasta imposible.</para>
	  
      </sect3>
    </sect2>

    <sect2 id="ports-removing">
      <title>Eliminando Ports Instalados</title>

      <indexterm>
        <primary>ports</primary>
        <secondary>eliminando</secondary>
      </indexterm>
      <para>Ahora que sabe instalar ports, probablemente se este preguntando como
        eliminarlos, s&oacute;lo en caso de que haya instalado alguno y 
        posteriormente se de cuenta que ha instalado el port incorrecto.  Vamos a
        eliminar el port instalado (que era <command>lsof</command>, para todos 
        aquellos que no prestaron atenci&oacute;n).  Como cuando instalamos 
        ports, lo primero que debemos hacer es ubicarnos en el directorio del 
        port que deseamos eliminar, que en este caso es 
	    <filename>/usr/ports/sysutils/lsof</filename>.  Una vez que se ha ubicado
	    en este directorio, estamos listos para eliminar <command>lsof</command>.
	    Esto se hace con el comando <command>make deinstall</command>:</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>Esto fu&eacute; sencillo.  Ha eliminado <command>lsof</command> de
        su sistema.  Si desea reinstalarlo, lo puede hacer al ejecutar
	    <command>make reinstall</command> estando en el directorio
        <filename>/usr/ports/sysutils/lsof</filename>.</para>

      <para>Los comandos <command>make deinstall</command> y <command>make
        reinstall</command> no funcionan una vez que ha ejecutado el comando
        <command>make clean</command>.  Si desea desintalar un port, una vez que
        ha ejecutado <command>make clean</command>, deber&aacute; hacer uso del
        comando &man.pkg.delete.1; como se describe en la secci&oacute;n de
        <link linkend="packages-using">Paquetes del Handbook</link>.</para>
    </sect2>
  </sect1>

  <sect1 id="ports-nextsteps">
    <title>Actividades Post-Instalaci&oacute;n</title>

    <para>Una vez que ha instalado una nueva aplicaci&oacute;n, normalmente
      deber&aacute; leer la documentaci&oacute;n incluida, editar los
      ficheros de configuraci&oacute;n necesarios, asegurarse de que la
      aplicaci&oacute;n se ejecute al arrancar el sistema (si es un daemonio),
      etc.</para>

    <para>Obviamente los pasos exactos para configurar cada aplicaci&oacute;n 
      varian de una a otra.  De cualquier forma, si recien ha instalado una
      nueva aplicaci&oacute;n y se pregunta 
      <quote>&iquest;Y ahora qu&eacute;?</quote>, estos consejos puede que le
      sean de ayuda:</para>

    <itemizedlist>
      <listitem>
	<para>Use &man.pkg.info.1; para ver que ficheros se instalaron y donde.  Por
	  ejemplo, si recien instal&oacute; el paquete FooPackage 1.0.0, 
	  el siguiente comando:</para>

	<screen>&prompt.root; <userinput>pkg_info -L foopackage-1.0.0 | less</userinput></screen>

	<para>le mostrar&aacute; los ficheros instalados por el paquete.  Preste 
	  especial atenci&oacute;n a los ficheros en el directorio
	  <filename>man/</filename> que son las p&aacute;ginas de ayuda y los del
	  directorio <filename>etc/</filename>, que contiene los ficheros de 
	  configuraci&oacute;n, y bajo el directorio <filename>doc/</filename> 
	  podr&aacute; encontrar informaci&oacute;n m&aacute;s detallada.</para>

	<para>Si no esta seguro de cual es la versi&oacute;n del paquete instalado, 
	  simplemente teclee algo as&iacute;</para>

	<screen>&prompt.root; <userinput>pkg_info | grep <replaceable>foopackage</replaceable></userinput></screen>

	<para>y le mostrara todos los paquetes que tienen como nombre
	  <replaceable>foopackage</replaceable>.  Reemplace 
	  <replaceable>foopackage</replaceable> de acuerdo a sus necesidades
	  en la l&iacute;nea de comandos.</para>
      </listitem>

      <listitem>
	<para>Una vez que ha identificado donde se localizan las paginas de ayuda
	  de la aplicaci&oacute;n, reviselas usando &man.man.1;.  De forma similar
	  revise los ficheros de configuraci&oacute;n de ejemplo (N. de T. 
	  Generalmente estos ficheros son aquellos que tienen la terminaci&oacute;n
	  <filename>.sample</filename>), as&iacute; como cualquier 
	  documentaci&oacute;n adicional que se incluya.</para>
      </listitem>

      <listitem>
	<para>Si la aplicaci&oacute;n cuenta con un sitio web, visitelo en busca
	  de documentaci&oacute;n adicional, ficheros de preguntas frecuentes (FAQ),
	  etc.  Si no esta seguro del sitio web, vea la salida del comando</para>

	<screen>&prompt.root; <userinput>pkg_info <replaceable>foopackage-1.0.0</replaceable></userinput></screen>
	
	<para>este incluye en ocasiones una l&iacute;nea <literal>WWW:</literal>, que
	  describe el sitio web de la aplicaci&oacute;n.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="ports-trouble">
    <title>Resoluci&oacute;n de Problemas</title>

    <para>La siguiente secci&oacute;n cubre algunas de las preguntas m&aacute;s
      frecuentes relacionadas a la colecci&oacute;n de ports, y algunas
      t&eacute;cnicas b&aacute;sicas para la resoluci&oacute;n de problemas, 
      as&iacute; como que hacer si encontramos un <link 
      linkend="ports-broken">port roto</link>.</para>

    <sect2 id="ports-questions">
      <title>Algunas Preguntas y Respuestas</title>

      <qandaset>
        <qandaentry>
	  <question>
	  <para>&iquest;Qu&eacute; no es una discusi&oacute;n acerca de 
	    m&oacute;dems?</para>
	  </question>

	  <answer>
	  <para>Ah, usted debe estar pensando en puertos (ports) seriales, que se 
	    encuentran en la parte trasera de su computadora. Aqui nos referimos al 
	    t&eacute;rmino <quote>port</quote> como resultado de aquellas 
	    aplicaciones que han sido <quote>portadas</quote> de una versi&oacute;n
	    de Unix a otra.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para id="ports-patch">&iquest;Qu&eacute; es un parche (patch)?</para>
	  </question>

	  <answer>
	  <para>Una parche (patch), es un peque&ntilde;o fichero que 
	    especif&iacute;ca como ir de una versi&oacute;n a otra.  Contiene texto
	    plano y cuenta con indicaciones similares a
	    <quote>delete line 23</quote> (borrar la l&iacute;nea 23),
	    <quote>add these two lines after line 468</quote> (a&ntilde;adir estas
	    dos l&iacute;neas despu&eacute;s de la l&iacute;nea 468), o
	    <quote>change line 197 to this</quote> (cambiar la l&iacute;nea 197 por
	    esto).  Tambi&eacute; son conocidos como ficheros diff, ya que son
	    generados por el programa &man.diff.1;.</para>
	  </answer>
	</qandaentry>

  <indexterm><primary>tarball</primary></indexterm>
	<qandaentry>
	  <question>
	  <para id="ports-tarball">&iquest;Qu&eacute; es eso de tarballs?</para>
	  </question>

	  <answer>
	  <para>Es un fichero con extensi&oacute;n <filename>.tar</filename> o 
	    con alguna variaci&oacute;n tal como <filename>.tar.gz</filename>,
	    <filename>.tar.Z</filename>, <filename>.tar.bz2</filename>,
	    o incluso <filename>.tgz</filename>.</para>

	  <para>B&aacute;sicamente, es un &aacute;rbol de directorio, que ha sido
	    archivado en un solo fichero (<filename>.tar</filename>) y en ocasiones
	    comprimido (<filename>.gz</filename>).  Esta t&eacute;cnica se uso
	    originalmente para archivar en cintas (que es de donde proviene su 
	    nombre; <emphasis>T</emphasis>ape <emphasis>AR</emphasis>chives), pero 
	    es ampliamente usado para distribuir c&oacute;digo fuente por todo 
	    Internet.</para>

	  <para>Usted puede ver que ficheros se encuentran archivados, o incluso
	    extraerlos usando el programa estandar de Unix &man.tar.1;, que se 
	    incluye con el sistema base de FreeBSD, de la siguiente manera:</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>checksum</primary></indexterm>
	<qandaentry>
	  <question>
	  <para id="ports-checksum">&iquest;Y un checksum?</para>
	  </question>

	  <answer>
	  <para>Es un numero generado por la suma de los datos en el fichero que
	    desea consultar.  Si alguno de los caracteres cambia, el checksum ya no
	    ser&aacute; igual al total, de tal suerte que esta simple 
	    comparaci&oacute;n le permite detectar una diferencia.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>He hecho lo que se indica para compilar ports desde un CDROM y
	    funciona de maravilla hasta que he intentado instalar el port de
	    <application>Kermit</application>.</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>&iquest;Por qu&eacute; no lo puede encontrar?  &iquest;Acaso tengo 
	    un CDROM defectuoso?</para>
	  </question>

	  <answer>
	  <para>Como se explico en la secci&oacute;n <link
	    linkend="ports-cd">Instalando Ports desde un CDROM</link>, algunos ports
	    no se pueden incluir en CDROM, debido a restricciones de licenciamiento. 
	    <application>Kermit</application> es un ejemplo de esto.  Los 
	    t&eacute;rminos de la licencia de <application>Kermit</application>, no 
	    permiten su inclusi&oacute;n en el CDROM, as&iacute; que tendr&aacute;
	    descargarlo <quote>a mano</quote>, una disculpa!.</para>

	  <para>La raz&oacute;n por la cual obtiene esos mensajes de error, es por 
	    que no cuenta con una conexi&oacute;n a Internet en ese momento.  Una
	    vez que lo haya descargado de alguno de los sitios disponibles 
	    (<makevar>MASTER_SITES</makevar> listados en el fichero 
	    <filename>Makefile</filename>), puede continuar con el proceso de
	    instalaci&oacute;n.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Ya hice esto, pero cuando intento guardarlo en el subdirectorio 
	    <filename>/usr/ports/distfiles</filename> obtengo un error diciendo
	    algo acerca de que no cuento por los permisos.</para>
	  </question>

	  <answer>
	  <para>El sistema de ports, descarga los ficheros tarball, en el 
	    subdirectorio <filename>/usr/ports/distfiles</filename>, pero muchos
	    administradores de sistema crean un enlace de este directorio a un
	    servidor remoto o a una unidad local de CDROM de solo lectura.  Si esta
	    es su situaci&oacute;n, entonces deber&aacute; especificar un directorio
	    diferente para guardar sus ficheros distfiles, con el siguiente
	    comando:</para>

	  <screen>&prompt.root; <userinput>make DISTDIR=<replaceable>/directorio/local/con/permisos/de/escritura</replaceable> install</userinput></screen>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>&iquest;El esquema de ports trabaja solamente si se tiene todo
	    en <filename>/usr/ports</filename>?  Mi administrador de sistema
	    dice que todo lo debo tener en 
	    <filename>/u/people/guests/wurzburger</filename>, pero parece que
	    no funciona de esta manera.</para>
	  </question>

	  <answer>
	  <para>Puede usar las variables <makevar>PORTSDIR</makevar> y
	    <makevar>PREFIX</makevar>, para indicarle al mecanismo de ports que 
	    directorios utilizar.  Por ejemplo;</para>

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

	  <para>compilar&aacute; el port en
	    <filename>/u/people/guests/wurzburger/ports</filename> e
	    instalar&aacute; todo bajo el directorio 
	    <filename>/usr/local</filename>.</para>

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

	  <para>compilar&aacute; todo en <filename>/usr/ports</filename> e
	    instalar&aacute; todo bajo el directorio 
	    <filename>/u/people/guests/wurzburger/local</filename>.</para>

	  <para>Y claro esta que,</para>

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

	  <para>combinar&aacute; ambos (lo cual es muy largo para escribir aqui,
	    pero debe darnos una buena idea).</para>

	  <indexterm><primary>imake</primary></indexterm>

	  <para>Algunos ports que usan &man.imake.1; (una parte del Sistema de 
	    Ventanas X) no trabajan bien con <makevar>PREFIX</makevar>, e insistiran
	    en instalar todo bajo <filename>/usr/X11R6</filename>.  De forma similar, 
	    algunos ports de Perl ignoran la variable <makevar>PREFIX</makevar> y 
	    proceden a instalar bajo el &aacute;rbol de Perl.  Hacer que estos ports
	    respeten la variable <makevar>PREFIX</makevar> es una tarea dif&iacute;cil
	    si no imposible.</para>

	  <para>Si no le agrada estar tecleando todo esto cada vez que desea instalar
	    un port, es una buena idea incluir estas variables en sus variables de
	    entorno.  Lea la documentaci&oacute;n de su shell para ver las
	    instrucciones para hacer esto.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>No cuento con un CDROM de FreeBSD, pero me gustar&iacute;a contar
	    con todos los ficheros tar a la mano en mi sistema, para no tener 
	    que descargarlos cada vez que deseo instalar un port. &iquest;Hay alguna
	    forma de obtener todos de una sola vez?</para>
	  </question>

	  <answer>
	  <para>Para obtener todos y cada uno de los ficheros tar de la 
	    Colecci&oacute;n de Ports, haga lo siguiente:</para>

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

	  <para>Para todos los tarball de un directorio concreto
	    haga:</para>

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

	  <para>y para un solo port&mdash;bueno, quiz&aacute;s ya lo adivin&oacute;.
	    </para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Tengo conocimiento  de que probablemente es m&aacute;s r&aacute;pido
	    descargar los ficheros tarball desde un servidor r&eacute;plica
	    (mirror) de FreeBSD, m&aacute;s cercano.  &iquest;Existe alguna forma
	    de indicarle al port que descargue los ficheros de un servidor diferente
	    a los listados en <makevar>MASTER_SITES</makevar>?.</para>
	  </question>

	  <answer>
	  <para>Claro.  Por ejemplo, si usted sabe que <hostid
	    role="fqdn">ftp.FreeBSD.org</hostid> esta m&aacute;s pr&oacute;ximo
	    que los servidores listados en <makevar>MASTER_SITES</makevar>, 
	    haga lo siguiente:</para>

	  <screen>&prompt.root; <userinput>cd /usr/ports/<replaceable>directorio</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>Quisiera saber cuales son los ficheros que <command>make</command> 
	    va a necesitar antes de los descargue.</para>
	  </question>

	  <answer>
	  <para><command>make fetch-list</command> desplegara una lista de los
	    ficheros necesarios para la compilaci&oacute;n del port.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>&iquest;Existe alguna forma de detener la compilaci&oacute;n del
	    port?  Deseo editar un poco el c&oacute;digo, antes de instalarlo, pero
	    es un poco cansado tener que verlo y pulsar
	    <keycombo action="simul">
	      <keycap>Ctrl</keycap>
	      <keycap>C</keycap>
	    </keycombo>
	    a cada momento.</para>
	  </question>

	  <answer>
            <para>Puede usar el comando <command>make extract</command>, con el 
              cual se detendra el proceso, una vez que se han descargado y 
              extraido los ficheros necesarios.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Estoy tratando de hacer mi propio port, y quiero poder detener el
	    proceso, hasta que verifique que mis parches funcionan correctamente.  
	    &iquest;Existe algo similar a <command>make extract</command>, pero
	    para parches?</para>
	  </question>

	  <answer>
	  <para>Si, <command>make patch</command> es lo que usted busca.
	    Quiz&aacute;s la opci&oacute;n <makevar>PATCH_DEBUG</makevar> le sea de
	    gran utilidad.  Y por cierto, gracias por su esfuerzo!</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>He escuchado que algunas opciones del compilador pueden causar
	    errores.  &iquest;Es cierto?  &iquest;C&oacute;mo puedo asegurarme
	    de compilar los ports con las opciones correctas?</para>
	  </question>

	  <answer>
	  <para>Si, con la versi&oacute;n 2.6.3 de <command>gcc</command> (que es
	    la versi&oacute;n distribuida con FreeBSD 2.1.0 y 2.1.5), la 
	    opci&oacute;n <option>-O2</option> puede ocasionar un c&oacute;digo
	    con errores, a menos que utilice tambi&eacute;n la opci&oacute;n 
	    <option>-fno-strength-reduce</option> (la mayor&iacute;a de los ports
	    no hacen uso de la opci&oacute;n <option>-O2</option>).  Usted 
	    <emphasis>debe</emphasis> poder indicarle al compilador las opciones, 
	    con algo similar a:</para>

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

	  <para>o bien, editando el fichero <filename>/etc/make.conf</filename>, 
	    pero desafortunadamente no todos los ports respetan esto.  La mejor 
	    forma es ejecutar <command>make configure</command>, y despu&eacute;s
	    dirijirse al directorio con el c&oacute;digo fuente e inspeccionar y
	    editar el fichero <filename>Makefile</filename>, pero esto puede ser
	    tedioso si se cuenta con muchos subdirectorios, y en cada uno su propio
	    fichero <filename>Makefile</filename>.</para>

	    <para>Lac opciones que por default utiliza el compilador de FreeBSD son
	      muy conservadoras, por lo que si no las ha modificado, no debe
	      tener problemas.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Existen muchos ports y es dif&iacute;cil encontrar el que
	    quiero.  &iquest;Existe en alg&uacute;n lado una lista de los
	    ports disponibles?</para> 
	  </question>

	  <answer>
	  <para>Vea el fichero <filename>INDEX</filename>, localizado en
	    <filename>/usr/ports</filename>.  Si desea, tambi&eacute;n puede 
	    buscar en la Colecci&oacute;n de Ports por medio de una palabra clave.
	    Por ejemplo, puede encontrar ports relevantes al lenguaje de 
	    programaci&oacute;n LISP usando:</para>

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

	<qandaentry>
	  <question>
	  <para>Deseo instalar el port <literal>foo</literal> pero de repente
	    el sistema se detuvo y comenzo a compilar el port 
	    <literal>bar</literal>.  &iquest;Qu&eacute; esta pasando?</para>
	  </question>

	  <answer>
	  <para>El port <literal>foo</literal> necesita algo del port 
	    <literal>bar</literal> &mdash; por ejemplo, si <literal>foo</literal> 
	    utiliza gr&aacute;ficos, es posible que <literal>bar</literal> 
	    cuente con librer&iacute;as con rutinas para procesar gr&aacute;ficos.
	    O bien <literal>bar</literal> puede ser una herramienta necesaria para
	    compilar el port <literal>foo</literal>.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para id="ports-remove">  He instalado el programa 
	    <literal>grizzle</literal> desde los ports y francamente es un 
	    desperdicio de espacio en disco.  Quiero eliminarlo, pero no se donde
	    se instalaron sus ficheros.  &iquest;Alguna pista?</para>
	  </question>

	  <answer>
	  <para>No hay problema, simplemente teclee:</para>

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

	  <para>Otra alternativa es teclear:</para>

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

	<qandaentry>
	  <question>
	  <para>Aguarda un momento, &iquest;Se supone que uno debe saber el 
	    numero de versi&oacute;n para usar este comando?  Hablando en serio,
	    no esperas que recuerde todo esto, &iquest;o si?</para>
	  </question>

	  <answer>
	  <para>No del todo, lo puede saber haciendo:</para>

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

	  <para>El numero de versi&oacute;n se puede saber usando el comando
	    <command>pkg_info</command> o bien al teclear:
	    <command>ls /var/db/pkg</command></para>

	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Hablando de espacio en disco, el directorio de ports parece que
	    ocupa mucho espacio.  &iquest;Es seguro eliminar algo de este 
	    directorio?</para>
	  </question>

	  <answer>
	  <para>Asi es, si ha instalado un programa y esta seguro de que ya no 
	    necesita el c&oacute;digo fuente, no hay una raz&oacute;n para contar
	    con &eacute;l.  La forma m&aacute;s segura de hacer esto es:</para>

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

	  <para>este comando revisar&aacute; todos los subdirectorios, y 
	    proceder&aacute; a eliminar todo lo que encuentre, salvo los
	    esqueletos del port.</para>

	  <tip><para>Es posible que obtengamos el mismo efecto, pero sin que
	    necesariamente se llame de forma recursiva a cada 
	    <filename>Makefile</filename>.  Por ejemplo, puede eliminar 
	    directamente todos los subdirectorios <filename>work/</filename>
	    con el comando:

	    <screen>&prompt.root; <userinput>find /usr/ports -depth -name work -exec rm -rf {} \;</userinput></screen></para>
	    </tip>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>He intentado eso y aun cuento con los tarballs o como se
	    llamen, en el directorio <filename>distfiles</filename>.
	    &iquest;Puedo eliminarlos tambi&eacute;n?</para>
	  </question>

	  <answer>
	  <para>Si, si esta totalmente seguro de que ha terminado con ellos,
	    tambi&eacute;n los puede eliminar.  Estos se pueden eliminar 
	    manualmente, o bien usando el comando 
	    <command>make distclean</command>.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Me gusta contar con muchos, muchos programas para jugar con
	    ellos.  &iquest;Existe una forma de instalar todos los ports
	    en un solo paso?</para>
	  </question>

	  <answer>
	  <para>Simplemente haga:</para>

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

	    <para>Tenga cuidado, ya que algunos ports pueden instalar ficheros
	      con el mismo nombre.  En el caso de que instale dos programas de
	      gr&aacute;ficos y que ambos instalen 
	      <filename>/usr/local/bin/plot</filename> obviamente le va ocasionar
	      problemas.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>OK, he intentado esto, pero como supuse que tomaria mucho tiempo,
	    lo deje corriendo y me fui a dormir.  En la ma&ntilde;ana al ver mi
	    computadora, solo hab&iacute;a terminado tres ports y medio.  
	    &iquest;He hecho algo incorrectamente?.</para>
	  </question>

	  <answer>
	  <para>No, el problema es que algunos ports requieren preguntarle
	    cosas que no podemos contestar por usted (por ejemplo; 
	    <quote>&iquest;En qu&eacute; tipo de papel desea imprimir, en A4
	    o en Carta?</quote>), y requieren de alguien que les d&eacute;
	    respuesta.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Realmente no me interesa pasar todo el d&iacute; frente al
	    monitor.  &iquest;Alguna mejor idea?</para>
	  </question>

	  <answer>
	  <para>OK, haga lo siguiente antes de irse a la cama/trabajo/el 
	    parque local:</para>

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

	  <para>Con esta opci&oacute;n se instalar&aacute;n todos los ports
	    que <emphasis>no</emphasis> requieren intervenci&oacute;n del
	    usuario.  Una vez que regrese, haga:</para>

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

	  <para>para terminar el trabajo.</para>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>En mi trabajo usamos <literal>frobble</literal>, que se
	    encuentra la Colecci&oacute;n de Ports, pero lo hemos editado
	    un poco, para que se ajuste a nuestras necesidades.  &iquest;Existe
	    alguna forma de hacer nuestro paquete, para poder distribuirlo
	    m&aacute;s facilmente en nuestros sitios?.</para>
	  </question>

	  <answer>
	  <para>No hay problema, asumiendo que usted sabe como crear los parches
	    de sus cambios, puede hacer lo siguiente:</para>

	  <screen>&prompt.root; <userinput>cd <replaceable>/usr/ports/algunlugar/frobble</replaceable></userinput>
&prompt.root; <userinput>make extract</userinput>
&prompt.root; <userinput>cd work/frobble-2.8</userinput>
[Aplicar sus parches]
&prompt.root; <userinput>cd ../..</userinput>
&prompt.root; <userinput>make package</userinput></screen>
	  </answer>
	</qandaentry>

	<qandaentry>
	  <question>
	  <para>Esto de los ports es muy inteligente.  Estoy deseperado por saber
	    &iquest;C&uacute;al es el secreto?</para>
	  </question>

	  <answer>
	  <para>No hay secreto, simplemente vea los ficheros
	    <filename>bsd.port.mk</filename> y
	    <filename>bsd.port.subdir.mk</filename> que se localizan en 
	    <filename>/usr/ports/Mk/</filename>.</para>

	  <para>(Los lectores que tiene aversi&oacute;n a los scripts de shell,
	    se les aconseja abstenerse de ver los ficheros de este directorio.)</para>
	  </answer>
	</qandaentry>
      </qandaset>
    </sect2>

    <sect2 id="ports-broken">
      <title>Ayuda!  Este Port Esta Roto! (Broken)</title>

      <para>Si se encuentra con port que no trabaj como lo esperaba, existen 
        varias alternativas, que incluyen:</para>

      <orderedlist>
        <listitem>
	  <para>Arreglelo!!  El libro <ulink
	    url="../porters-handbook/index.html">Porter's
	    Handbook</ulink> incluye informaci&oacute;n detallada de la
	    infraestructura de los "Ports", de tal forma que pueda arreglar
	    los ports que ocasionalmente estan defectuosos o inclusive para
	    crear y enviar su propio port!</para>
	</listitem>

	<listitem>
	  <para>Notifiquelo&mdash;<emphasis>por correo solamente</emphasis>!  
	    Envie un correo a la persona que da mantenimiento al port.  Teclee
	    <command>make maintainer</command> o lea el 
	    <filename>Makefile</filename> para ver el correo de esta persona.  
	    Recuerde incluir el nombre y la versi&oacute;n del port (puede
	    enviar la l&iacute;nea <literal>&dollar;FreeBSD:</literal> del
	    <filename>Makefile</filename>) as&iacute; como la salida del error
	    que da el port.  Si no obtiene respuesta de la persona que da
	    mantenimiento al port, puede usar &man.send-pr.1; para enviar un
	    reporte de error.</para>
	</listitem>

	<listitem>
	  <para>Descargue el paquete de un servidor FTP cercano.  La colecci&oacute;n
	    <quote>maestra</quote> de paquetes se localiza en <hostid
	    role="fqdn">ftp.FreeBSD.org</hostid> en el <ulink
	    URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/">directorio de
	    paquetes</ulink>, pero asegurese <emphasis>primero</emphasis> de verificar 
	    en un servidor r&eacute;plica (mirror)!.  Es mas seguro que estos
	    trabajen, a que tener que compilar las fuentes, tambi&eacute;n es m&aacute;s
	    r&aacute;pido.  Use el programa &man.pkg.add.1; para instalar paquetes en
	    su sistema.</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:
-->
