Geschatte compileertijd: 1 SBU Geschatte benodigde diskruimte: 24 MB |
Voor je gaat proberen Bash te installeren, moet je controleren of zich in je distributie de bestanden /usr/lib/libcurses.a en /usr/lib/libncurses.a bevinden. Als je hostdistributie een LFS-systeem is, dan zullen alle bestanden aanwezig zijn als je de instructies in het boek die je nu aan het lezen bent exact hebt opgevolgd.
Als beide bestanden ontbreken, dan moet je het ncurses development package installeren. Dit package wordt vaak iets als ncurses-dev genoemd. Als dit package reeds is geļnstalleerd, of je hebt het net geļnstalleerd, controleer dan nogmaals op de twee bestanden. Vaak ontbreekt (nog) het bestand libcurses.a. Als dit zo is dan maak je libcurses.a aan als een symlink door uitvoering van de volgende opdrachten als gebruiker root:
ln -s libncurses.a /usr/lib/libcurses.a |
Nu kunnen we verdergaan. Installeer Bash door uitvoering van de volgende opdrachten:
./configure --enable-static-link \ --prefix=$LFS/static --with-curses && make && make install |
Als de make install fase eindigt met iets tussen de regels als dit:
install-info: unknown option `--dir-file=/mnt/lfs/usr/info/dir' usage: install-info [--version] [--help] [--debug] [--maxwidth=nnn] [--section regexp title] [--infodir=xxx] [--align=nnn] [--calign=nnn] [--quiet] [--menuentry=xxx] [--info-dir=xxx] [--keep-old] [--description=xxx] [--test] [--remove] [--] filename make[1]: *** [install] Error 1 make[1]: Leaving directory `/mnt/lfs/usr/src/bash-2.05a/doc' make: [install] Error 2 (ignored)
dan betekent dit waarschijnlijk dat je gebruik maakt van DEbian-2.2 (potato), en dat je een oude versie hebt van het texinfo package. Dit is geen ernstige foutmelding: de info pages zullen worden geļnstalleerd wanneer we bash dynamisch compileren in Hoofdstuk 6, dus je kunt het negeren. Er is gemeld dat de huidige release van Debian (3.0; ook bekend als Woody) dit probleem niet kent.
--enable-static-link: Deze configure optie zorgt dat bash statisch wordt gelinkt.
--prefix=$LFS/static: Deze configure optie installeert alle bestanden van Bash onder de $LFS/static directory, wat de /static directory wordt, wanneer in de chroot omgeving of gereboot in LFS.
--with-curses: Dit zorgt ervoor dat bash wordt gelinkt met de curses library in plaats van de standaard termcap library die verouderd raakt.
Het is niet persé nodig de statische bash te linken met libncurses (het kan voorlopig ook worden gelinkt met een statisch termcap omdat we Bash in Hoofdstuk 6 toch opnieuw zullen installeren, waarbij we gebruik zullen gaan maken van libncurses), maar het is een goede test om erachter te komen of het ncurses package goed is geļnstalleerd. Zo niet, dan zul je later in dit hoofdstuk problemen ondervinden wanneer je het Texinfo package installeert. Voor dat package is ncurses nodig, en termcap kan hierbij niet betrouwbaar worden gebruikt.
De &&'s aan het einde van elke regel zorgen dat de volgende opdracht alleen wordt uitgevoerd als de voorgaande opdracht eindigt met een returnwaarde 0 succes aanduidend. In geval al deze opdrachten onder de shell worden gekopieerd en geplakt, dan is het van belang je te verzekeren dat als .configure mislukt, make niet wordt uitgevoerd en evenzo, als make mislukt dat make install niet wordt uitgevoerd, enzovoort.
Als laatste vergeleken met versie 2.05a.
bash is de Bourne-Again SHell, een op velerlei gebruikte opdrachtinterpreter onder Unix systemen. Het bashprogramma leest vanaf standaardinvoer, het toetsenbord. Een gebruiker typt iets en het programma zal wat is ingetikt evalueren en er iets mee doen, zoals het uitvoeren van een programma.
Als laatste vergeleken met versie 2.05a.
Bash: bash, sh
Binutils: ar, as, ld, ranlib, size
Diffutils: cmp
Fileutils: chmod, cp, install, ln, ls, mkdir, mv, rm
Gcc: cc, cc1, collect2, cpp0, gcc
Grep: egrep, grep
Make: make
Gawk: awk
Sed: sed
Sh-utils: basename, echo, expr, hostname, sleep, uname
Texinfo: install-info
Textutils: cat, tr, uniq