4.5. Usando la Colección de Ports

La siguiente sección le provee de las instrucciones básicas para instalar o eliminar programas de su sistema, usando la Colección de Ports.

4.5.1. Obteniendo la Colección de Ports

Antes de poder instalar ports, primero debe de hacerse de la Colección de Ports-- que escencialmente esta compuesta de ficheros Makefiles, parches y ficheros con la descripción de los ports, ubicados en /usr/ports.

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

Metodo por Sysinstall

Este metodo implica el uso del programa sysinstall nuevamente, para instalar Colección de Ports.

  1. Siendo usuario root, ejecute el programa /stand/sysinstall como se muestra:

    # /stand/sysinstall
    
  2. Posicionese en la opción Configure, y presione Enter.

  3. Seleccione la opción Distributions, y presione Enter.

  4. Seleccione la opción ports, y presione la Barra Espaciadora.

  5. Dirijase a la opción Exit, y presione Enter.

  6. Seleccione el medio de instalación deseado, tal como CDROM, FTP y tal.

  7. Siga los menus para salir de sysinstall.

El metodo alternativo para obtener y mantener actualizada la Colección de Ports, es usando CVSup. Lea el fichero de ports para CVSup, en /usr/share/examples/cvsup/ports-supfile. Vea el capítulo Usando CVSup para ver más información en el uso de CVSup y del fichero mencionado.

Metodo por CVSup

Este es un metodo rápido de obtener la Colección de Ports usando CVSup. Si desea mantener su árbol de ports actualizado, o bien, aprender más acerca de CVSup, lea los documentos comentados anteriormente.

  1. Instale el port net/cvsup. Vea Instalación de CVSup para mádetalles.

  2. Como usuario root, copie el fichero /usr/share/examples/cvsup/ports-supfile a una nueva ubicación, como puede ser el directorio /root o bien su propio directorio home.

  3. Edite el fichero ports-supfile.

  4. Cambie CHANGE_THIS.FreeBSD.org a un servidor CVSup cercano. Vea Mirrors de CVSup para ver una lista completa de los servidores CVSup.

  5. Ejecute cvsup:

    # cvsup -g -L 2 /root/ports-supfile
    
  6. Al ejecutar esto posteriormente, se descargaran las actualizaciones de la Colección de Ports.

4.5.2. Instalando Ports

Al hablar de la Colección de Ports, lo primero que debemos comentar es; a que nos referimos cuando hablamos de un “esqueleto” (skeleton). En sí mismo, un esqueleto de port, es una serie mínima de ficheros, que le indican a FreeBSD como compilar e instalar un programa. Cada esqueleto incluye:

Algunos ports cuentan con otros ficheros, tal como pkg-message. El sistema de ports usa estos, para manejar situaciones especiales. Si desea saber más detalles al respecto, o bien de ports en general, vea el libro FreeBSD Porter's Handbook.

Ahora que tiene suficientes antecedentes sobre que hacer con la Colecció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ón.

Pero, antes de que podamos proceder con la instalación, usted necesita seleccionar un port para instalar. Existen varias formas de hacer esto, siendo el metodo más sencillo los ports listados en el sitio web de FreeBSD. Puede navegar entre los ports listados ahí o bien, usar la función de buscar en el sitio. Cada port incluye una descripción, para que pueda leer un poco acerca de cada port antes de decidirse a instalarlo.

Otro metodo es por medio del comando whereis(1). Simplemente teclee whereis fichero, donde fichero es el programa que desea instalar. Si se encuentra en su sistema, se le indicara donde se localiza, tal como:

# whereis lsof
lsof: /usr/ports/sysutils/lsof

Esto nos indica que lsof (una utilidad de sistema) puede encontrarse en /usr/ports/sysutils/lsof.

Incluso otra forma de encontrar un port en particular, es usando el mecanismo de búsqueda incluido en el sistema de ports. Para efecto de usar esta habilidad, debe estar situado en el directorio /usr/ports. Una vez que este ahí, ejecute make search name=nombre-del-programa donde nombre-del-programa es el nombre del programa que desea encontrar. Por ejemplo, si busca lsof:

# cd /usr/ports
# make search name=lsof
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:

De esta información, la parte que debe prestar atención es la que se refiere a la ruta, esto es; la línea “Path:”, en virtud de que esta le indica la ubicación del programa. El resto de la información no es necesaria para la instalación, por lo que no se verá aqui.

Para una búsqueda más profunda, puede usar el comando make search key=cadena donde cadena 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.

En ambos casos, la búsqueda es indistinto el uso de mayúsculas o minusculas. El buscar “LSOF” y “lsof” arrojaran los mismos resultados.

Nota: Usted debe ser usuario root , para instalar ports.

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

4.5.2.1. Instalando Ports desde un CDROM

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 FreeBSD Mall. Esta sección asume que usted cuenta con un juego de CDROMs de FreeBSD.

Coloque su CDROM en la unidad correspondiente. Montelo en /cdrom. (Si utiliza un punto de montaje diferente la instalación no será exitosa). Para comenzar dirijase al directorio donde se localiza el port que desea instalar:

# cd /usr/ports/sysutils/lsof

Una vez que este en el directorio lsof, verá el esqueleto del port. El próximo paso es la compilación del port. Esto lo hacemos, simplemente tecleando make en la línea de comandos. Una vez que ha hecho esto, verá algo similar a lo siguiente:

# make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from file:/cdrom/ports/distfiles/.
===>  Extracting for lsof-4.57
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===>  Patching for lsof-4.57
===>  Applying FreeBSD patches for lsof-4.57
===>  Configuring for lsof-4.57
...
[configure output snipped]
...
===>  Building for lsof-4.57
...
[compilation output snipped]
...
#

