4.4. Configurazione dell'ambiente

Impostare un buon ambiente di lavoro creando due nuovi file di avvio per la shell bash. Mentre si è connessi come utente lfs, digitare il seguente comando per creare un nuovo file .bash_profile:

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

Quando si accede come utente lfs, la shell iniziale è una shell di login, che legge il file /etc/profile del proprio host (il quale probabilmente contiene alcune impostazioni e variabili ambiente), e quindi .bash_profile. Il comando exec env -i.../bin/bash nell'ultimo file sostituisce la shell in esecuzione con una nuova con un ambiente completamente vuoto, tranne per le variabili HOME, TERM, e PS1. Questo garantisce che nessuna variabile di ambiente non voluta e potenzialmente pericolosa si infiltri nel nostro sistema. La tecnica qui usata raggiunge l'obiettivo di forzare un ambiente pulito.

La nuova istanza della shell è una shell non-login, che non legge i file /etc/profile o .bash_profile, ma legge invece il file .bashrc. Creare ora il file .bashrc:

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

Il comando set +h disabilita la funzione hash della bash. Normalmente l'hashing è una caratteristica utile: bash usa una tabella hash per ricordare i percorsi completi dei file eseguibili ed evitare di cercare ripetutamente nel PATH per trovare lo stesso eseguibile. Tuttavia i nuovi tool dovrebbero essere utilizzati non appena vengono installati. Disattivando la funzione hash, la shell cercherà sempre nel PATH quando un programma sta per essere eseguito. In questo modo, la shell troverà i nuovi tool compilati in $LFS/tools non appena sono disponibili senza ricordare una precedente versione dello stesso programma in una posizione diversa.

Impostare la maschera di creazione file dell'utente (umask) a 022 garantisce che i nuovi file e directory creati siano scrivibili solo dal loro proprietario, ma leggibili ed eseguibili da chiunque (supponendo che i modi di default siano usati dall'open(2) system call, i nuovi file finiranno per avere i permessi con la modalità 644 e directory con la modalità 755).

La variabile LFS deve, ovviamente, venire impostata sul punto di mount che si sceglie.

La variabile LC_ALL controlla la localizzazione di certi programmi, facendo sì che i loro messaggi seguano le convenzioni di un paese specifico. Se il sistema host usa una versione di Glibc più vecchia della 2.2.4, avere LC_ALL impostata a qualcosa di diverso da “POSIX” o “C” (durante questo capitolo) può causare problemi se si esce dall'ambiente chroot e vi si vuole rientrare successivamente. Impostare LC_ALL a “POSIX” o “C” (i due sono equivalenti) essicura che ogni cosa funzioni come ci si aspetta nell'ambiente chroot.

Mettendo /tools/bin all'inizio nel PATH standard, tutti i programmi installati in Capitolo 5 vengono trovati dalla shell immediatamente dopo la loro installazione. Questo, combinato con la disabilitazione dell'hashing, limita il rischio che vecchi programmi dall'host vengano usati quando gli stessi programmi sono disponibili nell'ambiente del capitolo 5.

Infine, per avere l'ambiente pronto per costruire i tool temporanei, caricare il profilo creato:

source ~/.bash_profile