2.2. Prérequis du système hôte

2.2.1. Matériel

Les éditeurs de LFS recommandent d'avoir un CPU avec au moins 4 cœurs et un système avec au moins 8 Go de mémoire. Les systèmes plus vieux qui n'atteignent pas ces prérequis fonctionneront quand même mais le temps de construction des paquets sera bien plus long que ce qui est documenté.

2.2.2. Logiciel

Votre système hôte doit contenir les logiciels suivants dans la version minimum indiquée. Cela ne devrait pas être un problème pour la plupart des distributions modernes de Linux. Notez également que certaines distributions placeront les headers des logiciels dans des paquets distincts, ayant souvent la forme suivante :« <nom-du-paquet>-devel » ou « <nom-du-paquet>-dev ». Assurez-vous de les installer 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 doit être un lien symbolique ou matériel vers bash)

  • Binutils-2.13.1 (les versions ultérieures à 2.40 ne sont pas recommandées car elles n'ont pas été testées)

  • Bison-2.7 (/usr/bin/yacc doit être un lien vers bison ou un petit script qui exécute bison)

  • Coreutils-6.9

  • Diffutils-2.8.1

  • Findutils-4.2.31

  • Gawk-4.0.1 (/usr/bin/awk doit être un lien vers gawk)

  • GCC-5.1, y compris le compilateur C++, g++ (les versions ultérieures à 12.2.0 ne sont pas recommandées, car elles n'ont pas été testées). Les bibliothèques standards C et C++ (avec les headers) doivent également être présentes pour que le compilateur C++ puisse construire les programmes hébergés

  • Grep-2.5.1a

  • Gzip-1.3.12

  • Noyau Linux-3.2

    La raison pour laquelle cette version du noyau est requise est que nous spécifions cette version lors de la construction de glibc dans Chapitre 5 et Chapitre 8, en suivant les recommandations des développeurs.

    Si le noyau hôte est plus ancien que le 3.2, vous devez le remplacer avec une version plus récente. Il existe deux méthodes de remplacement. Dans un premier temps, vérifiez si votre distribution Linux fournit un paquet pour le noyau 3.2 ou pour un noyau plus récent. Si c'est le cas, vous pouvez l'installer. Si votre distribution ne propose pas de paquet correspondant pour le noyau, ou si vous préférez ne pas l'installer, vous pouvez compiler le noyau vous-même. Les instructions pour la compilation du noyau et la configuration du chargeur d’amorçage (en supposant que le système hôte utilise GRUB) sont disponibles au Chapitre 10.

  • M4-1.4.10

  • Make-4.0

  • Patch-2.5.4

  • Perl-5.8.8

  • Python-3.4

  • Sed-4.1.5

  • Tar-1.22

  • Texinfo-4.7

  • Xz-5.0.0

[Important]

Important

Remarque : les liens symboliques mentionnés ci-dessus sont nécessaires pour construire un système LFS en utilisant les instructions contenues dans ce livre. Les liens symboliques qui renvoient vers d'autres logiciels (comme dash, mawk, etc.) peuvent fonctionner, mais ils n'ont pas été testés, ou bien ne sont pas pris en charge par l'équipe de développement LFS. Il est possible que ces liens nécessitent soit de vous écarter des instructions du livre, soit d’apporter des correctifs supplémentaires à certains paquets.

Pour vérifier que votre système hôte possède toutes les versions nécessaires et peut compiler des programmes, exécutez la commande suivante :

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

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
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`
python3 --version
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1  # texinfo version
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