7.13. Création des liens essentiels

Certains programmes utilisent des chemins liés en dur à des programmes qui n'existent pas encore. Afin de satisfaire ces programmes, créez un certain nombre de liens symboliques qui seront remplacés par des fichiers réels tout au long du chapitre suivant après que le logiciel a été installé

ln -sv /tools/bin/{bash,cat,echo,grep,login,pwd,stty} ${CLFS}/bin
ln -sv /tools/bin/file ${CLFS}/usr/bin
ln -sv /tools/lib/libgcc_s.so{,.1} ${CLFS}/usr/lib
ln -sv /tools/lib32/libgcc_s.so{,.1} ${CLFS}/usr/lib32
ln -sv /tools/lib64/libgcc_s.so{,.1} ${CLFS}/usr/lib64
ln -sv /tools/lib/libstdc++.so{.6,} ${CLFS}/usr/lib
ln -sv /tools/lib32/libstdc++.so{.6,} ${CLFS}/usr/lib32
ln -sv /tools/lib64/libstdc++.so{.6,} ${CLFS}/usr/lib64
sed -e 's/tools/usr/' /tools/lib/libstdc++.la > ${CLFS}/usr/lib/libstdc++.la
ln -sv bash ${CLFS}/bin/sh
ln -sv /tools/sbin/init ${CLFS}/sbin
ln -sv /tools/etc/{login.{access,defs},limits} ${CLFS}/etc

Voici le but de chaque lien :

/bin/bash

Plusieurs scripts bash spécifient /bin/bash.

/bin/cat

Ce chemin est codé en dur dans le script de configuration de Glibc.

/bin/echo

Ceci satisfait l'un des tests de Glibc, qui s'attend à trouver /bin/echo.

/bin/grep

Cela évite une référence à /tools codée en dur dans Libtool.

/bin/login

Le programme agetty s'attend à trouver login dans /bin.

/bin/pwd

Certains scripts configure, en particulier dans Glibc, ont ce chemin codé en dur.

/bin/stty

Ce chemin est codé en dur dans Expect, donc il est requis pour que les suites de tests de Binutils et GCC réussissent.

/usr/bin/file

Les scripts configure de Binutils spécifient cette emplacement de la commande.

/usr/lib/libgcc_s.so{,.1}

Glibc requière cela pour que la bibliothèque pthreads fonctionne.

/usr/lib/libstdc++{,.6}

Cela est requis par plusieurs tests dans la suite de tests de Glibc, ainsi que pour le support de C++ dans GMP.

/usr/lib/libstdc++.la

Cela évite une référence à /tools qui se trouverait dans /usr/lib/libstdc++.la après l'installation de GCC.

/bin/sh

Plusieurs scripts shell codent en dur /bin/sh.

/sbin/init

Cela est où le noyau s'attend à trouver init.

/etc/{login.{access,defs},limits}

Ce sont les fichiers de configuration utilisés par Shadow et sont supposés se trouver dans /etc, pour les programmes comme login et su.

Historiquement, Linux maintient une liste des systèmes de fichiers montés dans le fichier /etc/mtab. Les noyaux modernes maintiennent cette liste en interne et l'exposent aux utilisateurs via le système de fichier /proc. Pour satisfaire les utilitaires qui s'attendent à trouver /etc/mtab, créez le lien symbolique suivant :

ln -sv /proc/self/mounts ${CLFS}/etc/mtab