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.
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>.