Linux From Scratch XXV: sysvinit, tar, texinfo, udev y vim

Una vez instalado Syslogd en mi anterior artículo, sigo con los demás paquetes. En este post terminamos de instalar los paquetes del capítulo 6 de Linux From Scratch. El próximo ya será más interesante. De momento, le toca el turno a Sysvinit. En este post me han parecido muy curiosos los tests de vim y la forma de compilar udev.

Instalando Sysvinit

El libro hace un par de modificaciones a este paquete antes de empezar a compilar. La primera es para cambiar el mensaje que el proceso init muestra al cambiar de runlevel. Personalmente me parece una tontería, pero lo he hecho para respetar las decisiones de los autores del libro. La segunda ya tiene más sentido. Es para evitar que instale dos programas que ya han sido instalados anteriormente por util-linux. El resto se hace como siempre, salvo por que no hace falta usar configure.

[~/lfs]$ sudo lfs sysvinit-2.88dsf
root:/# cd sources/
root:/sources# tar xvf sysvinit-2.88dsf.tar.bz2
root:/sources# cd sysvinit-2.88dsf
root:/sources/sysvinit-2.88dsf# sed -i 's@Sending processes@& configured via /etc/inittab@g' src/init.c
root:/sources/sysvinit-2.88dsf# sed -i -e 's/utmpdump wall/utmpdump/' \
>        -e '/= mountpoint/d' \
>        -e 's/mountpoint.1 wall.1//' src/Makefile
root:/sources/sysvinit-2.88dsf# make -C src
root:/sources/sysvinit-2.88dsf# make -C src install
root:/sources/sysvinit-2.88dsf# exit
[~/lfs]$ sudo lfsinst sysvinit-2.88dsf.txz

Instalando Tar

El paquete tar necesita corregir el problema de compatibilidad con glibc. La documentación se instala aparte. Los demás comandos son los de siempre. Es destacable también la variable FORCE_UNSAFE_CONFIGURE que se pone en el configure.

[~/lfs]$ sudo lfs tar-1.26
root:/# cd sources/
root:/sources# tar xvf tar-1.26.tar.bz2
root:/sources# cd tar-1.26
root:/sources/tar-1.26# sed -i -e '/gets is a/d' gnu/stdio.in.h
root:/sources/tar-1.26# FORCE_UNSAFE_CONFIGURE=1  \
> ./configure --prefix=/usr \
>             --bindir=/bin \
>             --libexecdir=/usr/sbin
root:/sources/tar-1.26# make
root:/sources/tar-1.26# make check
root:/sources/tar-1.26# make install
root:/sources/tar-1.26# make -C doc install-html docdir=/usr/share/doc/tar-1.26
root:/sources/tar-1.26# exit
[~/lfs]$ sudo lfsinst tar-1.26.txz

Instalando Texinfo

En el caso de texinfo hay que instalar aparte los programas específicos de tex. Además, también hay que reconstruir el menú de info por si algún paquete no lo ha actualizado correctamente. Por lo visto eso es algo que pasa con cierta frecuencia.

[~/lfs]$ sudo lfs texinfo-4.13a
root:/# cd sources/
root:/sources# tar xvf texinfo-4.13a.tar.gz
root:/sources# cd texinfo-4.13
root:/sources/texinfo-4.13# ./configure --prefix=/usr
root:/sources/texinfo-4.13# make
root:/sources/texinfo-4.13# make check
root:/sources/texinfo-4.13# make install
root:/sources/texinfo-4.13# make TEXMF=/usr/share/texmf install-tex
root:/sources/texinfo-4.13# cd /usr/share/info
root:/usr/share/info# rm -v dir
root:/usr/share/info# for f in *
> do install-info $f dir 2>/dev/null
> done
root:/usr/share/info# exit
[~/lfs]$ sudo lfsinst texinfo-4.13a.txz

Instalando Udev

Por fin un paquete interesante. 🙂 El paquete udev se instala a partir de systemd. El código fuente que hay que descomprimir en este caso es el de systemd. Luego hay que añadirle el paquete udev-lfs que es específico de LFS. Esto es así porque las últimas versiones de udev ya no vienen en su propio paquete, sino que ahora está integrado con systemd. Sin embargo, LFS todavía no instala systemd, así que tiene que sacar udev a partir de systemd. Una vez hecho esto, lanzamos la compilación a ver si hay más sorpresas.

