Instalando Bash-2.05a

Estimación del tiempo de construcción:      3 minutos 
Estimación del espacio de disco requerido:  20 MB

Instalación de Bash

Antes de intentar instalar Bash, tienes que comprobar y asegurarte de que tu distribución tiene los archivos /usr/lib/libcurses.a y /usr/lib/libncurses.a. Si tu distribución original es otro sistema LFS, todos estos ficheros existirán si seguiste las instrucciones del libro al pie de la letra.

Si no existe ninguno de los dos ficheros, debes instalar el paquete de desarrollo de la librería ncurses. Este paquete suele tener un nombre parecido a ncurses-dev. Si este paquete ya está instalado o acabas de instalarlo, comprueba los dos ficheros de nuevo. A menudo, el fichero libcurses.a puede faltar (todavía). Si es ese el caso, entonces crea el fichero libcurses.a como un enlace simbólico, ejecutando como administrador del sistema (root) las siguientes órdenes:

cd /usr/lib &&
ln -s libncurses.a libcurses.a

Ya podemos continuar. Instala Bash ejecutando las siguientes órdenes:

./configure --enable-static-link --prefix=$LFS/usr \
   --bindir=$LFS/bin --with-curses &&
make &&
make install &&
cd $LFS/bin &&
ln -sf bash sh

Si al terminar la etapa make install se imprimen unas líneas como estas:

install-info: unknown option `--dir-file=/mnt/lfs/usr/info/dir' 
usage: install-info [--version] [--help] [--debug] [--maxwidth=nnn] 
	[--section regexp title] [--infodir=xxx] [--align=nnn] 
	[--calign=nnn] [--quiet] [--menuentry=xxx]
	[--info-dir=xxx] 
	[--keep-old] [--description=xxx] [--test]
	[--remove] [--] filename 
make[1]: *** [install] Error 1 
make[1]: Leaving directory `/mnt/lfs/usr/src/bash-2.05a/doc' 
make: [install] Error 2 (ignored)

entonces, probablemente, estás utilizando Debian y tienes una versión antigua del paquete texinfo. Este error no es grave de ninguna manera: las páginas info se instalarán cuando volvamos a compilar bash dinámicamente en el capítulo 6, así que puedes ignorarlo.

Cuando probamos la instalación con la versión más moderna de Debian, los últimos dos comandos se ejecutaron porque el proceso de instalación no devolvió un valor mayor de 0. Pero harías bien en comprobar si tienes el enlace simbólico $LFS/bin/sh en tu partición LFS. Si no lo tienes, ejecuta ahora manualmente los dos últimos comandos.

Explicación de los comandos

--enable-static-link: Esta opción de configure provoca que Bash sea enlazado estáticamente.

--prefix=$LFS/usr: Esta opción de configure instala todos los ficheros de Bash bajo el directorio $LFS/usr, que pasa a ser el directorio /usr cuando entramos en el entorno chroot o reiniciamos LFS.

--bindir=$LFS/bin: Esto instala los archivos ejecutables en $LFS/bin. Lo hacemos de esta manera porque queremos que bash esté en /bin, no en /usr/bin. Una razón para ésto es que el directorio /usr podría estar en una partición separada que tendrá que montarse en algún momento. Antes de que se monte esa partición, necesitas y querrás tener bash disponible (sería difícil ejecutar los guiones de arranque sin un intérprete de comandos, por ejemplo).

--with-curses: Esto provoca que Bash se enlace con la librería curses en lugar de la librería por defecto, termcap, que se está convirtiendo en obsoleta.

No es estrictamente necesario enlazar bash con libncurses (podría, por el momento, enlazarse con una librería estática termcap, y no pasaría nada porque, de todas formas, instalaremos de nuevo Bash en el capítulo 6, donde usaremos libncurses), pero es una buena forma de comprobar que el paquete ncurses se ha instalado correctamente. Si no es así, podrías tener problemas más adelante en este capítulo, cuando instales el paquete texinfo. Ese paquete necesita ncurses y no se puede utilizar termcap en ese caso.

ln -sf bash sh: Esta orden crea el enlace simbólico sh, que apunta a bash. Muchos guiones se ejecutan utilizando 'sh' (invocándole mediante #!/bin/sh como primera línea del guión) lo que invoca un modo especial de bash. Bash se comportará entonces (de manera tan similar como sea posible) como el intérprete de órdenes Bourne original.

Los && al final de cada línea provocan que el siguiente comando a ejecutar sólo lo haga si el anterior terminó devolviendo un valor de 0, que indica éxito. Si todos estos comandos se copian en el intérprete de órdenes, es importante asegurarse de que, si ./configure falla, make no será ejecutado e, igualmente, si make falla, entonces make install no se ejecutará, y así sucesivamente.

Contenido de bash-2.05a

Dependencias

Para instalar Bash-2.05a se necesita lo siguiente:


bash: bash, sh
binutils: ar, as, ld, ranlib, size
diffutils: cmp
fileutils: chmod, cp, install, ln, ls, mkdir, mv, rm
gcc: cc, cc1, collect2, cpp0, gcc
grep: egrep, grep
make: make
gawk: awk
sed: sed
sh-utils: basename, echo, expr, hostname, sleep, uname
texinfo: install-info
textutils: cat, tr, uniq