Linux From Scratch XIX: bison, procps, grep y readline

Empiezo un nuevo artículo sobre la compilación e instalación de Linux From Scratch instalando bison. En el anterior hemos terminado con M4 y, siguiendo las instrucciones del libro, el que sigue es bison, así que vamos a por él.

Instalando bison

Las instrucciones para instalar bison son bastante sencillas. Los primeros comandos son los que ya conocemos de siempre si estamos usando los scripts.

[~/lfs]$ sudo lfs bison-2.6.2
root:/# cd sources/
root:/sources# tar xvf bison-2.6.2.tar.xz
root:/sources# cd bison-2.6.2

El resto de los comandos no tienen ningún problema. Los tests pasan perfectamente y lo único destacable es una corrección que hay que hacer después de configurar el código fuente para activar el soporte de internacionalización. Los demás comandos son los de siempre.

root:/sources/bison-2.6.2# ./configure --prefix=/usr
root:/sources/bison-2.6.2# echo '#define YYENABLE_NLS 1' >> lib/config.h
root:/sources/bison-2.6.2# make
root:/sources/bison-2.6.2# make check
root:/sources/bison-2.6.2# make install
root:/sources/bison-2.6.2# exit
[~/lfs]$ sudo lfsinst bison-2.6.2.txz

Instalando procps

El siguiente paquete a instalar es procps. Este paquete requiere algunos parches antes de compilar, pero no tiene tests, así que se hace muy rápido.

[~/lfs]$ sudo lfs procps-3.2.8
root:/# cd sources/
root:/sources# tar xvf procps-3.2.8.tar.gz
root:/sources# cd procps-3.2.8

El primer parche es para evitar un mensaje de error relacionado con la velocidad del reloj. El segundo sirve para solucionar problemas con el unicode en el programa watch. El comando sed corrige un problema que se produce si se compila con make-3.82, que es el que estamos usando.

root:/sources/procps-3.2.8# patch -Np1 -i ../procps-3.2.8-fix_HZ_errors-1.patch
root:/sources/procps-3.2.8# patch -Np1 -i ../procps-3.2.8-watch_unicode-1.patch
root:/sources/procps-3.2.8# sed -i -e 's@\*/module.mk@proc/module.mk ps/module.mk@' Makefile

Una vez aplicados los parches ya podemos compilar, generar el paquete binario e instalar.

root:/sources/procps-3.2.8# make
root:/sources/procps-3.2.8# make install
root:/sources/procps-3.2.8# exit
[~/lfs]$ sudo lfsinst procps-3.2.8.txz

Instalando grep

El paquete grep es muy sencillo de instalar. Empezamos como siempre.

[~/lfs]$ sudo lfs grep-2.14
root:/# cd sources/
root:/sources# tar xvf grep-2.14.tar.xz
root:/sources# cd grep-2.14

A pesar de que tiene tests, éstos pasan sin problemas, así que voy a poner todos los comandos seguidos, porque no hay nada destacable que decir aquí.

root:/sources/grep-2.14# ./configure --prefix=/usr --bindir=/bin
root:/sources/grep-2.14# make
root:/sources/grep-2.14# make check
root:/sources/grep-2.14# make install
root:/sources/grep-2.14# exit
[~/lfs]$ sudo lfsinst grep-2.14.txz

Instalando readline

Este paquete requiere un poco más de trabajo. Empezamos con los comandos de siempre. Luego habrá que hacer varios ajustes.

[~/lfs]$ sudo lfs readline-6.2
root:/# cd sources/
root:/sources# tar xvf readline-6.2.tar.gz
root:/sources# cd readline-6.2

Ahora, antes de empezar a hacer nada, hay que aplicar algunas correcciones. Los dos comandos sed evitan que las librerías de readline que habíamos instalado con el sistema temporal den problemas al instalar las nuevas como consecuencia de un bug en ldconfig. También es necesario aplicar un parche para corregir otro bug, aunque el libro no especifica en qué consiste.

root:/sources/readline-6.2# sed -i '/MV.*old/d' Makefile.in
root:/sources/readline-6.2# sed -i '/{OLDSUFF}/c:' support/shlib-install
root:/sources/readline-6.2# patch -Np1 -i ../readline-6.2-fixes-1.patch

Ahora configuramos y compilamos el código fuente. El parámetro que se añade a make sirve para compilar usando ncurses.

root:/sources/readline-6.2# ./configure --prefix=/usr --libdir=/lib
root:/sources/readline-6.2# make SHLIB_LIBS=-lncurses

Este paquete no tiene tests, así que el siguiente paso es instalar. Para ello, después de hacer el make install hay que aplicar algunos ajustes. Primero movemos las librerías estáticas a /usr/lib. Luego, nos aseguramos de que los enlaces a las dinámicas queden también en /usr/lib.

root:/sources/readline-6.2# make install
root:/sources/readline-6.2# mv -v /lib/lib{readline,history}.a /usr/lib
root:/sources/readline-6.2# rm -v /lib/lib{readline,history}.so
root:/sources/readline-6.2# ln -sfv ../../lib/libreadline.so.6 /usr/lib/libreadline.so
root:/sources/readline-6.2# ln -sfv ../../lib/libhistory.so.6 /usr/lib/libhistory.so

Ya podemos instalar la documentación, que viene aparte.

root:/sources/readline-6.2# mkdir -v /usr/share/doc/readline-6.2
root:/sources/readline-6.2# install -v -m644 doc/*.{ps,pdf,html,dvi} \
>                  /usr/share/doc/readline-6.2

Y ahora, terminamos como siempre saliendo del chroot para que genere el paquete e instalándolo.

root:/sources/readline-6.2# exit
[~/lfs]$ sudo lfsinst readline-6.2.txz

Con esto hemos terminado por ahora. En el siguiente post toca compilar la versión definitiva del shell bash.

EOF

Anuncios