4.4. Sette opp miljøet

Sett opp et godt arbeidsmiljø ved å lage to nye oppstartsfiler for bash skallet. Mens du er logget inn som bruker lfs, utsted følgende kommando for å lage en ny .bash_profile:

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

Når du er pålogget som bruker lfs, eller når du bytter til lfs bruker med en su kommando med - alternativet, det første skallet er et login skall som leser /etc/profile til verten (som sannsynligvis inneholder noen innstillinger og miljøvariabler) og deretter .bash_profile. exec env -i.../bin/bash kommandoen i .bash_profile filen erstatter det kjørende skallet med et nytt et med et helt tomt miljø, bortsett fra HOME, TERM, og PS1 variabler. Dette sikrer at ingen uønskede og potensielt farlige miljøvariabler fra vertssystemet lekker inn i byggemiljøet.

Den nye instansen av skallet er et non-login skall, som ikke leser, og utfører, innholdet i /etc/profile eller .bash_profile filer, men heller leser og kjører .bashrc filen istedet. Opprett .bashrc filen nå:

cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/usr/bin
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
PATH=$LFS/tools/bin:$PATH
CONFIG_SITE=$LFS/usr/share/config.site
export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
EOF

Betydningen av innstillingene i .bashrc

set +h

set +h kommandoen slår av bash sin hashfunksjon. Hashing er vanligvis en nyttig funksjon—bash bruker en hashtabell for å huske banen til kjørbare filer for å unngå å søke i PATH gang på gang for å finne den samme kjørbare filen. Imidlertid bør de nye verktøyene brukes så snart de er installert. Ved å slå av hashfunksjonen, vil skallet alltid søke PATH når et program kjøres. Som sådan vil skallet finne de nylig kompilerte verktøyene i $LFS/tools/bin så snart de er tilgjengelig uten å huske en tidligere versjon av det samme programmet levert av vertsdistroen, i /usr/bin eller /bin.

umask 022

Å sette brukerfilopprettingsmasken (umask) til 022 sikrer at nye opprettede filer og mapper bare kan skrives av eieren, men er lesbar og kjørbar av alle (forutsatt at standardmoduser brukes av open(2) systemkall, vil nye filer ende opp med tillatelse modus 644 og mapper med modus 755).

LFS=/mnt/lfs

LFS variabelen skal settes til det valgte monteringenspunktet.

LC_ALL=POSIX

LC_ALL variabelen styrer lokaliseringen av visse programmer, slik at meldingene deres følger konvensjonene i et spesifisert land. Innstillingen LC_ALL til POSIX eller C (de to er likeverdige) sikrer at alt fungerer som forventet i chroot miljøet.

LFS_TGT=$(uname -m)-lfs-linux-gnu

The LFS_TGT variabel setter en ikkestandard, men kompatibel maskinbeskrivelse for bruk når du bygger vår krysskompiler og linker og når du krysskompiler vår midlertidige verktøykjede. Mer informasjon finnes i Verktøykjedens tekniske merknader.

PATH=/usr/bin

Mange moderne Linux distribusjoner har slått sammen /bin og /usr/bin. Når dette er tilfelle, standard PATH variabel burde settes til /usr/bin/ for Kapittel 6 miljøet. Når dette ikke er tilfelle, legger følgende linje /bin til stien.

if [ ! -L /bin ]; then PATH=/bin:$PATH; fi

Hvis /bin ikke er en symbolsk lenke, så må den legges til PATH variabelen.

PATH=$LFS/tools/bin:$PATH

Ved å putte $LFS/tools/bin foran standard PATH, krysskompilatoren installert i begynnelsen av Kapittel 5 blir plukket opp av skallet umiddelbart etter installasjonen. Dette, kombinert med å slå av hashing, begrenser risikoen for at kompilatoren fra verten brukes i stedet for krysskompilator.

CONFIG_SITE=$LFS/usr/share/config.site

I Kapittel 5 og Kapittel 6, hvis denne variabelen ikke er satt, configure skriptet kan forsøke å laste inn konfigurasjonselementer som er spesifikke for enkelte distribusjoner fra /usr/share/config.site på vertssystemet. Overstyr det for å forhindre potensiell forurensning fra verten.

export ...

Mens kommandoene ovenfor har satt noen variabler, for å gjøre dem synlige innenfor eventuelle underskall, eksporterer vi dem.

[Important]

Important

Flere kommersielle distribusjoner legger til en ikke dokumentert instansiering av /etc/bash.bashrc til initialisering av bash. Denne filen har potensial til å endre lfs brukerens miljø på måter som kan påvirke byggingen av kritiske LFS pakker. For å sikre at lfs brukerens miljø er rent, sjekk for tilstedeværelse av /etc/bash.bashrc og flytt den hvis den er tilstede Som root bruker, kjør:

[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE

Når lfs brukeren ikke lenger er nødvendig (i begynnelsen av Kapittel 7), kan du trygt gjenopprette /etc/bash.bashrc (hvis ønsket).

Legg merke til at LFS Bash pakken vi bygger i Section 8.35, “Bash-5.2.15” ikke er konfigurert til å laste eller kjøre /etc/bash.bashrc, så denne filen er ubrukelig på et fullført LFS system.

Til slutt, å ha miljøet fullt forberedt for å bygge midlertidige verktøy, tving bash skallet å lese den nye brukerprofilen:

source ~/.bash_profile