Linux From Scratch: Version 20020515 | ||
---|---|---|
Prev | Chapter 6. Installation des logiciels de base du système | Next |
Estimation du temps de construction: 46 minutes Estimation de l'espace disque requis: 350 MB |
Avant d'installer glibc, vous devez vous positionner dans le répertoire glibc-2.2.5 et y déballer glibc-linuxthreads, et non pas dans /usr/src comme vous le feriez normalement.
Ce package est connu pour avoir un mauvais fonctionnement si vous avez changé ses paramètres d'optimisation par défaut (incluant les options -march et mcpu). Glibc se comporte mieux sans. Donc, si vous avez défini des variables d'environnement qui écrasent les optimisations par défaut, comme CFLAGS et CXXFLAGS, nous vous recommendons de les annuler ou de les modifier lors de la construction de Glibc. Vous avez été prévenu.
De même, ne donnez pas l'option --enable-kernel au script de configuration. C'est connu pour générer des segmentation faults lorsque des packages comme fileutils, make et tar sont liés avec lui.
Généralement, compiler Glibc de n'importe quel autre façon que ce que suggère ce livre, impose un risque très important sur votre système.
Installez Glibc en lançant les commandes suivantes:
mknod -m 0666 /dev/null c 1 3 && touch /etc/ld.so.conf && cp malloc/Makefile malloc/Makefile.backup && sed 's%\$(PERL)%/usr/bin/perl%' \ malloc/Makefile.backup > malloc/Makefile && cp login/Makefile login/Makefile.backup && sed 's/root/0/' login/Makefile.backup > login/Makefile && mkdir ../glibc-build && cd ../glibc-build && ../glibc-2.2.5/configure --prefix=/usr \ --enable-add-ons --libexecdir=/usr/bin && echo "cross-compiling = no" > configparms && make && make install && make localedata/install-locales && exec /bin/bash --login |
Une alternative à l'exécution de make localedata/install-locales est de n'installer que les locales dont vous avez besoin ou que vous voulez. Ca se fait en exécutant la commande localdef. Vous trouverez des informations à ce sujet dans le fichier INSTALL de l'arborescence de glibc-2.2.5. Le programme localedef assume que le répertoire /usr/lib/locale existe, donc vous avez besoin de le créer auparavant.
Durant l'étape de configuration vous allez voir ces avertissements:
configure: warning: *** These auxiliary programs are missing or too old: msgfmt *** some features will be disabled. *** Check the INSTALL file for required versions.
The missing msgfmt (from the gettext package which we will install later in this chapter) won't cause any problems. msgfmt is used to generate the binary translation files that are used to make your system talk in a different language. Because these translation files have already been generated for you, there is no need for msgfmt. You'd only need msgfmt if you change the translation source files (the *.po files in the po subdirectory) which\ would require you to re-generate the binary files.
Le msgfmt manquant (du package gettext que nous installerons plus tard dans ce chapitre) ne gène en rien. Le fichier que msgfmt aurait voulu créer est déjà pré-construit, il ne nous manque donc rien. Vous en aurez seulement besoin si vous faites des changemenents dans les fichiers sources (les fichiers *.po situés dans le répertoire po) qui vous imposeraient de recompiler les binaires.
mknod -m 0666 /dev/null c 1 3: Glibc a besoin d'un périphérique null pour compiler correctement. Tous les autres périphériques seront créés dans la prochaine section.
touch /etc/ld.so.conf Une des étapes finales de l'installation de Glibc est d'exécuter ldconfig afin de mettre à jour le cache du chargeur dynamique. Si le fichier n'existe pas, l'installation échouera retournant que le fichier ne peut être lu, donc nous avons simplement créé un fichier vide (avec ce fichier vide, Glibc utilisera par défaut /lib et usr/lib, ce qui est satisfaisant).
sed 's%\$(PERL)%/usr/bin/perl%' malloc/Makefile.backup > malloc/Makefile: Cette commande sed remplace dans malloc/Makefile.backup toutes les occurences de $(PERL) en /usr/bin/perl. La sortie est alors écrite sur le fichier original malloc/Makefile.in qui est utilisé durant la configuration. Ceci est fait parce que Glibc ne peut détecter automatiquement perl puisqu'il n'a pas encore été installé.
sed 's/root/0' login/Makefile.backup > login/Makefile: Cette commande sed remplace toutes les occurences du mot root dans le fichier login/Makefile.backup par 0. Glibc n'étant pas encore installé sur le système LFS, les noms d'utilisateur ne peuvent pas encore être remplacés par leur numéros d'identifiant. Donc, nous remplaçons le nom d'utilisateur root par l'identifiant de root, qui est 0.
--enable-add-ons: Permet l'utilisation des linuxthreads que nous installons avec Glibc.
--libexecdir=/usr/bin: Cela force l'installation du programme pt_chown dans /usr/bin directory.
echo "cross-compiling = no" > configparms: Nous faisons ceci parce que nous créons seulement notre propre système. La cross-compilation est utilisée pour construire un package pour un Apple Power PC sur un système Intel. La raison pour laquelle Glibc pense que nous faisons de la cross-compilation est qu'il ne peut compiler un programme de test pour s'en apercevoir, donc il est par défaut en cross-compilation. Compiler le programme de test échoue car Glibc n'a pas encore été installé.
exec /bin/bash: Cette commande va démarrer un nouveau shell bash qui va remplacer l'actuel. Cela suprime le message "I have no name!" de l'invite de commande qui est dû à l'incapacité de bash à faire correspondre un id utilisateur avec un nom utilisateur (qui est dû au fait que Glibc n'est pas installé).
catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump et zic
catchsegv peut être utilisé pour créer une trace de la pile lorsqu'un programme s'interrompt avec une erreur 'segmentation fault'.
gencat génère des catalogues de messages.
getconf affiche les valeurs de configuration du système pour les variables spécifiques aux systèmes de fichiers.
getent récupère des entrées d'une base de données administrative.
glibcbug crée un rapport de bug sur glibc et l'envoie par courrier électronique à l'adresse email pour les bugs.
iconv réalise des conversions de jeux de caractères.
iconvconfig crée un fichier de configuration chargé rapidement pour le module iconv.
ldconfig crée un cache des bibliothèques dynamiques pour l'éditeur de liens dynamique
ldd affiche les bibliothèques partagées requis par chaque programme ou bibliothèque partagée spécifié sur la ligne de commande.
Aucune description actuellement disponible.
locale est un programme Perl indiquant au compilateur d'autoriser (ou non) l'utilisation des variables locales POSIX pour les opérations intégrées.
localedef compile les spécifications pour locale.
mtrace affiche les chemin 'multicast' d'une source à un récepteur (une requête des traces IP).
nscd est un démon procurant un cache pour les requêtes DNS les plus courantes.
nscd_nischeck vérifie si un mode de sécurité est nécessaire pour les recherches NIS+.
pcprofiledump affiche l'information généré par 'PC profiling'.
pt_chown indique l'utilisateur, le groupe et les permissions d'accès au terminal ***** sets the owner, group and access permission of the slave pseudo terminal corresponding to the master pseudo terminal passed on file descriptor `3'. This is the helper program for the `grantpt' function. It is not intended to be run directly from the command line.
rpcgen génère le code C pour implémenter le protocole RPC.
rpcinfo fait un appel RPC vers un serveur RPC.
sln crée le lien symbolique entre une source et sa destination. C'est lié statiquement, sans nécessiter de lien dynamique. Donc sln est utilé pour créer des liens symboliques avec des bibliothèques dynamiques is pour quelque raison que ce soit, le système de liens dynamiques n'était pas fonctionnel.
sprof lit et affiche les données d'objets partagés profilés.
tzselect questionne l'utilisateur sur sa position géographique courante et affiche la description de fuseau horaire résultante sur la sortie standard.
xtrace trace l'exécution de programmes en affichant la fonction actuellement exécutée.
zdump est le dumper du fuseau horaire.
zic est le compilateur de fuseau horaire.
ld.so, libBrokenLocale.[a,so], libBrokenLocale_p.a, libSegFault.so, libanl.[a,so], libanl_p.a, libbsd-compat.a, libc.[a,so], libc_nonshared.a, libc_p.a, libcrypt.[a,so], libcrypt_p.a, libdl.[a,so], libdl_p.a, libg.a, libieee.a, libm.[a,so], libm_p.a, libmcheck.a, libmemusage.so, libnsl.a, libnsl_p.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libpthread_p.a, libresolv.[a,so], libresolv_p.a, librpcsvc.a, librpcsvc_p.a, librt.[a,so], librt_p.a, libthread_db.so, libutil.[a,so] and libutil_p.a
ld.so est le programme d'aide pour les exécutables utilisant des librairies partagées.
Utilisé par des logiciels, tels que Mozilla, pour résoudres les locales manquantes.
libSegFault est un gestionnaire pour le signal 'segmentation fault'. Il essaie de capturer ces signaux.
libanl est une bibliothèque de recherche de 'asynchronous name'.
Aucune description actuellement disponible.
Ces fichiers constituent la principale bibliothèque C. Celle-ci est une collection de fonctions couramment utilisées dans les programmes. Cela évite au développeur d'écrire ses propres fonctions pour toutes sortes de tâches. Les plus communes telles que l'affichage d'une chaîne de caractères à l'écran sont déjà présentes et à disposition du programmeur.
La bibliothèque C (comme presque toutes les bibliothèques) est disponible en deux versions : dynamique et statique. En résumé lorsqu'un programme utilise une bibliothèque C statique, le code de cette bibliothèque est copié dans l'exécutable. Lorsqu'un programme utilise une bibliothèque dynamique, cet exécutable ne contient pas le code de la bibliothèque, mais une routine qui charge la fonction de la bibliothèque au moment où le programme l'utilise. Cela réduit d'une façon significative la taille du programme. La documentation fourni avec la bibliothèque C décrit ce mécanisme plus en détails, il est trop compliqué de l'expliquer ici en une ou deux lignes.
libcrypt est la bibliothèque de cryptographie.
Aucune description actuellement disponible.
Aucune description actuellement disponible.
Aucune description actuellement disponible.
libm is the mathematical library.
Aucune description actuellement disponible.
Aucune description actuellement disponible.
Aucune description actuellement disponible.
Aucune description actuellement disponible.
Aucune description actuellement disponible.
Aucune description actuellement disponible.
Aucune description actuellement disponible.
Aucune description actuellement disponible.
Aucune description actuellement disponible.
Aucune description actuellement disponible.
Aucune description actuellement disponible.
Glibc-2.2.5 nécessite que les programmes suivants soient installés:
bash: sh
binutils: ar, as, ld, ranlib, readelf
diffutils: cmp
fileutils: chmod, cp, install, ln, mknod, mv, mkdir, rm, touch
gcc: cc, cc1, collect2, cpp, gcc
grep: egrep, grep
gzip: gzip
make: make
gawk: gawk
sed: sed
sh-utils: date, expr, hostname, pwd, uname
texinfo: install-info, makeinfo
textutils: cat, cut, sort, tr