Comme vous vous préparez à remplacer la bibliothèque de base sur laquelle de nombreux programmes reposent, vous pouvez aisément imaginer que divers problèmes peuvent survenir.
Dans mon cas, tout fonctionnait jusqu'au moment où j'ai tapé make install. A la moitié du processus d'installation, j'ai reçu un message d'erreur m'indiquant que la commande rm ne pouvait fonctionner, et j'ai découvert que toutes les commandes comme cp, ls, mv, ln, tar, etc ne fonctionnaient plus ; toutes me répondaient qu'elles ne trouvaient plus les parties de la bibliothèque qui leur étaient nécessaires (NDT : j'ai eu aussi ce petit soucis, toutefois dans un cas plus trivial ;-)).
Mais il existe une solution. Vous pouvez, lors de la compilation d'un programme, forcer l'inclusion des fonctions de la bibliothèque à l'intérieur du programme, de telle sorte qu'il n'ait plus à les rechercher à l'intérieur.
Pour cette raison, dans ce chapitre, nous allons compiler des versions statiques de tous les utilitaires dont nous avons besoin.
Chargez la toute dernière version depuis ftp.gnu.org/gnu/binutils ; à la date de rédaction de ce guide, le numéro de la version la plus récente était 2.14.
Ouvrez le paquetage :
tar xIvf binutils-2.14.tar.bz2
.
Changez de répertoire :
cd binutils-2.14
.
Configurez les makefiles :
./configure
.
Compilez :
make
.
Installez avec :
make install
.
Si quelque chose se déroule mal durant la compilation de binutils, en rapport avec gettext (indiqué par des erreurs comme : « référence à lib_intl non déclarée » ou quelque chose d'approchant) installez la nouvelle version, disponible à ftp.gnu.org/gnu/gettext.
Si cela ne suffit pas, essayez de désactiver le support du langage natif en utilisant :
./configure --no-nls
.
Il n'est pas nécessaire de compiler une version statique de binutils, bien que cela ne cause aucun problème, mais j'ai rencontré de nombreux systèmes fonctionnant avec de très vieilles versions et eu des erreurs presque à chaque fois aussi je pense qu'il est utile de le mentionner ici.
La commande make règle l'ensemble de la compilation des sources, appelant gcc et tous les autres programmes nécessaire à la compilation. Comme il est possible que vous soyez contraint à compiler quelque chose si une erreur survient avec votre nouvelle glibc, c'est une bonne idée que make soit compilé de manière statique ; dans le cas contraire, il pourrait ne pas fonctionner si une erreur survient.
Téléchargez les sources depuis : ftp.gnu.org/gnu/make/ ; à la date de rédaction, la version est 3.80.
Déballez les sources :
tar xIvf make-3.80.tar.bz2
.
Changez de répertoire :
cd make-3.80
.
Prenez garde à compiler de manière statique :
export CFLAGS="-static -O2 -g"
.
Lancez le script de configuration :
./configure
Compilez :
make
.
Installez les binaires:
make install
.
Vérifiez :
make -v
Vous devez maintenant voir la dernière version installée. Sinon, recherchez les anciens fichiers binaires et remplacez les par des liens symboliques vers les nouvelles versions.
Félicitations ! Vous avez compilé un autre programme statique.
core-utils contient des commandes comme : cp, rm, ln, mv, etc. En cas d'erreur durant l'installation, c'est une nécessité absolue pour pouvoir espérer remonter le système, aussi des binaires statiques sont vraiment nécessaires ici.
De nouveau, téléchargez les sources depuis ftp.gnu.org/gnu/coreutils/ ; au moment de la rédaction, la version courante est la 5.0.
Dépaquetez les sources :
tar xIvf coreutils-5.0.tar.bz2
Changez de répertoire :
cd coreutils-5.0
Prenez garde au fait que les binaires doivent être liés statiquement :
export CFLAGS="-static -O2 -g"
Configurez le paquetage :
./configure
Compilez les binaires :
make
Et installez les :
make install
Vérifiez que la bonne version de core-utils est utilisée :
cp --version
. Vous devez obtenir un numéro de version correct, dans le cas contraire, supprimez les anciens binaires et remplacez les par des liens symboliques vers les nouveaux.
Maintenant que les binaires de ces outils de base sont des versions statiques, vous êtes sûr qu'il fonctionneront en cas de besoin.
Vous avez déjà utilisé GNU tar pour dépaqueter les programmes compilés et installés. Mais vous avez besoin de compiler un programme requis par glibc après un crash et, dans cette situation (expérience vécue) il est particulièrement utile de disposer d'un tar opérationnel pour dépaqueter les programmes manquants. Il nous faut également, avec tar, prendre garde à la compression bz2, qui n'est pas incluse dans la distribution normale des sources de tar.
Récupérez les sources de GNU tar sur ftp.gnu.org/gnu/tar ; à la date de rédaction, la dernière version est la 1.13.
Comme de multiples archives tar sont compressées avec bzip2, nous préférerons disposer du support intégré, plutôt que de devoir travailler avec des pipes ; il nous faut donc récupérer le patch à ftp://infogroep.be/pub/linux/lfs/lfs-packages/4.1/tar-1.13.patch.
Dépaquetez les sources :
tar xzvf tar-1.13.tar.gz
Copiez le patch dans le répertoire contenant les sources de tar
cp tar-1.13.patch tar-1.13/
Appliquez le :
patch -Np1 -i tar-1.13.patch
Posez les options du compilateur pour obtenir un binaire statique :
export CFLAGS="-static -O2 -g"
Nous sommes maintenant prêt pour la configuration :
./configure
La compilation :
make
Et enfin l'installation :
make install
Faites une dernière vérification pour vous assurer que la nouvelle version sera utilisée à partir de maintenant :
tar --version
. La version que vous venez d'installer doit apparaître, sinon, remplacez les anciens binaires par des liens symboliques vers les nouveaux.
Si vous avez des problèmes dans l'exécution de la commande make, essayez de désactiver le support du langage natif (nls : native-language support). Pour ce faire, utilisez la commande configure avec l'option
--disable-nls
Note : dans la nouvelle version de tar,
vous devez utiliser l'option -j
pour décompresser les
fichiers .bzip2, aussi plutôt que
tar xIvf anyfile.tar.bz2
vous devez maintenant utiliser
tar xjvf anyfile.tar.bz2
. J'ignore les raisons de ce changement, mais ça fonctionne bien.
Je préfère utiliser le shell bash ; si vous en utilisez un différent, assurez-vous d'avoir installé une version statique de celui-ci avant d'installer glibc.
Récupérez bash à : ftp.gnu.org/gnu/bash/. Téléchargez la version la plus récente que vous trouverez ; à la date de rédaction, celle-ci est la 2.05b.
Dépaquetez les sources :
tar xzvf bash-2.05b.tar.gz
créera un répertoire nommé
bash-2.05b
contenant toutes les
sources.
Déplacez-vous dans ce répertoire :
cd bash-2.05a
Configurez pour obtenir une version statique :
export CFLAGS="-static -O2 -g"
Configurez le makefile :
./configure
. Si vous désirez que votre bash possède certaine fonctionnalités spéciales, reportez-vous à la commande
./configure --help
pour la liste des options.
Compilez le tout :
make
Installez les binaires :
make install
. Ils seront installés dans le répertoire
/usr/local/bin/
.
Vérifiez qu'une autre version ne reste pas tapie
quelque part (comme dans ma Suse : /bin/
), en
copiant le fichier :
cp /usr/local/bin/bash /bin/
. Nous n'utilisons pas ici de lien symbolique car, tant lors du démarrage de la machine qu'au lancement de bash, des problèmes peuvent survenir avec les liens symboliques.
Vous avez maintenant installé une version statique de bash. C'est pour cette raison que le binaire est beaucoup plus volumineux qu'à l'accoutumée, mais il fonctionnera quelles que soient les circonstances.
Si vous préférez utiliser un autre shell, vous êtes libre de le faire, mais assurez-vous qu'il s'agit d'une version liée statiquement. N'hésitez pas à me communiquer la méthode pour construire une version statique du shell de votre choix ; il y a de grandes chances qu'elle soit reprise dans la prochaine révision de ce document.
Midnight Commander est un gestionnaire de fichiers très utile, apportant de nombreuses fonctionnalités intéressantes, comme la décompression directe des fichiers compressés, la copie, le déplacement de fichiers et d'autres commandes intégrées, ainsi qu'un éditeur.
Pour compiler ce logiciel, glib doit être installé ; cela est le cas dans certaines distributions. Si vous rencontrez une erreur lors de l'exécution de la commande make vous indiquant que ld ne peut pas trouver glib, vous devrez installer cette bibliothèque avant tout autre chose. Vous pouvez en trouver les sources à : ftp.gnome.org/pub/gnome/sources/glib/2.2/, et l'installation est directe .
Les étapes de la construction de Midnight Commander sont :
Récupérer les sources depuis http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/ ; à la date de rédaction, la version la plus récente est la 4.6.0.
Dépaqueter les sources :
tar xzvf mc-4.6.0.tar.gz
Se déplacer dans le répertoire nouvellement créé :
cd mc-4.6.0
Configurer :
./configure
Compiler :
make
Tout installer :
make install