Linux From Scratch (Parte 10 - Instalación del software básico del sistema)
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.
Entramos en el directorio:
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.
Ncurses-6.1
El paquete Ncurses contiene librerías para el manejo independiente del terminal de pantallas de caracteres.
No instar una biblioteca estática que no está controlada por configure:
Instalamos el paquete:
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:
Attr-2.4.47
El paquete attr contiene utilidades para administrar los atributos extendidos en los objetos del sistema de archivos.
Acl-2.2.52
Instalamos el paquete:
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.
Instalamos el paquete:
Sed-4.5
El paquete de Sed contiene un editor de flujo.
Entramos en el directorio que ya hemos descomprimido anteriormente.
Primero corrgimos un problema en el entorno LFS y eliminamos una prueba que falla:
Preparamos el paquete para su compilación:
Shadow-4.6
El paquete Shadow contiene programas para manejar contraseñas de una manera segura.
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:
Para habilitar contraseñas ocultas, ejecuta el siguiente comando:
GROUP=1000
Psmisc-23.1
Iana-Etc-2.30
El paquete Iana-Etc proporciona datos para servicios y protocolos de red.
El siguiente comando convierte los datos brutos proporcionados por IANA en los formatos correctos para los archivos de datos /etc/protocols y /etc/services:
Bison-3.0.4
El paquete Bison contiene un generador de analizadores sintácticos.
Entramos en el directorio que anteriormente habíamos creado al descomprimir, en pasos anteriores:
Instalamos el paquete:
Flex-2.6.4
El paquete Flex contiene una utilidad para generar programas que reconocen patrones en el texto.
Descomprimimos el paquete:
Ahora, preparamos Flex para la compilación:
Grep-3.1
El paquete Grep contiene programas para buscar archivos.
Bash-4.4.18
El paquete Bash contiene el Bourne-Again SHell.
Entramos en el directorio, que ya habíamos trabajado sobre él en una compilación anterior:
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.6Aplicamos el parche:
patch -Np1 -i ../bzip2-1.0.6-install_docs-1.patchEl siguiente comando garantiza la instalación de enlaces simbólicos que son relativos:
sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' MakefileNos aseguramos de que las páginas man estén instaladas en la ubicación correcta:
sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" MakefilePreparamos el paquete para compilarlo:
make -f Makefile-libbz2_soCompilamos:
make clean
makeInstalamos los programas:
make PREFIX=/usr installInstalamos el binario bzip2 compartido en el directorio /bin, hacemos algunos enlaces simbólicos necesarios y limpiamos:
cp -v bzip2-shared /bin/bzip2Salimos del directorio:
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
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:
Entramos en el directorio:tar xvf pkg-config-0.29.2.tar.gz
cd pkg-config-0.29.2Preparamos el paquete para compilar:
./configure --prefix=/usr \Compilamos:
--with-internal-glib \
--disable-host-tool \
--docdir=/usr/share/doc/pkg-config-0.29.2
makeRealizamos las pruebas:
make checkInstalamos el paquete:
make installSalimos 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
sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.inPreparamos el paquete para compilación:
./configure --prefix=/usr \Compilamos el paquete:
--mandir=/usr/share/man \
--with-shared \
--without-debug \
--without-normal \
--enable-pc-files \
--enable-widec
makeEste 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 installMovemos las bibliotecas compartidas al directorio /lib, donde se espera que residan:
mv -v /usr/lib/libncursesw.so.6* /libDebido 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.soMuchas 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 ; doFinalmente, nos aseguramos de que las aplicaciones antiguas que buscan -lcurses en tiempo de compilación todavía puedan compilarse:
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
rm -vf /usr/lib/libcursesw.soSi lo deseaa, instala la documentación de Ncurses:
echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
ln -sfv libncurses.so /usr/lib/libcurses.so
mkdir -v /usr/share/doc/ncurses-6.1NOTA:
cp -v -R doc/* /usr/share/doc/ncurses-6.1
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:
Salimos del directorio: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
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:
Entramos en el directorio:tar -xvf attr-2.4.47.src.tar.gz
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.inEvitaremos 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/MakefileSolucionamos un problema en los procedimientos de prueba causado por cambios en perl-5.26:
sed -i 's:{(:\\{(:' test/runPreparamos el paquete para compilarlo:
./configure --prefix=/usr \Compilamos el paquete:
--bindir=/bin \
--disable-static
makeLas 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-testsInstalamos el paquete:
make install install-dev install-libLa biblioteca compartida debe moverse a /lib y, como resultado, se deberá volver a crear el archivo .so en /usr/lib:
chmod -v 755 /usr/lib/libattr.so
mv -v /usr/lib/libattr.so.* /libSalimos del directorio:
ln -sfv ../../lib/$(readlink /usr/lib/libattr.so) /usr/lib/libattr.so
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.gzEntramos en el directorio:
cd acl-2.2.52Modificamos el directorio de documentación para que sea un directorio versionado:
sed -i -e 's|/@pkg_name@|&-@pkg_version@|' include/builddefs.inCorregimos algunas pruebas rotas:
sed -i "s:| sed.*::g" test/{sbits-restore,cp,misc}.testSolucionamos un problema en los procedimientos de prueba causado por cambios en perl-5.26:
sed -i 's/{(/\\{(/' test/runAdemá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);" \Ahora preparamos el paquete para copilarlo:
libacl/__acl_to_any_text.c
./configure --prefix=/usr \Compilamos el paquete:
--bindir=/bin \
--disable-static \
--libexecdir=/usr/lib
makeLas 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-libLa biblioteca compartida debe moverse a /lib y, como resultado, se deberá volver a crear el archivo .so en /usr/lib:
chmod -v 755 /usr/lib/libacl.so
mv -v /usr/lib/libacl.so.* /libSalimos del directorio:
ln -sfv ../../lib/$(readlink /usr/lib/libacl.so) /usr/lib/libacl.so
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:
Evitamos que se instale una biblioteca estática:cd libcap-2.25
sed -i '/install.*STALIBNAME/d' libcap/MakefileCompilamos el paquete:
makeEste paquete no incluye un banco de pruebas.
Instalamos el paquete:
make RAISE_SETFCAP=no lib=lib prefix=/usr installLa biblioteca compartida debe moverse a /lib y, como resultado, se deberá volver a crear el archivo .so en /usr/lib:
chmod -v 755 /usr/lib/libcap.so
mv -v /usr/lib/libcap.so.* /libSalimos el directorio:
ln -sfv ../../lib/$(readlink /usr/lib/libcap.so) /usr/lib/libcap.so
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
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/help2mansed -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=/binCompilamos el paquete y generamos la documentación HTML:
makePara comprobar los resultados, ejecutaremos:
make html
make checkInstalamos el paquete y su documentación:
make installSalimos del directorio:
install -d -m755 /usr/share/doc/sed-4.5
install -m644 doc/sed.html /usr/share/doc/sed-4.5
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:
Entramos en el directorio:tar -xvf shadow-4.6.tar.xz
cd shadow-4.6
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.inEn 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:
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 / /' {} \;
sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \Si eliges construir el soporte de Shadow con Cracklib, ejecuta lo siguiente:
-e 's@/var/spool/mail@/var/mail@' etc/login.defs
sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defsHacemos un pequeño cambio para que el primer número de grupo generado por useradd 1000:
sed -i 's/1000/999/' etc/useraddPreparamos Shadow para la compilación:
./configure --sysconfdir=/etc --with-group-name-max-length=32Compilamos el paquete:
makeInstalamos el paquete:
make installMovemos un programa extraviado a su ubicación correcta:
mv -v /usr/bin/passwd /binEste 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:
pwconvPara habilitar contraseñas ocultas de grupos, ejecuta:
grpconvLa 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 rootSalimos 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:
Entramos en el directorio:tar -xvf psmisc-23.1.tar.xz
cd psmisc-23.1Preparamos el paquete para su compilación:
./configure --prefix=/usrCompilamos el paquete:
makeInstalamos el paquete:
make installFinalmente, movemos los programas killall y fuser a la ubicación especificada por el FHS:
mv -v /usr/bin/fuser /binSalimos del directorio:
mv -v /usr/bin/killall /bin
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:
Entramos en el directorio:tar -xvf iana-etc-2.30.tar.bz2
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:
makeInstalamos el paquete:
make installSalimos 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.4Preparamos el paquete para su compilación:
./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.0.4Compilamos el paquete:
makeExiste 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 installSalimos 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.gzEntramos en el directorio:
cd flex-2.6.4Primero, solucionamos un problema introducido con glibc-2.26:
sed -i "/math.h/a #includeEl 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." src/flexdef.h
Ahora, preparamos Flex para la compilación:
HELP2MAN=/tools/bin/true \Compilamos el paquete:
./configure --prefix=/usr --docdir=/usr/share/doc/flex-2.6.4
makePara probar los resultados (alrededor de 0.5 SBU), ejecutamos:
make checkInstalamos el paquete:
make installAlgunos 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/lexSalimos 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:
Preparamos el paquete para su compilación:cd grep-3.1
./configure --prefix=/usr --bindir=/binCompilamos el paquete:
makeProbamos los resultados:
make checkInstalamos el paquete:
make installSalimos 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.18Preparamos el paquete para su compilación:
./configure --prefix=/usr \Compilamos el paquete:
--docdir=/usr/share/doc/bash-4.4.18 \
--without-bash-malloc \
--with-installed-readline
makePara 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 +hSalimos 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).
(aún quedan muchos paquetes por configurar e instalar).
RECUERDA HACER UNA COPIA DE SEGURIDAD EN TU MÁQUINA VIRTUAL!