Note que una vez que ha terminado la compilación, regresara a la línea de comandos. El siguiente paso es instalar el port. Para efecto de instalarlo, simplemente debemos añadir una palabra al comando make, y esa palabra es install:

# make install
===>  Installing for lsof-4.57
...
[installation output snipped]
...
===>   Generating temporary packing list
===>   Compressing manual pages for lsof-4.57
===>   Registering installation for lsof-4.57
===>  SECURITY NOTE: 
      This port has installed the following binaries which execute with
      increased privileges.
#

Una vez que regrese a la línea de comandos, le será posible ejecutar la aplicación que recien instalo. Dado que el programa lsof se ejecuta con privilegios, nos aparece una advertencia de seguridad. Debe tomar nota de cualquier otra advertencia que aparezca durante la compilación e instalación.

Nota: Puede ahorrarse algo de tiempo al ejecutar make install en un solo comando, en lugar de ejecutar make y make install en dos pasos diferentes.

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

Nota: Por favor, tenga en cuenta que algunos ports cuentan con una licencia que no permite su inclusión en el CDROM. Probablemente esto es a consecuencia de un registro que se debe hacer previo a la descarga, así mismo algunos no permiten su re-distribución, y tal. Si desea instalar un port que no se encuentra en el CDROM, deberá encontrarse conectado a Internet, para poder hacerlo (vea la siguiente sección).

4.5.2.2. Instalando Ports desde Internet

Como en la sección anterior, en este sección se asume que usted cuenta con una conexión activa a Internet. Si no es así, deberá de llevar a cabo la instalación por medio de CDROM, o ponga una copia del distfile en /usr/ports/distfiles manualmente.

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

Los pasos que implica son identicos:

# make install
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> 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)
===>  Extracting for lsof-4.57
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===>  Patching for lsof-4.57
===>  Applying FreeBSD patches for lsof-4.57
===>  Configuring for lsof-4.57
...
[configure output snipped]
...
===>  Building for lsof-4.57
...
[compilation output snipped]
...
===>  Installing for lsof-4.57
...
[installation output snipped]
...
===>   Generating temporary packing list
===>   Compressing manual pages for lsof-4.57
===>   Registering installation for lsof-4.57
===>  SECURITY NOTE: 
      This port has installed the following binaries which execute with
      increased privileges.
#

Como puede ver, la única diferencia es la línea que indica de donde esta descargando el sistema el código.

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

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

Nota: Es posible compilar los ports por categoria, o todos si se desea, ejecutando la orden make en /usr/ports usando el ya descrito método de makefetch . 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.

Puede darse el caso que se necesite descargar los tarballs de otro sitio diferente a MASTER_SITES (de donde se descargan los ficheros). Es posible renombrar la opción MASTER_SITES de la siguiente manera:

# cd /usr/ports/directory
# make MASTER_SITE_OVERRIDE= \
        ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

En este ejemplo cambiamos la opción MASTER_SITES a ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.

Algunos ports permiten (o requieren) que se provea opciones de compilación que pueden habilitar/deshabilitar partes de la aplicación que no son necesarias, algunas opciones de seguridad y otros arreglos. Algunos ejemplos de estos son www/mozilla, security/gpgme y mail/sylpheed-claws. Se notificará con un mensaje cuando opciones como estas estan disponibles.

4.5.2.3. Rehubicando el directorio de Ports

Algunas veces es útil (o necesario) usar diferentes distfiles y directorio de ports. Las variables PORTSDIR y PREFIX pueden sustituir los recursos por defecto. Por ejemplo:

# make PORTSDIR=/usr/home/example/ports install

Esto compilará el port en /usr/home/example/ports y lo instalará en /usr/local.

# make PREFIX=/usr/home/example/local install

Esto compilará el port en /usr/ports y lo instalará en /usr/home/example/local.

Y claro,

# make PORTSDIR=../ports PREFIX=../local install

Combinará los dos (demasiado largo para escribirlo completamente, pere debe darle una idea general).

Es posible también cambiar estas variables como parte su su entorno. Lea el manual de su consola (shell) para hacerlo.

4.5.2.4. Usando imake

Algunos ports que usan imake (como parte del Sistema X Windows) no funcionan correctamente con PREFIX, e insistirá en instalar en /usr/X11R6. Al igual, algunos ports de Perl ignoran PREFIX e instalan en el árbol de Perl. Hacer que estos ports respeten PREFIX es una tarea difícil y hasta imposible.

4.5.3. Eliminando Ports Instalados

Ahora que sabe instalar ports, probablemente se este preguntando como eliminarlos, só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 lsof, para todos aquellos que no prestaron atenció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 /usr/ports/sysutils/lsof. Una vez que se ha ubicado en este directorio, estamos listos para eliminar lsof. Esto se hace con el comando make deinstall:

# cd /usr/ports/sysutils/lsof
# make deinstall
===>  Deinstalling for lsof-4.57

Esto fué sencillo. Ha eliminado lsof de su sistema. Si desea reinstalarlo, lo puede hacer al ejecutar make reinstall estando en el directorio /usr/ports/sysutils/lsof.

Los comandos make deinstall y make reinstall no funcionan una vez que ha ejecutado el comando make clean. Si desea desintalar un port, una vez que ha ejecutado make clean, deberá hacer uso del comando pkg_delete(1) como se describe en la sección de Paquetes del Handbook.

Éste y otros documentos pueden obtenerse en ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para preguntas acerca de FreeBSD, leer la documentación antes de contactar con la lista <questions@FreeBSD.org>.
Para preguntas acerca de esta documentación, e-mail a <doc@FreeBSD.org>.

Hosting by: hurra.com
Generated: 2007-01-26 18:00:31