5. Segunda Fase: Instalación de “ ports”
Anterior |  | Siguiente

## 5. Segunda Fase: Instalación de “ ports”

### Nota:

En ésta fase es posible instalar “packages” (que vienen precompilados) en lugar de compilar “ ports”. Para poder hacerlo convertiremos `fase_2.sh` en poco más que una lista de comandos `pkg_add`. Confío en que será usted capaz de escribir un “script” como ese. Ahora nos concentraremos en el sistema tradicional y mucho más flexible de funcionamiento de los “ports”.

El siguiente “script” `fase_2.sh` es el que yo uso para instalar mis “ ports” favoritos. Puede ejecutarse tantas veces como sea preciso y no prestará atención a los “ ports” que ya estén instalados. Incluye también soporte para la opción `-n` que hace un ensayo general con todo, es decir, muestra lo que hubiera sucedido si se hubiera ejecutado. Seguro que tiene que editar la lista de “ports” y probablemente tenga que cambiar unas cuantas variables de entorno.

La lista de “ports” consiste en líneas de dos o más palabras separadas por espacios: la categoría y el “port”. Es opcional situar detrás un comando de instalación que compilará e instalará el “port” (por defecto `make install`). Se ignoran las líneas vacís y las que comienzan por #. La mayoría de las veces es suficiente incluír el nombre del “port” y la categoría a que pertenece pero existen unos pocos “ports” en cuya compilación podemos afinar mucho asignando valores a variables de `make`; veamos un ejemplo:

www mozilla make WITHOUT_MAILNEWS=yes WITHOUT_CHATZILLA=yes install mail procmail make BATCH=yes install

De hecho puede usted usar comandos de “shell” a su criterio, así que no tiene que limitarse a simples invocaciones de `make`:

java linux-sun-jdk13 yes | make install news inn-stable CONFIGURE_ARGS="--enable-uucp-rnews --enable-setgid-inews" make install

Observe que la línea de `news/inn-stable` es un ejemplo de una asignación de entrada a la variable del intérprete de mandatos `CONFIGURE_ARGS`. El fichero `Makefile` del “port” la usará como valor inicial y la completará con otros argumentos esenciales. La diferencia respecto a a especificar la variable para `make` en la línea de comandos mediante

news inn-stable make CONFIGURE_ARGS="--enable-uucp-rnews --enable-setgid-inews" install

está en que esto último sustituye directamente el valor en lugar de completarlo. El método más adecuado depende de cada “port” en particular.

Compruebe cuidadosamente que ninguno de sus “ports” tenga una instalación interactiva, es decir, que ninguno deberí intentar recibir de stdin nada que no le dé usted en stdin. Si alguno lo hace leerá la siguiente o siguientes líneas de éste documento y no entenderá nada de nada. Si `fase_2.sh` pasa por alto un “port” o cesa su ejecución sin razón aparente es muy posible que esa sea la razón.

He aquí `fase_2.sh`. Crea un fichero “log” por cada port que instala y les da nombres según el esquema `DIRECTORIO_LOG/categoría+port`. Si no tiene una copia de su `fase_2.sh` en una partición compartida no olvide copiarlo al sistema nuevo antes de arrancarlo.

#!/bin/sh # # fase_2.sh - FreeBSD From Scratch, Segunda Fase: Instalación de Ports. # Uso: ./fase_2.sh # # $FreeBSD: head/es_ES.ISO8859-1/articles/fbsd-from-scratch/fase_2.sh 38826 2012-05-17 19:12:14Z hrs $ DBDIR=/var/db/pkg PORTS=/usr/ports LOGDIR=/home/root/setup/ports.log; mkdir -p ${LOGDIR} # Creamos unas cuantas variables que usa más de un port. PAPERSIZE=a4; export PAPERSIZE USA_RESIDENT=NO; export USA_RESIDENT MYNAME=$(basename $0) usage () { exec >&2 echo "uso: ${MYNAME} [-hn]" echo "" echo " Opciones:" echo " -h éste mensaje de ayuda." echo " -n muestra qué pasaría si se hubiera ejecutado." echo "" exit 1 } args=`getopt hn $*` if test $? != 0; then usage fi set -- $args DRYRUN= for i; do case "$i" in -n) DRYRUN=yes;; --) break;; *) usage;; esac done cat << EOF | lang perl5 security sudo x11-servers XFree86-4-Server x11 wrapper x11 XFree86-4-libraries x11 XFree86-4-clients x11-fonts XFree86-4-font75dpi x11-fonts XFree86-4-font100dpi x11-fonts XFree86-4-fontScalable x11-fonts urwfonts x11-fonts webfonts x11-toolkits open-motif x11 rxvt x11-wm ctwm security openssh-askpass astro xplanet astro setiathome make BATCH=yes install astro xephem editors vim print ghostscript-gnu make A4=yes BATCH=yes install print a2ps-a4 print psutils-a4 print gv print acroread5 print transfig archivers zip archivers unzip java linux-sun-jdk13 yes | make install java jdk13 www apache2 www weblint www amaya www mozilla make WITHOUT_MAILNEWS=yes WITHOUT_CHATZILLA=yes install www netscape48-navigator www checkbot www privoxy graphics xfig graphics xv graphics fxtv lang expect news tin net freebsd-uucp net cvsup-without-gui net pathchar make NO_CHECKSUM=yes install ftp wget ftp ncftp3 textproc ispell german ispell-neu german ispell-alt textproc docproj make JADETEX=yes HAVE_MOTIF=yes install sysutils samefile sysutils pstree sysutils mkisofs sysutils cdrtools sysutils grub devel ddd devel ctags devel ElectricFence mail procmail make BATCH=yes install mail metamail mail mutt mail spamoracle emulators mtools sysutils portupgrade news inn-stable CONFIGURE_ARGS="--enable-uucp-rnews --enable-setgid-inews" make install misc figlet-fonts textproc gmat EOF while read CATEGORY NAME CMD; do case "${CATEGORY}" in \#*) continue;; '') continue;; esac DIR="${PORTS}/${CATEGORY}/${NAME}" if ! test -d "${DIR}"; then echo "$DIR no existe -- ignorado" continue fi cd ${DIR} PKGNAME=`make -V PKGNAME` if test -d "${DBDIR}/${PKGNAME}"; then echo "${CATEGORY}/${NAME} ya instalado como ${PKGNAME}" continue fi LOG="${LOGDIR}/${CATEGORY}+${NAME}" echo "==> Instalando ${CATEGORY}/${NAME}; registrando instalación en ${LOG}" test -n "${CMD}" || CMD="make install" if test -n "${DRYRUN}"; then echo "${CMD}" continue fi date "++++++++++ %v %T +++++++++" > ${LOG} echo "CMD: ${CMD}" >> ${LOG} ( make clean eval "${CMD}" # make clean # Descoméntelo si no le sobra espacio bajo ${PORTS}. ) 2>&1 | tee -a ${LOG} done # Instalamos StarOffice como "package", previamente creado en el sistema # antíguo mediante "make package" porque el "port" usa una instalación # interactiva en X11. #pkg_add ${PORTS}/editors/staroffice52/staroffice-*.tbz # EOF $RCSfile: fase_2.sh,v $ vim: tabstop=4:

Descargue `fase_2.sh`.

Anterior |  | Siguiente
4. Primera Fase: Instalación del Sistema | Inicio | 6. Tercera Fase

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.