Configurez un bon environnement de travail en créant deux
nouveaux fichiers de démarrage pour le shell bash.
En étant connecté en tant qu'utilisateur
clfs
, lancez la commande
suivante pour créer un nouveau
.bash_profile
:
cat > ~/.bash_profile << "EOF"
exec env -i HOME=${HOME} TERM=${TERM} PS1='\u:\w\$ ' /bin/bash
EOF
Lorsque vous êtes connecté en tant que
clfs
, le shell
initial est habituellement un shell de login qui lit
le fichier
/etc/profile
de l'hôte (contenant probablement
quelques configurations et variables d'environnement) et puis
.bash_profile
. La commande
exec env -i.../bin/bash dans le fichier
.bash_profile
remplace le shell en cours avec un
nouveau ayant un environnement complètement vide sauf pour les
variables HOME
, TERM
, et
PS1
. Ceci nous assure qu'aucune variable
d'environnement non souhaitée et potentiellement dangereuse, provenant
du système hôte, ne parvienne dans l'environnement de construction. La
technique utilisée ici réalise le but d'avoir un environnement
propre.
La nouvelle instance du shell est un shell
non-login, qui ne lit donc pas les fichiers
/etc/profile
ou
.bash_profile
, mais plutôt le fichier
.bashrc
file. Créez maintenant le fichier
.bashrc
:
cat > ~/.bashrc << "EOF"
set +h
umask 022
CLFS=/mnt/clfs
LC_ALL=POSIX
PATH=/cross-tools/bin:/bin:/usr/bin
export CLFS LC_ALL PATH
EOF
La commande set +h désactive la fonction de
hachage de bash. D'habitude, le hachage est une
fonctionnalité utile : bash utilise une table
de hachage pour se rappeler le chemin complet des fichiers exécutables
pour éviter d'avoir à chercher dans PATH
à chaque fois
qu'il doit trouver le même exécutable. Néanmoins, les nouveaux outils
devraient être utilisés dès leur installation. En désactivant la
fonction de hachage, le shell cherchera en permanence dans
PATH
lorsqu'un programme doit être exécuté. Ainsi, le
shell
trouvera les nouveaux outils compilés dans
/cross-tools
dès qu'ils sont
disponibles et sans se rappeler d'une version précédente du même
programme mais dans un autre emplacement.
Configurer le masque de création de fichier (umask) à 022 nous
assure que les nouveaux fichiers et répertoires créés sont modifiables
uniquement par leurs propriétaires mais lisibles et exécutables par
tout le monde (en supposant que les modes par défaut sont utilisés par
l'appel système open(2)
les nouveaux fichiers
finiront avec les droits 644 et les répertoires avec ceux 755).
La variable CLFS
devrait être configurée avec le
point de montage choisi.
La variable LC_ALL
contrôle la localisation de
certains programmes, faisant que leurs messages suivent les
conventions d'un pays spécifié. Si le système hôte utilise une version
de Glibc plus ancienne que la 2.2.4, avoir LC_ALL
initialisé à autre chose que “POSIX” ou
“C” (pendant ce chapitre) pourrait poser des problèmes si
vous quittez l'environnement chroot et souhaitez y retourner plus
tard. Initialiser LC_ALL
à “POSIX” ou
“C” (les deux sont équivalents) nous assure que tout
fonctionnera comme attendu dans l'environnement chroot.
En plaçant /cross-tools/bin
au début de PATH
,
le compilateur croisé construit dans Constructing Cross-Compile Tools sera choisi par le procéssus de
construction du système temporaire
avant tout programme installé sur l'hôte. Ceci, combiné avec la
désactivation du hachage, permet de s'assurer que vous utiliserez
les outils de compilation croisée pour construire le système temporaire dans /tools.
Enfin, pour avoir un environnement complètement préparé pour la construction des outils temporaires, chargez le profil de l'utilisateur tout juste créé :
source ~/.bash_profile