Configuración del entorno

Vamos a establecer un buen entorno de trabajo mediante la creación de dos nuevos ficheros de inicio para el intérprete de comandos bash. Mientras estás en el sistema como usuario lfs, ejecuta los siguientes comandos para crear un .bash_profile nuevo:

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF

Normalmente, cuando entras como usuario lfs el intérpre de comandos inicial es un intérprete de ingreso que lee /etc/profile de tu anfitrión (que posiblemente contenga algunos ajustes de variables de entorno) y luego lee .bash_profile. El comando exec env -i ... /bin/bash del último fichero sustituye el interprete de comandos en ejecución por uno nuevo con un entorno completamente vacio, excepto para las variables HOME, TERM y PS1. Esto asegura que en nuestro entorno de construcción no aparezcan variables de entorno indeseadas o dañinas procedentes del sistema anfitrión. La técnica aquí usada es algo extraña, pero consige el objetivo de forzar un entorno limpio.

La nueva instancia del intérprete comandos es un intérprete de no ingreso que no lee los ficheros /etc/profile o .bash_profile, pero en su lugar lee el fichero .bashrc. Crea ahora este último fichero:

cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH
EOF

El comando set +h desactiva la función de tablas de dispersión (hash) de bash. Normalmente, esta función es muy útil: bash usa una tabla de dispersión para recordar la ruta completa de los ejecutables, evitando búsquedas reiteradas en el PATH para encontrar el mismo binario. Sin embargo, nosotros queremos que las nuevas herramientas se utilicen tan pronto como las instalemos. Al desactivar esta característica, nuestros comandos “interactivos” (make, patch, sed, cp, etc) siempre usarán las versiones más nuevas durante el proceso de construcción.

Establecer la máscara de creación de ficheros a 022 nos asegura que los ficheros y directorios de nueva creación sólo pueden ser escritos por su propietario, pero legibles y ejecutables por cualquiera.

Por supuesto, la variable LFS deberás establecerla con el punto de montaje que hayas elegido.

La variable LC_ALL controla la localización de ciertos programas, haciendo que sus mensajes sigan las convenciones para un determinado país. Si tu sistema anfitrión utiliza una versión de Glibc anterior a la 2.2.4, tener LC_ALL establecida a algo diferente a “POSIX” o “C” durante este capítulo puede causar problemas si sales del entorno chroot e intentas regresar más tarde. Estableciendo LC_ALL a “POSIX” (o su equivalente “C”) nos aseguramos de que todo funcionará como se espera dentro del entorno chroot.

Añadimos /tools/bin al PATH para que, al avanzar en este capítulo, las herramientas que vamos instalando se vayan usando en el resto del proceso de construcción.

Finalmente, para tener todo preparado para construir nuestras herramientas temporales, carga el perfil recién creado:

source ~/.bash_profile