6.11. Bash-4.2

Le paquet Bash contient le shell Bourne-Again.

6.11.1. Installation de Bash

Le correctif suivant contient des mises à jour issues du mainteneur. Le mainteneur de Bash ne fait ces correctifs que pour corriger des problèmes sérieux :

patch -Np1 -i ../bash-4.2-branch_update-7.patch

Quand Bash est compilé de manière croisée, il ne peut notamment pas tester la présence de pipes (tubes) nommés. Si vous avez utilisé su pour devenir utilisateur non privilégié, cette combinaison aura pour conséquence que Bash se construira sans substitution de processus, ce qui va casser un des scripts de test de C++ dans eglibc. Ce qui suit empêche des problèmes futurs en sautant la vérification des tubes nommés et d'autres tests qui ne peuvent pas s'exécuter lors d'une compilation croisée ou qui ne s'exécutent pas correctement :

cat > config.cache << "EOF"
ac_cv_func_mmap_fixed_mapped=yes
ac_cv_func_strcoll_works=yes
ac_cv_func_working_mktime=yes
bash_cv_func_sigsetjmp=present
bash_cv_getcwd_malloc=yes
bash_cv_job_control_missing=present
bash_cv_printf_a_format=yes
bash_cv_sys_named_pipes=present
bash_cv_ulimit_maxfds=yes
bash_cv_under_sys_siglist=yes
bash_cv_unusable_rtsigs=no
gt_cv_int_divbyzero_sigfpe=yes
EOF

Préparez la compilation de Bash :

CC="${CC} ${BUILD64}" CXX="${CXX} ${BUILD64}" \
   ./configure --prefix=/tools \
   --build=${CLFS_HOST} --host=${CLFS_TARGET} \
   --without-bash-malloc --cache-file=config.cache

Voici la signification de l'option de configure :

--without-bash-malloc

Cette option désactive l'utilisation de la fonction d'allocation de mémoire de Bash (malloc) qui est connue pour provoquer des erreurs de segmentation. En désactivant cette option, Bash utilisera les fonctions malloc de Glibc qui sont plus stables.

Compilez le paquet :

make

Installez le paquet :

make install

Créez un lien pour les programmes qui utilisent sh comme shell :

ln -sv bash /tools/bin/sh

Les détails sur ce paquet sont disponibles dans Section 10.50.2, « Contenu de Bash. »