[~/lfs]$ sudo lfs udev-188
root:/# cd sources/
root:/sources# tar xvf systemd-188.tar.xz
root:/sources# cd systemd-188
root:/sources/systemd-188# tar -xvf ../udev-lfs-188-3.tar.bz2
root:/sources/systemd-188# make -f udev-lfs-188/Makefile.lfs

...
LINK build/udevadm
gcc: error: build/udev-local.a: No such file or directory
gcc: error: build/udev-local.a: No such file or directory
make: *** [build/udevadm] Error 1
make: *** Waiting for unfinished jobs....

Pues sí que hay más sorpresas. 🙂 Nos ha dado errores al compilar. Por lo que veo aquí, es un problema de compilación paralela, así que la solución es compilar con un sólo hilo añadiéndole el parámetro -j1 a make. Si tenéis un sólo core seguramente no os habrá dado ningún problema. Para los que tenemos más de un core, al añadir este parámetro tardará un poco más. Una vez instalados los ficheros, lanzamos un script que sirve para configurar las reglas de udev. Lo demás es como siempre.

root:/sources/systemd-188# make -j1 -f udev-lfs-188/Makefile.lfs
root:/sources/systemd-188# make -f udev-lfs-188/Makefile.lfs install
root:/sources/systemd-188# bash udev-lfs-188/init-net-rules.sh
root:/sources/systemd-188# exit
[~/lfs]$ sudo lfsinst udev-188.txz

Instalando Vim

Por fin el último paquete. Se trata del editor vim. Este paquete es opcional. En lugar de vim se podría instalar cualquier otro editor para consola. El libro da instrucciones alternativas para instalar otros editores, pero yo he optado por éste. Lo importante es tener alguno para cuando tengamos que editar ficheros de configuración después de arrancar con LFS.

Para instalar vim, el primer paso es hacer un cambio para que el fichero de configuración esté en /etc. Por lo demás, empezamos a compilar como siempre hasta llegar a los tests.

[~/lfs]$ sudo lfs vim-7.3
root:/# cd sources/
root:/sources# tar xvf vim-7.3.tar.bz2
root:/sources# cd vim73/
root:/sources/vim73# echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
root:/sources/vim73# ./configure --prefix=/usr --enable-multibyte
root:/sources/vim73# make
root:/sources/vim73# make test

Los tests son bastante curiosos. Envían caracteres ANSI a la terminal y, como consecuencia, la terminal hace cosas raras. A mi me ha cambiado el tamaño de la ventana. 🙂 Además se ve cómo abren el vim y hacen cosas en él. Es gracioso verlos. De todos modos el último comando que he puesto hace que los tests fallen. La razón es, al igual que antes, por la compilación paralela. Al lanzar los tests en paralelo, interfieren unos con otros. La solución es la misma que antes: Usar el parámetro -j1 para make. Si no estáis usando compilación paralela es probable que no os falle.

root:/sources/vim73# make -j1 test
root:/sources/vim73# make install
root:/sources/vim73# ln -sv vim /usr/bin/vi
root:/sources/vim73# for L in  /usr/share/man/{,*/}man1/vim.1; do
>     ln -sv vim.1 $(dirname $L)/vi.1
> done
root:/sources/vim73# ln -sv ../vim/vim73/doc /usr/share/doc/vim-7.3
root:/sources/vim73# exit
[~/lfs]$ sudo lfsinst vim-7.3.txz

Ahora los test han pasado sin problemas. Además se ve lo que hacen de una forma más clara y ordenada. Una vez instalados los ficheros, los últimos pasos crean unos enlaces para poder usar vim con el nombre “vi” y para que el nombre del directorio que contiene la documentación siga las mismas convenciones que los demás paquetes.

Y con esto hemos terminado de instalar paquetes. En el próximo post haremos una serie de ajustes para continuar con la instalación de Linux From Scratch, pero se acabó el compilar paquetes por ahora.

EOF

Anuncios