Linux From Scratch (Parte 10 - Instalación del software básico del sistema)


Bzip2-1.0.6 
El paquete Bzip2 contiene programas para comprimir y descomprimir archivos. La compresión de archivos de texto con bzip2 produce un porcentaje de compresión mucho mejor que con el gzip tradicional.
Tiempo aproximado de compilación: less than 0.1 SBU
Tamaño de disco requerido: 2.3 MB

Entramos en el directorio:
cd bzip2-1.0.6
Aplicamos el parche:
patch -Np1 -i ../bzip2-1.0.6-install_docs-1.patch
El siguiente comando garantiza la instalación de enlaces simbólicos que son relativos:
sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
Nos aseguramos de que las páginas man estén instaladas en la ubicación correcta:
sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile
Preparamos el paquete para compilarlo:
make -f Makefile-libbz2_so
make clean
Compilamos:
make
Instalamos los programas:
make PREFIX=/usr install
Instalamos el binario bzip2 compartido en el directorio /bin, hacemos algunos enlaces simbólicos necesarios y limpiamos:
cp -v bzip2-shared /bin/bzip2
cp -av libbz2.so* /lib
ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
rm -v /usr/bin/{bunzip2,bzcat,bzip2}
ln -sv bzip2 /bin/bunzip2
ln -sv bzip2 /bin/bzcat
Salimos del directorio:
cd ..

Pkg-config-0.29.2
 
El paquete pkg-config contiene una herramienta para el paso de la ruta y/o rutas de bibliotecas incluyen la construcción de herramientas durante el configurar y realizar la ejecución de archivos.
Tiempo aproximado de compilación: 0.3 SBU
Tamaño de disco requerido: 28 MB
Descomprimimos el paquete:
tar xvf pkg-config-0.29.2.tar.gz
Entramos en el directorio:
cd pkg-config-0.29.2
Preparamos el paquete para compilar:
./configure --prefix=/usr              \
            --with-internal-glib       \
            --disable-host-tool        \
            --docdir=/usr/share/doc/pkg-config-0.29.2
Compilamos:
make
Realizamos las pruebas:
make check
Instalamos el paquete:
make install
Salimos del directorio:
cd ..

Ncurses-6.1

El paquete Ncurses contiene librerías para el manejo independiente del terminal de pantallas de caracteres.
Tiempo aproximado de compilación: 0.4 SBU
Tamaño de disco requerido: 42 MB
Entramos en el directorio que ya habíamos creado en una publicación anterior:
cd ncurses-6.1 
No instar una biblioteca estática que no está controlada por configure:
sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in
Preparamos el paquete para compilación:
./configure --prefix=/usr           \
            --mandir=/usr/share/man \
            --with-shared           \
            --without-debug         \
            --without-normal        \
            --enable-pc-files       \
            --enable-widec
Compilamos el paquete:
make
Este paquete tiene un conjunto de pruebas, pero solo se puede ejecutar después de que se haya instalado el paquete. Las pruebas residen en el directorio de /test. Puedes leer el archivo README en el directorio para más detalles.

Instalamos el paquete:
make install
Movemos las bibliotecas compartidas al directorio /lib, donde se espera que residan:
mv -v /usr/lib/libncursesw.so.6* /lib
Debido a que las bibliotecas se han movido, un enlace simbólico apunta a un archivo inexistente. Lo recreamos de nuevo:
ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.so
Muchas aplicaciones aún esperan que el enlazador sea capaz de encontrar bibliotecas Ncurses de caracteres no anchos. Haremos trampa en tales aplicaciones, para vincularlas con bibliotecas de caracteres anchos, por medio de enlaces simbólicos y secuencias de comandos del enlazador:
for lib in ncurses form panel menu ; do
    rm -vf                    /usr/lib/lib${lib}.so
    echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so
    ln -sfv ${lib}w.pc        /usr/lib/pkgconfig/${lib}.pc
