Empiezo este nuevo post sobre la instalación de Linux From Scratch instalando bash. En el anterior lo hemos dejado todo preparado para ello tras compilar e instalar readline. Seguimos avanzando y nos acercamos ya a la mitad de los paquetes de LFS. Todavía queda trabajo por delante.
Instalando bash
Instalar bash en este punto es más fácil que en el sistema temporal. Hay que aplicar un parche y hacer un pequeño truco para pasar los tests, pero no hace falta desviarse de las instrucciones del libro.
[~/lfs]$ sudo lfs bash-4.2 root:/# cd sources root:/sources# tar xvf bash-4.2.tar.gz root:/sources# cd bash-4.2
Primero aplicamos el parche, que sirve para corregir varios bugs existentes. Luego configuramos y compilamos.
root:/sources/bash-4.2# patch -Np1 -i ../bash-4.2-fixes-8.patch root:/sources/bash-4.2# ./configure --prefix=/usr \ > --bindir=/bin \ > --htmldir=/usr/share/doc/bash-4.2 \ > --without-bash-malloc \ > --with-installed-readline root:/sources/bash-4.2# make
Ahora hay que pasar los tests. Los test se pasan con el usuario nobody, por lo que hay que asegurarse de que ese usuario es el propietario de los directorios de código fuente del bash.
root:/sources/bash-4.2# chown -Rv nobody . root:/sources/bash-4.2# su nobody -s /bin/bash -c "PATH=$PATH make tests"
Los tests han pasado sin ningún problema. Es momento de instalar los ficheros, crear el paquete e instalarlo.
root:/sources/bash-4.2# make install root:/sources/bash-4.2# exit [~/lfs]$ sudo lfsinst bash-4.2.txz
El libro da un paso más que consiste en lanzar el shell que acabamos de compilar para usarlo a partir de ahora. Este paso no es necesario si estáis usando los scripts, ya que la próxima vez que lanzéis el script usará el shell nuevo. Si no estáis usando los scripts y queréis seguir instalando el resto de los paquetes, el comando es el siguiente:
exec /bin/bash --login +h
Instalando libtool
Toca el turno de la instalación de libtool. Las instrucciones para instalar libtool son bastante estándar y no tienen nada de particular. Hay tests, pero pasan perfectamente, así que voy a poner todos los comandos en una sola vez.
[~/lfs]$ sudo lfs libtool-2.4.2 root:/# cd sources/ root:/sources# tar xvf libtool-2.4.2.tar.gz root:/sources# cd libtool-2.4.2 root:/sources/libtool-2.4.2# ./configure --prefix=/usr root:/sources/libtool-2.4.2# make root:/sources/libtool-2.4.2# make check root:/sources/libtool-2.4.2# make install root:/sources/libtool-2.4.2# exit [~/lfs]$ sudo lfsinst libtool-2.4.2.txz
Instalando GDBM
El paquete GDBM se instala de la misma forma que libtool. Lo único destacable es el parámetro –enable-libgdbm-compat que se le pasa al configure para generar la librería de compatibilidad que algunos programas necesitan. Aquí están todos los pasos:
[~/lfs]$ sudo lfs gdbm-1.10 root:/# cd sources/ root:/sources# tar xvf gdbm-1.10.tar.gz root:/sources# cd gdbm-1.10 root:/sources/gdbm-1.10# ./configure --prefix=/usr --enable-libgdbm-compat root:/sources/gdbm-1.10# make root:/sources/gdbm-1.10# make check root:/sources/gdbm-1.10# make install root:/sources/gdbm-1.10# exit [~/lfs]$ sudo lfsinst gdbm-1.10.txz
Instalando inetutils
Este paquete ya tiene un poco más de complejidad. Para empezar, usamos los comandos de siempre para entrar en el chroot con los scripts indicando el nombre del paquete a crear.
[~/lfs]$ sudo lfs inetutils-1.9.1 root:/# cd sources/ root:/sources# tar xvf inetutils-1.9.1.tar.gz root:/sources# cd inetutils-1.9.1
Primero, usamos sed para corregir un problema de compatibilidad con glibc-2.16.0, que es la versión de glibc que estamos usando. Una vez corregido, podemos compilar y pasar los tests.
root:/sources/inetutils-1.9.1# sed -i -e '/gets is a/d' lib/stdio.in.h root:/sources/inetutils-1.9.1# ./configure --prefix=/usr \ > --libexecdir=/usr/sbin \ > --localstatedir=/var \ > --disable-ifconfig \ > --disable-logger \ > --disable-syslogd \ > --disable-whois \ > --disable-servers root:/sources/inetutils-1.9.1# make root:/sources/inetutils-1.9.1# make check
Los tests han pasado correctamente, así que podemos instalar. La documentación se instala aparte. Los dos últimos comandos colocan algunos binarios en el directorio indicado por el estándar FHS.
root:/sources/inetutils-1.9.1# make install root:/sources/inetutils-1.9.1# make -C doc html root:/sources/inetutils-1.9.1# make -C doc install-html docdir=/usr/share/doc/inetutils-1.9.1 root:/sources/inetutils-1.9.1# mv -v /usr/bin/{hostname,ping,ping6} /bin root:/sources/inetutils-1.9.1# mv -v /usr/bin/traceroute /sbin
Y ahora estamos listos para salir del chroot e instalar el paquete generado.
root:/sources/inetutils-1.9.1# exit [~/lfs]$ sudo lfsinst inetutils-1.9.1.txz
Hemos terminado de momento. En el próximo post toca instalar nada menos que Perl.
EOF
Esto parece interminable my friend, y eso que aún no hay sección entorno gráfico….
saludos
Pues sí. 🙂 Hay nada menos que 55 paquetes a instalar para tener Linux From Scratch funcionando. Y son pocos. Fíjate en cuántos tienes en tu distro:
pacman -Q | wc -l
En mi caso son 933. Los de Linux From Scratch son sólo los básicos para tener un sistema que funciona sin X siquiera. Las X no se instalan en este libro, sino en el siguiente: Beyond Linux From Scratch. O sea que falta mucho por delante.
Es lo que tiene querer compilar un Linux desde cero. Ya sabes el refrán: El que algo quiere, algo le cuesta. No me rindo. Hay que llegar hasta el final como sea.
De todos modos, estoy pensando en publicar alguna cosa más para que no todo sea Linux From Scratch. Por lo menos mientras dure esta parte, que es más aburrida porque es todo igual.
Saludos y gracias por pasarte por aquí.
jaajajaj…. no hay problema, en tus post he encontrado cosas que ni siquiera sabía que existían… sigue adelante con lo que tu creas es importante, no te dejes llevar por lo que debería ir en tus post..
eso le da un toque personal a tu blog, al igual que el mío, no me dejo llevar por publicar por publicar…
saludos y fuerza.. que un largo camino hay por delante..