Votre système hôte doit contenir les logiciels suivants dans leur version minimum indiquée. Cela ne devrait pas poser de problème sur la plupart des distributions Linux modernes. Noter également que certaines distributions placeront les en-tête des logiciels dans un répertoire distinct des paquets, ayant souvent la forme « <nom-du-paquet>-devel » ou « <nom-du-paquet>-dev ». Assurez-vous qu'ils sont installés si votre distribution les fournit.
Il se peut que les versions antérieures des paquets logiciels listés fonctionnent mais elles n'ont pas été testées.
Bash-3.2 (/bin/sh devrait être un lien symbolique ou physique vers bash)
Binutils-2.17 (les versions supérieures à 2.27 ne sont pas recommandées car elles n'ont pas été testées)
Bison-2.3 (/usr/bin/yacc devrait être un lien vers bison ou un petit script qui exécute bison)
Bzip2-1.0.4
Coreutils-6.9
Diffutils-2.8.1
Findutils-4.2.31
Gawk-4.0.1 (/usr/bin/awk devrait être un lien vers gawk)
GCC-4.7, y compris le compilateur C++ g++ (les versions supérieures à 6.2.0 ne sont pas recommandées car elles n'ont pas été testées)
Sur certaines distributions, il nous a été signalé que des bibliothèques utilisées par gcc pouvaient être incohérentes, ce qui influe sur la construction de certains paquets de LFS. Pour le vérifier, cherchez dans /usr/lib ou dans /usr/lib64 libgmp.la, libmpfr.la, et libmpc.la. Elles devraient soit être toutes présentes ou toutes absentes, mais il ne devrait pas y en n'avoir qu'une ou deux. Si vous rencontrez le problème sur votre système, renommez ou effacez les fichiers .la, ou bien installez le paquet qui manque.
Glibc-2.11 (les versions supérieures à 2.24 ne sont pas recommandées car elles n'ont pas été testées)
Grep-2.5.1a
Gzip-1.3.12
Linux Kernel-2.6.32
Cette version du noyau est requise car nous spécifions cette version-là lors de la construction de glibc au chapitre 6, suivant ainsi une recommandation des développeurs. Elle est aussi exigée par Udev
Si le noyau hôte est plus ancien que le 2.6.32, vous devrez remplacer le noyau par une version plus à jour. Vous pouvez employer deux méthodes pour cela. Vous pouvez d'abord voir si votre distribution Linux fournit un paquet pour le noyau 2.6.32 ou supérieur. Si tel est le cas, vous pouvez l'installer. Si votre distribution n'offre pas un paquet acceptable pour le noyau, ou si vous préférez l'installer, vous pouvez compiler un noyau 2.6 vous-même. Les instructions pour la compilation du noyau et la configuration du chargeur de démarrage (en supposant que le système hôte utilise GRUB) sont au Chapitre 8.
M4-1.4.10
Make-3.81
Patch-2.5.4
Perl-5.8.8
Sed-4.1.5
Tar-1.22
Texinfo-4.7
Xz-5.0.0
Remarquez que les liens symboliques mentionnés ci-dessus sont nécessaires pour construire un système LFS en utilisant les instructions contenues à l'intérieur de ce livre. Il se peut que les liens symboliques pointent vers d'autres logiciels (comme dash, mawk, etc), mais ils n'ont pas été testés ou supportés par l'équipe de développement LFS et ils se peut qu'ils impliquent d'autres déviations par rapport aux instructions ou des correctifs supplémentaires pour certains paquets.
Pour voir si votre système hôte a toutes les versions nécessaires, exécutez ceci :
cat > version-check.sh << "EOF"
#!/bin/bash
# Simple script to list version numbers of critical development tools
export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
MYSH=$(readlink -f /bin/sh)
echo "/bin/sh -> $MYSH"
echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
unset MYSH
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1
if [ -h /usr/bin/yacc ]; then
echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
elif [ -x /usr/bin/yacc ]; then
echo yacc is `/usr/bin/yacc --version | head -n1`
else
echo "yacc not found"
fi
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -h /usr/bin/awk ]; then
echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
elif [ -x /usr/bin/awk ]; then
echo awk is `/usr/bin/awk --version | head -n1`
else
echo "awk not found"
fi
gcc --version | head -n1
g++ --version | head -n1
ldd --version | head -n1 | cut -d" " -f2- # glibc version
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1
xz --version | head -n1
echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c
if [ -x dummy ]
then echo "g++ compilation OK";
else echo "g++ compilation failed"; fi
rm -f dummy.c dummy
EOF
bash version-check.sh
Vérifiez la cohérence de certaines bibliothèques :
cat > library-check.sh << "EOF"
#!/bin/bash
for lib in lib{gmp,mpfr,mpc}.la; do
echo $lib: $(if find /usr/lib* -name $lib|
grep -q $lib;then :;else echo not;fi) found
done
unset lib
EOF
bash library-check.sh
Les fichiers identifiés par ce script devraient être soit tous présents soit tous absents, mais pas partiellement (un ou deux).