done
Finalmente, nos aseguramos de que las aplicaciones antiguas que buscan -lcurses en tiempo de compilación todavía puedan compilarse:
rm -vf                     /usr/lib/libcursesw.so
echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
ln -sfv libncurses.so      /usr/lib/libcurses.so 
Si lo deseaa, instala la documentación de Ncurses:
mkdir -v       /usr/share/doc/ncurses-6.1
cp -v -R doc/* /usr/share/doc/ncurses-6.1 
NOTA: 
Las instrucciones anteriores no crean bibliotecas Ncurses de caracteres no anchos, ya que ningún paquete instalado compilando desde fuentes se vincularía con ellos en el tiempo de ejecución. Sin embargo, las únicas aplicaciones binarias conocidas que se vinculan con bibliotecas de Ncurses de caracteres no anchos requieren la versión 5. Si debe tener tales bibliotecas debido a alguna aplicación binaria solamente o para ser compatible con LSB, compile el paquete nuevamente con la siguiente comandos:
make distclean
./configure --prefix=/usr    \
            --with-shared    \
            --without-normal \
            --without-debug  \
            --without-cxx-binding \
            --with-abi-version=5
make sources libs
cp -av lib/lib*.so.5* /usr/lib
Salimos del directorio:
cd ..

Attr-2.4.47 
El paquete attr contiene utilidades para administrar los atributos extendidos en los objetos del sistema de archivos.
Tiempo aproximado de compilación: menos de 0.1 SBU
Tamaño de disco requerido: 3.3 MB

Descomprimimos el paquete:
tar -xvf attr-2.4.47.src.tar.gz
Entramos en el directorio:
cd attr-2.4.47
Modificamos el directorio de documentación para que sea un directorio versionado: 
sed -i -e 's|/@pkg_name@|&-@pkg_version@|' include/builddefs.in
Evitaremos la instalación de páginas de manual que ya fueron instaladas por el paquete de páginas man:
sed -i -e "/SUBDIRS/s|man[25]||g" man/Makefile 
Solucionamos un problema en los procedimientos de prueba causado por cambios en perl-5.26:
sed -i 's:{(:\\{(:' test/run
 Preparamos el paquete para compilarlo:
 ./configure --prefix=/usr \
            --bindir=/bin \
            --disable-static
Compilamos el paquete:
make
Las pruebas deben ejecutarse en un sistema de archivos que admita atributos extendidos, como los sistemas de archivos ext2, ext3 o ext4. También se sabe que las pruebas fallan si se ejecutan múltiples pruebas simultáneas (-j opción mayor que 1). Para probar los resultados, ejecutaremos:
make -j1 tests root-tests
Instalamos el paquete:
make install install-dev install-lib
chmod -v 755 /usr/lib/libattr.so
La biblioteca compartida debe moverse a /lib y, como resultado, se deberá volver a crear el archivo .so en /usr/lib:
mv -v /usr/lib/libattr.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libattr.so) /usr/lib/libattr.so 
Salimos del directorio:
cd ..

Acl-2.2.52
El paquete Acl contiene utilidades para administrar listas de control de acceso, que se utilizan para definir derechos de acceso discrecional más detallados para archivos y directorios. 
Tiempo aproximado de compilación: menos de 0.1 SBU
Tamaño de disco requerido: 4.9 MB
Descomprimimos el paquete: 
tar -xvf acl-2.2.52.src.tar.gz
Entramos en el directorio:
cd acl-2.2.52
Modificamos el directorio de documentación para que sea un directorio versionado:
sed -i -e 's|/@pkg_name@|&-@pkg_version@|' include/builddefs.in
Corregimos algunas pruebas rotas:
sed -i "s:| sed.*::g" test/{sbits-restore,cp,misc}.test
Solucionamos un problema en los procedimientos de prueba causado por cambios en perl-5.26:
sed -i 's/{(/\\{(/' test/run
Además, corregimos un error que causa getfacl -e a segfault en un nombre de grupo excesivamente largo:
sed -i -e "/TABS-1;/a if (x > (TABS-1)) x = (TABS-1);" \
    libacl/__acl_to_any_text.c
Ahora preparamos el paquete para copilarlo:
./configure --prefix=/usr    \
            --bindir=/bin    \
            --disable-static \
            --libexecdir=/usr/lib
Compilamos el paquete:
make
Las pruebas Acl deben ejecutarse en un sistema de archivos que admita controles de acceso después de que Coreutils se haya creado con las bibliotecas Acl. Si lo deseasemos, volveríamos a este paquete y ejecutaríamos las pruebas make -j1 después de que se haya construido Coreutils más adelante.

Instalamos el paquete:
make install install-dev install-lib
chmod -v 755 /usr/lib/libacl.so
La biblioteca compartida debe moverse a /lib y, como resultado, se deberá volver a crear el archivo .so en /usr/lib:
mv -v /usr/lib/libacl.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libacl.so) /usr/lib/libacl.so
Salimos del directorio:
cd ..

Libcap-2.25 

El paquete Libcap implementa las interfaces de espacio de usuario para las capacidades de POSIX 1003.1e disponibles en los kernels de Linux. Estas capacidades son una compartimentación del todo poderoso privilegios de root en un conjunto de privilegios distintos.


Tiempo aproximado de compilación: menos de 0.1 SBU
Tamaño de disco requerido: 1.3 MB
Descomprimimos el paquete:
tar -xvf libcap-2.25.tar.xz
Entramos en el directorio:
cd libcap-2.25
Evitamos que se instale una biblioteca estática:
sed -i '/install.*STALIBNAME/d' libcap/Makefile
Compilamos el paquete:
make 
Este paquete no incluye un banco de pruebas.
Instalamos el paquete:
make RAISE_SETFCAP=no lib=lib prefix=/usr install
chmod -v 755 /usr/lib/libcap.so 
La biblioteca compartida debe moverse a /lib y, como resultado, se deberá volver a crear el archivo .so en /usr/lib:
mv -v /usr/lib/libcap.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libcap.so) /usr/lib/libcap.so 
Salimos el directorio:
cd ..

Sed-4.5
 
El paquete de Sed contiene un editor de flujo.
Tiempo aproximado de compilación: 0.3 SBU
Tamaño de disco requerido: 26 MB 
Entramos en el directorio que ya hemos descomprimido anteriormente.
cd sed-4.5

Primero corrgimos un problema en el entorno LFS y eliminamos una prueba que falla:
sed -i 's/usr/tools/'                 build-aux/help2man
sed -i 's/testsuite.panic-tests.sh//' Makefile.in
sed -i 's/testsuite\/panic-tests.sh//' Makefile.in
Preparamos el paquete para su compilación:
./configure --prefix=/usr --bindir=/bin
Compilamos el paquete y generamos la documentación HTML:
make
make html
Para comprobar los resultados, ejecutaremos:
make check
Instalamos el paquete y su documentación:
make install
install -d -m755           /usr/share/doc/sed-4.5
install -m644 doc/sed.html /usr/share/doc/sed-4.5
Salimos del directorio:
cd ..

Shadow-4.6 

El paquete Shadow contiene programas para manejar contraseñas de una manera segura.
Tiempo aproximado de compilación: 0.2 SBU
Tamaño de disco requerido: 43 MB
Descomprimimos el paquete:
tar -xvf shadow-4.6.tar.xz 
Entramos en el directorio:
cd shadow-4.6
Si deseas aplicar el uso de contraseñas seguras, consulta http://www.linuxfromscratch.org/blfs/view/svn/postlfs/cracklib.html para instalar CrackLib antes de compilar Shadow. 
A continuación, agrega --with-libcrack al siguiente comando de configuración.
Suprime la instalación del programa y sus grupos de páginas de manual, pues Coreutils proporciona una versión mejor. También evita la instalación de páginas de manual que ya fueron instaladas por el paquete de páginas man:
sed -i 's/groups$(EXEEXT) //' src/Makefile.in
find man -name Makefile.in -exec sed -i 's/groups\.1 / /'   {} \;
find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
find man -name Makefile.in -exec sed -i 's/passwd\.5 / /'   {} \;
En lugar de utilizar el método crypt predeterminado, use el método más seguro SHA-512 de cifrado de contraseña, que también permite contraseñas de más de 8 caracteres. También es necesario cambiar la ubicación obsoleta /var/spool/mail para los buzones de usuario que Shadow utiliza de forma predeterminada en la ubicación /var/mail utilizada actualmente:
sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \
       -e 's@/var/spool/mail@/var/mail@' etc/login.defs 
Si eliges construir el soporte de Shadow con Cracklib, ejecuta lo siguiente:
sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs
Hacemos un pequeño cambio para que el primer número de grupo generado por useradd 1000:
sed -i 's/1000/999/' etc/useradd
Preparamos Shadow para la compilación:
./configure --sysconfdir=/etc --with-group-name-max-length=32
Compilamos el paquete:
make
Instalamos el paquete:
make install
Movemos un programa extraviado a su ubicación correcta:
mv -v /usr/bin/passwd /bin
Este paquete contiene utilidades para agregar, modificar y eliminar usuarios y grupos; establecer y cambiar sus contraseñas; y realizar otras tareas administrativas. Para obtener una explicación completa de lo que significa el ocultamiento de contraseña, consulte el archivo doc/HOWTO dentro del árbol de código fuente desempaquetado. Si usa el soporte de Shadow, tenga en cuenta que los programas que necesitan verificar contraseñas (administradores de pantallas, programas FTP, demonios Pop3, etc.) deben ser compatibles con Shadow. Es decir, deben poder trabajar con contraseñas ocultas.
Para habilitar contraseñas ocultas, ejecuta el siguiente comando:
pwconv
 Para habilitar contraseñas ocultas de grupos, ejecuta:
grpconv
La configuración de stock de Shadow para la utilidad useradd tiene algunas advertencias que necesitan alguna explicación. Primero, la acción predeterminada para la utilidad useradd es crear el usuario y un grupo del mismo nombre que el usuario. De manera predeterminada, los números de ID de usuario (UID) e ID de grupo (GID) comenzarán con 1000. Esto significa que si no pasa parámetros para usarradd, cada usuario será miembro de un grupo único en el sistema. Si este comportamiento no es deseable, deberá pasar el parámetro -g para usarradd. Los parámetros predeterminados se almacenan en el archivo /etc/default/useradd. Es posible que necesite modificar dos parámetros en este archivo para satisfacer sus necesidades particulares.

/etc/default/useradd Explicaciones de Parámetros

GROUP=1000
 
Este parámetro establece el comienzo de los números de grupo utilizados en el archivo /etc/group. Puedes modificarlo a cualquier cosa que desees. Ten en cuenta que useradd nunca volverá a utilizar un UID o GID. Si se usa el número identificado en este parámetro, usará el siguiente número disponible después de esto. Ten en cuenta también que si no tiene un grupo 1000 en su sistema la primera vez que usa useradd sin el parámetro -g, aparecerá un mensaje en la terminal que dice: useradd: GID 1000 desconocido. Pues ignorar esto, se usará el número de mensaje y grupo 1000. 
CREATE_MAIL_SPOOL=yes
Este parámetro hace que useradd cree un archivo de buzón para el usuario recién creado. useradd convertirá la propiedad del grupo de este archivo en el grupo de correo con permisos 0660. Si prefieres que estos archivos de buzón no sean creados por useradd, ejecuta el siguiente comando:
sed -i 's/yes/no/' /etc/default/useradd
Elige una contraseña para el usuario root y configúrela ejecutando:
passwd root
Salimos del directorio:
cd ..

Psmisc-23.1
El paquete Psmisc contiene programas para mostrar información sobre procesos en ejecución.  
Tiempo aproximado de compilación: menos de 0.1 SBU
Tamaño de disco requerido: 4.2 MB
Descomprimimos el paquete:
tar -xvf psmisc-23.1.tar.xz 
Entramos en el directorio:
cd psmisc-23.1
Preparamos el paquete para su compilación:
./configure --prefix=/usr
Compilamos el paquete:
make
Instalamos el paquete:
make install
Finalmente, movemos los programas killall y fuser a la ubicación especificada por el FHS:
mv -v /usr/bin/fuser   /bin
mv -v /usr/bin/killall /bin 
Salimos del directorio:
cd ..

Iana-Etc-2.30
 
El paquete Iana-Etc proporciona datos para servicios y protocolos de red.
Tiempo aproximado de compilación: menos de 0.1 SBU
Tamaño de disco requerido: 2.3 MB
Descomprimimos el paquete:
tar -xvf iana-etc-2.30.tar.bz2
Entramos en el directorio:
cd iana-etc-2.30


El siguiente comando convierte los datos brutos proporcionados por IANA en los formatos correctos para los archivos de datos /etc/protocols y /etc/services:
make
Instalamos el paquete:
make install
 Salimos del directorio:
cd ..

Bison-3.0.4 

El paquete Bison contiene un generador de analizadores sintácticos.
Tiempo aproximado de compilación: 0.3 SBU
Tamaño de disco requerido: 33 MB

Entramos en el directorio que anteriormente habíamos creado al descomprimir, en pasos anteriores:
cd bison-3.0.4
Preparamos el paquete para su compilación:
./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.0.4
Compilamos el paquete:
make
Existe una dependencia circular entre bison y flex con respecto a los testeos. Si lo deseas, después de instalar Flex mas adelante, las verificaciones de bison se pueden ejecutar con verificación de marca. Tres pruebas relacionadas con lalr1.cc fallan por razones desconocidas.

Instalamos el paquete:
make install
Salimos del directorio:
cd ..

Flex-2.6.4

El paquete Flex contiene una utilidad para generar programas que reconocen patrones en el texto.
Tiempo aproximado de compilación: 0.4 SBU
Tamaño de disco requerido: 33 MB

Descomprimimos el paquete:
tar -xvf flex-2.6.4.tar.gz
Entramos en el directorio:
cd flex-2.6.4
Primero, solucionamos un problema introducido con glibc-2.26:
sed -i "/math.h/a #include " src/flexdef.h
El procedimiento de compilación asume que el programa help2man está disponible para crear una página man a partir de la opción ejecutable --help. Esto no está presente, por lo que usamos una variable de entorno para omitir este proceso. 
Ahora, preparamos Flex para la compilación:
HELP2MAN=/tools/bin/true \
./configure --prefix=/usr --docdir=/usr/share/doc/flex-2.6.4 
Compilamos el paquete:
make
Para probar los resultados (alrededor de 0.5 SBU), ejecutamos:
make check 
Instalamos el paquete:
make install
Algunos programas aún no conocen flex e intentan encontrar a su predecesor lex. Para admitir esos programas, cree un enlace simbólico llamado lex que se ejecute en modo de emulación lex:
ln -sv flex /usr/bin/lex
Salimos del directorio:
cd .. 

Grep-3.1
 
El paquete Grep contiene programas para buscar archivos.
Tiempo aproximado de compilación: 0.4 SBU
Tamaño de disco requerido: 30 MB
Entramos en el directorio que ya habíamos creado en una compilación anterior:
cd grep-3.1
Preparamos el paquete para su compilación:
./configure --prefix=/usr --bindir=/bin
Compilamos el paquete:
make
Probamos los resultados:
make check
Instalamos el paquete:
make install
Salimos del directorio:
cd ..

Bash-4.4.18
 
El paquete Bash contiene el Bourne-Again SHell.
Tiempo aproximado de compilación: 2.0 SBU
Tamaño de disco requerido: 56 MB

Entramos en el directorio, que ya habíamos trabajado sobre él en una compilación anterior:
cd bash-4.4.18
Preparamos el paquete para su compilación:
./configure --prefix=/usr                       \
            --docdir=/usr/share/doc/bash-4.4.18 \
            --without-bash-malloc               \
            --with-installed-readline
Compilamos el paquete:
make
Para preparar las pruebas, asegúrese de que el usuario nobody pueda escribir en el árbol de fuentes:
chown -Rv nobody .
Ahora, ejecuta las pruebas como el usuario nobody:
su nobody -s /bin/bash -c "PATH=$PATH make tests"
Instala el paquete y mueve el ejecutable principal a /bin:
make install
mv -vf /usr/bin/bash /bin
Ejecuta el programa bash recién compilado (reemplazando el que se está ejecutando actualmente):
exec /bin/bash --login +h
Salimos del directorio:
cd ..
Y lo dejamos hasta ahí. 
En la próxima publicación, continuaremos con Libtool
(aún quedan muchos paquetes por configurar e instalar). 
RECUERDA HACER UNA COPIA DE SEGURIDAD EN TU MÁQUINA VIRTUAL!


Publicaciones populares

Activar tema Negro (gris oscuro) en Microsoft Office 2016/2019

Acerca de los mensajes de tipo... "Por favor no agreges a este usuario es un virus!"

Temas oficiales para Windows XP