Estimation du temps de construction: 3 minutes Estimation de l'espace disque requis: 20 MB |
Avant d'installer Bash, vous devez vérifier que votre distribution a les fichiers /usr/lib/libcurses.a et /usr/lib/libncurses.a présents. Si votre distribution est un système LFS, tous les fichiers seront présents si vous suivez les instructions du livre que vous êtes en train de lire précisement.
Si les deux fichiers sont manquants, vous devez installer le package de développement de ncurses. Ce package est souvent dénommé ncurses-dev. Si ce package est déjà installé, ou si vous venez de l'installer, vérifiez à nouveau la présence des deux fichiers. Souvent, le fichier libcurses.a est (encore) manquant. S'il l'est, alors créez libcurses.a comme un lien symbolique en exécutant les commandes suivantes en tant qu'utilisateur root:
ln -s libncurses.a /usr/lib/libcurses.a |
Maintenant nous pouvons continuer. Installez Bash en exécutant les commandes suivantes:
./configure --enable-static-link \ --prefix=$LFS/usr --bindir=$LFS/bin --with-curses && make && make install && ln -sf bash $LFS/bin/sh |
Si le make install se termine avec quelque chose du style
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)
cela veut dire probablement que vous utilisez une distribution Debian et que vous avez une ancienne version du package texinfo. Cette erreur n'est pas gênante outre mesure : les pages d'info seront installées quand vous recompilerez bash dynamiquement au chapître 6, vous pouvez donc l'ignorer.
Lorsque nous l'avons testé avec la dernière distribution de Debian, les deux dernières commandes ont été exécutées car le processus d'installation n'a pas retourné de valeurs supérieures à 0. Mais vous feriez bien de vérifier si vous avez le lien symbolique $LFS/bin/sh dans votre partition LFS. Si vous ne l'avez pas, lancez les deux dernières commandes manuellement.
--enable-static-link: Cette option permet au Bash d'être lié statiquement
--prefix=$LFS/usr: Cette option installe tous les fichiers Bash dans le répertoire $LFS/usr, qui devient alors le répertoire /usr lors d'un chroot ou d'un reboot dans LFS.
--bindir=$LFS/bin: Ceci installe les fichiers executables dans $LFS/bin. Nous faisons ceci pour que bash soit dans /bin, et non pas dans /usr/bin. Une des raisons d'être: /usr devrait être dans une partition différente et, avant d'être montée vous aurez besoin de bash (il serait difficile d'exécuter les scripts au boot sans un shell de disponible).
--with-curses: Ceci permet à Bash d'être lié à la bibliothèque curses plutôt qu'à la bibliothèque termcap par défaut, laquelle devient obsolète.
Il n'est pas nécessaire au sens strict que le bash statique soit lié à libncurses (il peut être lié à la bibliothèque statique termcap dans un premier temps car nous réinstallerons Bash dans le chapître 6 de toute façon, où là nous utiliserons libncurses), cependant c'est un bon test pour être sûr que le package ncurses a été correctement installé. S'il ne l'a pas été, vous aurez quelques problèmes plus loin dans ce chapître lorsqu'il s'agira d'installer le package Texinfo. Ce package requiert ncurses et termcap ne peut plus alors être utilisé.
ln -sf bash $LFS/bin/sh: Cette commande crée le lien symbolique sh qui pointe sur bash. La plupart des scripts se lance eux-même via 'sh' (par #!/bin/sh en première ligne du script) qui invoque un mode spécial de bash. Bash ce comportera alors (aussi fidèlement que possible) comme le Bourne shell original.
Les caractères && à la fin de chaque ligne permettent de n'exécuter la prochaine commande que si la commande précédente existe et retourne 0 indiquant qu'elle s'est exécutée sans erreur. Dans ce cas, toutes les commandes sont copiées&collées dans le shell, il est important de s'assurer que si ./configure échoue, make ne sera pas exécuté et, de ce fait, si make échoue, alors make install ne doit pas être exécuté, et ainsi de suite.
bash, sh (lien vers bash) et bashbug
Bash est le Bourne-Again SHell, un interpréteur de commandes très largement répandu sur les systèmes Unix. Bash est un programme qui lit depuis l'entrée standard, le clavier. L'utilisateur tape quelque chose et le programme évaluera ce qu'il a tapé et fera quelque chose avec, comme lancer un programme.
bashbug est un shell de script afin d'aider l'utilisateur à composer et à expédier par courrier électronique sous un format standard les rapports de bogues concernant bash.
sh est un lien symbolique vers le programme bash. Quand bash est invoqué en tant que sh, il essaye de simuler le comportement du démarrage des versions historiques de sh aussi similairement que possible, tout en restant conforme au standard POSIX aussi.
Bash-2.05a nécessite que les programmes suivants soient installés:
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