Support N°2 : Installation d`un système Debian Gnu/Linux
Transcription
Support N°2 : Installation d`un système Debian Gnu/Linux
Le système d'exploitation Debian Gnu/Linux C. HEMDANI Support N°2 : Installation d'un système Debian Gnu/Linux Table des matières 1 Installation de Debian 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 Support d'installation . . . . . . 1.1.1 Images pour l'architecture 1.1.2 Images pour l'architecture Boot sur le support . . . . . . . . Choix des langues et pays . . . . Paramètres du réseau . . . . . . Comptes root et utilisateur . . . Partitionnement les disques . . . Installation . . . . . . . . . . . . Fin d'installation et redémarrage . . . . . i386 . . x86_64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . : le gestionnaire de packages . . . . . . . . . . . Installation, mise à jour et suppression . . . . . . . . Requêtes dpkg . . . . . . . . . . . . . . . . . . . . . 2.3.1 Lister les packages . . . . . . . . . . . . . . . 2.3.2 Recherche d'un package contenant un chier 2.3.3 Lister le contenu d'un package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Debian Package 2.1 2.2 2.3 dpkg 3 Le gestionnaire APT 3.1 3.2 3.3 3.4 3.5 Principe . . . . . . . . . . . . Les dépôts de packages . . . . 3.2.1 Conguration . . . . . 3.2.2 Mise à jour de la base Mise à jour de la distribution Recherche et installation d'un Client graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . package individuel . . . . . . . . . . . 6 6 6 7 7 7 7 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 . 8 . 8 . 9 . 9 . 9 . 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Répertoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bibliothèques liées à un programme . . . . . . . . . . . . . . . Conguration du cache de l'éditeur de liens . . . . . . . . . . 5.4.1 Ajout de nouveaux chemins de bibliothèques partagées 5.4.2 Regénération du cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obtenir les sources . . . . . . . . . . . . . Pré-requis et dépendances . . . . . . . . . Conguration, compilation et installation Désinstallation . . . . . . . . . . . . . . . 5 Gestion des bibliothèques partagées 5.1 5.2 5.3 5.4 1 1 1 1 2 3 3 3 5 5 . . . . . . . 4 Installation depuis les sources 4.1 4.2 4.3 4.4 1 . . . . . . . . . . . . . . . . 10 10 10 10 11 11 11 11 12 12 12 12 Le système d'exploitation Debian Gnu/Linux C. HEMDANI Support N°2 : Installation d'un système Debian Gnu/Linux 1 Installation de Debian Dans cette section, on montre, étape par étape, comment installer une distribution Debian. Il s'agit de la dernière version stable, soit la Wheezy 7.7.0, à l'écriture de ce support. L'installation est eectuée en mode graphique. Pour les besoins de prises de copies d'écrans, Debian a été installée sur une machine virtuelle VirtualBox. VirtualBox est un produit qui n'est pas libre mais gratuit. Il est la propriété d'Oracle. 1.1 Support d'installation L'image ISO correspondant à une installation via un CD ou un DVD, peut être récupérée à partir du site de Debian : 1.1.1 Images pour l'architecture i386 Image CD : http://cdimage.debian.org/debian-cd/7.7.0/i386/iso-cd/debian-7.7.0-i386-CD-1.iso Image DVD : http://cdimage.debian.org/debian-cd/7.7.0/i386/iso-dvd/debian-7.7.0-i386-DVD-1.iso 1.1.2 Images pour l'architecture x86_64 Image CD : http://cdimage.debian.org/debian-cd/7.7.0/amd64/iso-cd/debian-7.7.0-amd64-CD-1.iso Image DVD : http://cdimage.debian.org/debian-cd/7.7.0/amd/iso-dvd/debian-7.7.0-amd64-DVD-1.iso Après récupération de l'image, if faudra la graver sur un CD ou un DVD. Pour illustrer l'installation de Debian, nous allons utiliser une image DVD, à savoir le chier debian-7.7.0-amd64-DVD-1.iso. 1.2 Boot sur le support Le démarrage à partir du lecteur DVD ache immédiatement le premier écran de l'installateur. 1 Figure 1 Démarrage de l'installation. Install: permet de lacer l'installation en mode texte, Graphic install: permet de la lancer en mode graphique, Advanced options:propose d'autres modes d'installation (expert, secourt ou automatique) et la possibilité d'installer un autre environnement de bureau autre que gnome (KDE, Xfce ou LXDE), Help: propose plusieurs pages d'aide activables au moyen des touches [F1] à [F10]. Pour notre illustration, on sélectionne Graphical install puis on tape sur la touche [Entrée]. 1.3 Choix des langues et pays Figure 2 Choix de la langue. 2 Trois écrans permettent de choisir : La langue utilisée dans le processus d'installation : dans notre cas, on choisit le français. La situation géographique : c'est utile car c'est ainsi que sont positionnées les variables locales : format de date, d'heure, encodage des caractères, formats numériques et monétaires, ... Dans notre cas, on choisit autre puis dans les trois prochains écrans, on choisit Afrique puis Algérie et enn fr_FR.UTF-8 pour l'encodage des caractères. Le type de clavier : dans notre cas, on choisit français (clavier azerty). Remarque 1 Sur l'écran de la gure 2 et les suivants, 1. la sélection d'un item peut se faire de diérentes manières : on se positionne sur lui au moyen des touches de navigation [Haut] et [Bas], ou de la souris, puis on tape sur la touche [Entrée], ou bien on clique sur le bouton Continuer, ou bien encore par un simple double-clic sur l'item. 2. On peut à tout moment revenir en arrière pour modier des choix eectués précédemment en cliquant sur le bouton Go Back ou Revenir en arrière. 1.4 Paramètres du réseau Les trois étapes suivantes concernent les informations réseau de base. Si l'installateur n'a pas réussi à congurer la carte réseau par DHCP, il demandera de saisir les informations de base : adresse IP, masque de sous réseau, passerelle par défaut, DNS. Puis, on doit saisir un nom d'hôte (le nom de la machine sur le réseau) et le nom du domaine. Si la machine n'appartient à aucun domaine, on laisse le champ vide. Dans notre cas, on choisit debian comme nom d'hôte et depinfo.to comme nom de domaine 1 . 1.5 Comptes root et utilisateur On doit maintenant saisir le mot de passe de l'administrateur (root ) de la machine. Celui-ci sera demandé deux fois pour conrmation. On doit veiller à ne pas le perdre car il n'y a aucun moyen de le retrouver. Debian prévient et peut même refuser un mot de passe s'il est trop simple. On doit ensuite créer au moins un simple utilisateur. Pour cela, on doit saisir le nom complet de la personne ; dans notre cas Étudiant en Master 1 RMSE, l'identiant (ou le nom de connexion) ; dans notre cas etudiant, et un mot de passe à saisir deux fois. 1.6 Partitionnement les disques Pour simplier, disons qu'on a le choix entre deux principales méthodes pour partitionner les disques : une méthode assistée (voire automatique) en utilisant le partitionnement classique, et une méthode manuelle. Dans le cas d'une nouvelle machine (disque vierge), la méthode assistée donne de bons résultats. Si on réinstalle le système, ou que l'on veut installer Debian sur une machine disposant déjà de partitions contenant d'autres systèmes ou données, il est vivement recommandé de passer par un partitionnement manuel (personnalisé). Si on choisit la première méthode, on accède à l'écran suivant. Pour les besoins de ce support, un espace (à taille dynamique) de 17,2 Go a été créé sous VirtualBox comme premier disque. C'est celui-ci qui va servir pour l'installation. 1. Pour les machines du département, le nom de domaine depinfo.to a été xé par le responsable du centre de calcul. 3 Figure 3 Schémas de partitionnements. L'étape suivante consiste à choisir le schéma de partitionnement : Soit une seule grosse partition dans laquelle on met tout (système, programmes, données). Tout sera mis dans la partition racine /. Soit deux partitions : une partition racine / qui contiendra le système et tous ses composants (programmes, chiers de conguration système, etc.), et une partition /home qui va contenir les données des utilisateurs. Pour un poste de travail (ou un PC personnel), c'est la méthode la plus pertinente : elle permet de réinstaller facilement un autre système (mise à jour ou réinstallation complète) sans casser les données personnelles : la nouvelle distribution ainsi installée pourra réutiliser la partition montée sur /home et ainsi récupérer les données. La troisième méthode propose de créer cinq partitions diérentes : la racine /, les données personnelles /home, les composants utilisateurs (programmes, bibliothèques, données partagées associées, etc.) /usr, le contenu variable /var, et les chiers temporaires /tmp. Ce choix est tout à fait pertinent sur un serveur. Les mails, informations DHCP, sites web, ... sont souvent stockés dans /var. Les mises à jour des divers programmes (services) sont dans /usr, etc. Ce schéma de partitionnement est quasi-parfait : tout est indépendant. Il devient bien plus simple ensuite de changer de disque, de migrer les données, d'étendre la taille des volumes, ... sans casser le reste. Pour notre l'installation de test, on utilisera la seconde méthode, la suite des opérations se base sur celui-ci. S'agissant d'une méthode semi-automatique, Debian indique les choix pour chacune des partitions. On constate la présence de trois partitions au lieu des deux proposées. Debian a analysé la taille mémoire de la machine et propose la création d'une zone de swap correspondant au meilleur choix possible. 4 Figure 4 Partitionnement automatique. L'outil de partitionnement propose de créer une seule partition primaire (n°1) pour la racine / et deux partitions logiques (n°5 pour le swap et n°6 pour le répertoire /home) au sein d'une partition étendue. Comme ce schéma de partitionnement convient à notre installation, on le valide. L'écran suivant donne un récapitulatif qu'on doit de nouveau valider. Remarque 2 Le partitionnement est suivi de l'écriture des systèmes de chiers sur les partitions concernées. Cette opération est identique au formatage sous Windows ; elle est destructive ! Une fois les changements validés, une barre de progression indique l'état d'avancement du partitionnement et de l'écriture des nouveaux systèmes de chiers. Debian va ensuite monter ces systèmes pour l'installation. 1.7 Installation L'installation se déroule en deux étapes principales : 1. Le système de base (noyau, utilitaires et bibliothèques) est installé sur le disque. 2. On choisit d'installer un ou plusieurs ensembles de logiciels (applications) prédénis et groupés par thèmes. Dans notre cas, on installe les utilitaires standards et l'environnement graphique (gnome par défaut). Ces étapes passées, l'installation commence. 1.8 Fin d'installation et redémarrage La dernière étape avant la n de l'installation est l'écriture du chargeur de démarrage (boot loader ). Il s'agit de l'installation de GRUB. C'est très simple ici car c'est le seul système installé. Il faut savoir que le chargeur de démarrage écrase celui précédemment installé, mais qu'on peut parfaitement utiliser grub pour démarrer n'importe quel système y compris Windobe (pardon, windows). Si tout va bien et que la carte graphique a été reconnue, on devrait arriver sur le gestionnaire de sessions qui attend une connexion. 5 Figure 5 Écran de connexion. 2 Debian Package 2.1 dpkg : le gestionnaire de packages La commande dpkg est chargée de l'installation, la création, la suppression et la gestion des packages Debian. Ces packages portent l'extension .deb. La base de données dpkg est placée dans /var/lib/dpkg. Les chiers qui y sont présents sont au format texte. Le chier /var/lib/dpkg/status contient l'intégralité des packages connus par dpkg avec leurs états. dpkg dispose d'une interface graphique, gdebi, qui permet d'éviter l'utilisation de la ligne de commande. 2.2 Installation, mise à jour et suppression L'option -i ou --install installe le ou les packages passés comme argument. Exemple 1 La commande # dpkg -i package . deb installera le package package.deb. Notons que dpkg ne gère pas seul les dépendances. S'il manque des dépendances, la commande le signalera. Dans ce cas, on doit installer les dépendances de la même manière avant d'installer le package désiré. On peut demander l'installation de tous les packages présents au sein d'une arborescence avec le paramètre -R (pour recursive ). Dans ce cas, on indique comme argument un nom de répertoire. Exemple 2 La commande # dpkg -R rep installera tous les packages présents dans le répertoire rep et ses sous-répertoires. La mise à jour s'eectue de la même manière que l'installation, avec le -i. Si on installe un package déjà présent, dpkg en eectue une mise à jour. La suppression d'un package s'eectue avec le paramètre -r (remove ). Là encore, c'est à nous de gérer les dépendances. Remarque 3 Pour la commande dpkg -r, on donne seulement le nom du package, sans le numéro de version, ni l'extension (.deb). 6 Avec l'option -r, dpkg ne supprime pas les chiers de conguration et ce, an d'éviter une reconguration de l'outil si on venait à le réinstaller. Pour tout supprimer, y compris ces chiers, on remplace le paramètre -r par -P (purge ). 2.3 Requêtes dpkg 2.3.1 Lister les packages On peut lister tous les packages Debian connus du système avec le paramètre -l ; soit : $ dpkg -l On peut aussi indiquer un motif particulier. Exemple 3 La commande $ dpkg -l " kernel *" achera la liste de tous les packages dont le nom commence par kernel. 2.3.2 Recherche d'un package contenant un chier Le paramètre -S suivi du nom d'un chier permet de retrouver le package d'origine. Exemple 4 $ dpkg -S / usr / bin / lex flex : / usr / bin / lex Le programme /usr/bin/lex a donc été installé à partir du package flex. 2.3.3 Lister le contenu d'un package Le paramètre -L liste le contenu du ou des packages indiqués. Exemple 5 La commande $ dpkg -L flex permet de lister tous les chiers installé à partir du package flex. 3 Le gestionnaire APT 3.1 Principe L'outil dpkg contrôle les dépendances des packages pour autoriser ou non leur installation, mais ne les gère pas. Autrement dit, si une dépendance sur un package est absente, il ne sera pas installé, sauf si la dépendance est résolue : soit en installant auparavant les packages manquants, soit en indiquant sur la même ligne les chemins vers ces mêmes packages. De même, lors d'une mise à niveau, il se pose un problème avec les chiers de conguration. Que faut-il en faire ? APT 2 permet de résoudre ces problèmes en gérant les dépendances à la place de l'administrateur. Au lieu de spécier un package (local ou distant), il prend en charge des dépôts de packages situés sur un CD, un DVD, dans un répertoire local, sur une source distante sur Internet (ftp ou http), ... Un dépôt contient un ensemble de packages qui dépendent soit les uns des autres, soit d'autres packages en provenance d'autres dépôts. APT peut gérer plusieurs dépôts, à divers endroits. Il se débrouille seul : lorsqu'on installe un package, il installe aussi ses dépendances (s'il les trouve). 2. Advanced Packaging Tool. 7 3.2 Les dépôts de packages 3.2.1 Conguration Les dépôts sont indiqués dans le chier /etc/apt/sources.list. Le chier suivant provient d'une installation Debian Wheezy. $ cat / etc / apt / sources . list deb deb deb deb deb http :// ftp . debian . org / debian / wheezy main contrib non - free http :// ftp . debian . org / debian / wheezy - updates main contrib non - free http :// ftp . debian . org / debian / wheezy - proposed - updates main contrib non - free http :// ftp . debian . org / debian / wheezy - backports main contrib non - free http :// security . debian . org / wheezy / updates main contrib non - free La syntaxe d'une ligne du chier sources.list est la suivante : deb uri distribution composant1 composant2 . . . uri est le chemin vers la racine du ou des dépôts. Ce peut être une URL de type http ou ftp, mais aussi un chemin local (file), un CD-Rom ou DVD-Rom (CDrom), un chemin ssh, ... distribution est, comme son nom l'indique, le nom de la distribution Debian. Ici c'est wheezy, mais il est possible de spécier d'autres versions de la distribution (etch, lenny, squeese, wheezy, jessie, ...) pour pouvoir récupérer des packages d'autres dépôts, plus récents par exemple. composant1 composant2 ... sont les noms des dépôts pour la distribution donnée. Le site http://ftp.debian.org/debian/dists contient les toutes dernières distributions ocielles et leurs composants. L'url complète d'accès au dépôt permet de reconstituer l'uri, la distribution et les composants, et vice versa. Exemple 6 La ligne deb http :// ftp . debian . org / debian / wheezy main contrib non - free correspond aux trois URLs : http :// ftp . debian . org / debian / dists / wheezy / main http :// ftp . debian . org / debian / dists / wheezy / contrib http :// ftp . debian . org / debian / dists / wheezy / non - free Si on explore l'une de ces URLs, par exemple main, on trouve une série de dossiers suxés en fonction de l'architecture. Les packages binaires pour une machine de type amd64 seront donc cherchés dans le répertoire binary-amd64 qui contient, non pas les packages eux mêmes, mais des chiers : Release : description du dépôt. Packages.gz : index des packages du dépôt, au format gzip. Packages.bz2 : la même chose au format bzip2. Où sont réellement les packages ? La réponse est dans les chiers Packages.gz et Packages.bz2. Voici un fragment de l'un d'eux, décrivant le package libc6 : Package : libc6 Source : eglibc Version : 2.13 -38+ deb7u6 Installed - Size : 9460 Maintainer : GNU Libc Maintainers < debian - glibc@lists . debian . org > Architecture : amd64 Replaces : libc6 - amd64 Provides : glibc -2.13 -1 Depends : libc - bin (= 2.13 -38+ deb7u6 ) , libgcc1 Suggests : glibc - doc , debconf | debconf -2.0 , locales Conflicts : prelink ( <= 0.0.20090311 -1) , tzdata ( < < 2007 k -1) , tzdata - etch Breaks : locales ( < < 2.13) , locales - all ( < < 2.13) , lsb - core ( <= 3.2 -27) , nscd ( < < 2.13) Description : Embedded GNU C Library : Shared libraries Multi - Arch : same 8 Homepage : http :// www . eglibc . org Description - md5 : 5089 b4da6684d7432ab618fb5b79cec5 Tag : implemented - in :: c , role :: shared - lib Section : libs Priority : required Filename : pool / main / e / eglibc / libc6_2 .13 -38+ deb7u6_amd64 . deb Size : 4214430 MD5sum : 9 b27368e31cdfd76a7c8b52c093f1f0a SHA1 : 3 ba181018445c4449456655b965fa389819dae9f SHA256 : df4b81ecd17ddefa3ba1268d64465fa2439ebf934dae180495040ff3d767c2a3 La ligne Filename indique que le chier est dans pool/main/e/eglibc/ depuis l'uri, donc accessible depuis l'URL http://ftp.debian.org/debian/pool/main/e/eglibc/. Les lignes Depends et Recommends, permettent à APT de résoudre les dépendances. 3.2.2 Mise à jour de la base Une fois les dépôts congurés, on doit mettre à jour la base de données locale de APT avec la commande : # apt - get update 3.3 Mise à jour de la distribution Une fois les dépôts à jour, on peut mettre à jour en une seule commande tous les packages installés sur la distribution au moyen de la commande : # apt - get upgrade APT vérie si des packages plus récents sont disponibles dans les dépôts. Il se base pour cela sur la base de données locale. Si elle n'est pas à jour, APT nous informe qu'un certain nombre de packages peuvent être mis à jour. On peut accepter ou refuser. Si on accepte, APT télécharge ces packages et leurs éventuelles dépendances, et les installe. Le processus peut être plus ou moins long selon le nombre de mises à jour et le type de support. Une autre possibilité est de faire une mise à jour profonde (ou mise à niveau). APT garde une certaine cohérence dans les packages lors de la mise à jour, notamment concernant la version de la distribution. On peut spécier plusieurs distributions Debian dans les dépôts. Mais même si une distribution est plus récente, un simple upgrade ne va pas transformer celle installée en la toute dernière. On peut demander à APT de forcer la mise à jour vers la nouvelle distribution avec la commande : # apt - get dist - upgrade 3.4 Recherche et installation d'un package individuel La commande $ apt - cache search <clé > permet de rechercher un package, par son nom ou sa description, au sein de la base de données locale APT. Exemple 7 La commande $ apt - cache search eclipse ache une longue liste de descriptions de packages ayant un rapport avec l'environnement de développement intégré eclipse. La commande # apt - get install <nom - package > installe le package <nom-package> et ses dépendances. Exemple 8 La commande # apt - get install byacc installe le package byacc (un générateur d'analyseurs syntaxiques ascendants). 9 3.5 Client graphique L'outil synaptic est un front-end : une interface graphique qui fait appel aux fonctions de toutes les opérations proposées par APT tout en étant très convivial. APT. Il permet Figure 6 L'outil synaptic. 4 Installation depuis les sources 4.1 Obtenir les sources Il n'est parfois pas possible d'obtenir un logiciel ou une bibliothèque depuis un package pour sa distribution. Dans ce cas, il reste la solution de compiler et d'installer soi-même le produit depuis les sources. Une archive source est souvent récupérée sur divers sites Internet. C'est une archive souvent compressée au format tgz (archive tar compressée avec gzip) ou tar.bz2 (archive tar compressée au format bzip2). Elle contient : le code source sous forme de chiers .c, .h, .cpp, ..., selon le langage, parfois un chier Makefile permettant d'automatiser la compilation du produit, souvent un chier configure permettant de générer le chier Makefile en fonction de l'installation et de diverses options. 4.2 Pré-requis et dépendances Pour compiler un logiciel, il faut respecter quelques pré-requis : présence de l'outil make, présence du ou des compilateurs nécessaires, notamment gcc, présence des dépendances : bibliothèques, interpréteurs, ... 4.3 Conguration, compilation et installation La procédure classique d'installation d'un logiciel à partir des sources suit souvent (mais pas nécessairement !) les étapes suivantes : 1. Décompresser l'archive par la commande $ tar zxvf <archive> # pour les archives d'extension .tgz ou .tar.gz ou bien $ tar jxvf <archive> # pour les archives d'extension .tar.bz2 La décompression doit créer un répertoire, disons rep, contenant tous les chiers du logiciel. 10 2. $ cd rep 3. Exécuter la commande $ ./configure qui analyse le système installé pour vérier la satisfaction des pré-requis et des dépendances avant de générer un chier Makefile qui décrit les processus de compilation, d'installation, de nettoyage, de désinstallation, ... et qui sera utilisé par l'outil make. 4. Lancer le processus de compilation par la commande $ make 5. Enn, si la compilation réussit, on peut installer le logiciel par la commande suivante qui doit être exécutée par le super-utilisateur (root ) : # make install 6. Après l'installation, on peut utiliser la commande suivante pour nettoyer le répertoire des sources ; i.e., supprimer tous les chiers générés par la compilation. $ make clean 4.4 Désinstallation La plupart des Makefile, en tout cas ceux générés par congure, permettent la désinstallation. Elle s'eectue par la commande $ make uninstall Remarque 4 Pour un logiciel particulier, les commandes de conguration, compilation, installation, ... peuvent ne pas être celles décrites ci-dessus. Il convient dans tous les cas, avant d'entamer le processus d'installation, de lire la documentation qui accompagne (en principe) toujours les sources : chiers Readme ou README, INSTALL, ... 5 Gestion des bibliothèques partagées 5.1 Principe Une bibliothèque partagée est un chier particulier qui contient une liste de fonctions, ou API, accessible à tout programme ayant besoin sans avoir à les ré-écrire. À l'opposé de la bibliothèque statique, le programme accède dynamiquement aux fonctions qui sont placées dans un chier à part. N programmes diérents peuvent accéder aux fonctions proposées par la bibliothèque. Les bibliothèques regroupent des fonctions propres à un domaine ou un ensemble de domaines cohérents : traitement d'images, du son, de l'accès à une base de données, ... Un ensemble de fonctions proposées par une ou plusieurs bibliothèques partagées forme une API. Un lien est établi entre le programme et une bibliothèque partagée lors de l'étape de l'édition des liens par l'éditeur de liens ld, lui-même appelé par le compilateur gcc avec l'option -l<lib>. Si un programme dépend d'une bibliothèque partagée et que celle-ci est absente, le programme ne pourra plus fonctionner. Sous Linux (et Unix en général) les bibliothèques partagées sont appelées des Shared Objects qui portent le suxe .so 5.2 Répertoires Les bibliothèques partagées sont par convention placées dans des répertoires appelés lib : /lib : bibliothèques systèmes de base, vitales pour le système, /usr/lib : bibliothèques utilisateur de base, non nécessaires au démarrage, /usr/local/lib : bibliothèques pour applications installées par l'utilisateur (souvent, à partir des sources), ... Remarque 5 La bibliothèque la plus importante du système est la bibliothèque C. Tous les programmes compilés sont liés à libc. Il sut de supprimer ce chier (une erreur de débutant !) pour faire tomber tout le système. 11 5.3 Bibliothèques liées à un programme La commande ldd permet de déterminer quelles sont les bibliothèques liées à un programme, et aussi si celles-ci sont présentes ou non. $ ldd / usr / bin / vi linux - vdso . so .1 = > (0 x00007fff781ff000 ) libtinfo . so .5 = > / lib / x86_64 - linux - gnu / libtinfo . so .5 (0 x00007f0475da1000 ) libselinux . so .1 = > / lib / x86_64 - linux - gnu / libselinux . so .1 (0 x00007f0475b81000 ) libacl . so .1 = > / lib / x86_64 - linux - gnu / libacl . so .1 (0 x00007f0475977000 ) libc . so .6 = > / lib / x86_64 - linux - gnu / libc . so .6 (0 x00007f04755eb000 ) libdl . so .2 = > / lib / x86_64 - linux - gnu / libdl . so .2 (0 x00007f04753e7000 ) / lib64 / ld - linux - x86 -64. so .2 (0 x00007f0475fe8000 ) libattr . so .1 = > / lib / x86_64 - linux - gnu / libattr . so .1 (0 x00007f04751e1000 ) 5.4 Conguration du cache de l'éditeur de liens L'édition des liens avec une bibliothèque partagée est dynamique et se fait au moment de l'exécution du programme par le système à l'aide de la bibliothèque ld-linux.so. L'exécutable fournit le nom des bibliothèques à lier à l'exécution, mais pas le chemin. Les fonctions de ld-linux.so déterminent en fonction de son nom, la bibliothèque à utiliser parmi les chemins qu'elles connaissent. Tout programme est lié à la bibliothèque ld-linux.so (/lib/ld-linux.so.2). ld-linux.so recherche les bibliothèques dans plusieurs endroits dont, et dans cet ordre : les chemins précisés dans la variable d'environnement LD_LIBRARY_PATH. Les chemins sont séparés, comme pour PATH, par des ':', le contenu du chier /etc/ld.so.cache qui contient une liste compilée (format binaire) des bibliothèques trouvées dans les chemins prédénis, les répertoires /lib et /usr/lib. La recherche dans /lib et /usr/lib est implicite. 5.4.1 Ajout de nouveaux chemins de bibliothèques partagées Pour éviter la dénition de la variable LD_LIBRARY_PATH, ld-lunux.so propose un cache qu'on peut modier. Le cache est construit depuis le contenu du chier /etc/ld.so.conf et de la commande ldconfig. /etc/ld.so.conf contient la liste des répertoires contenant les bibliothèques partagées. $ cat / etc / ld . so . conf include / etc / ld . so . conf . d /*. conf A l'installation du système, /etc/ld.so.conf contient l'unique ligne indiquant l'inclusion des contenus de tous les chier du répertoire /etc/ld.so.conf.d/ ayant pour extension .conf On peut maintenant modier le chier, par exemple, pour ajouter le chemin /usr/local/lib si ce dernier contient des bibliothèques partagées qu'on voudrait lier à un programme. $ cat / etc / ld . so . conf include / etc / ld . so . conf . d /*. conf / usr / local / lib Cependant, au lieu d'ajouter directement le chemin /usr/local/lib dans le chier /etc/ld.so.conf, comme on vient de le faire, il est préférable d'écrire ce chemin dans un chier d'extension .conf, par exemple local.conf, qu'il faut placer dans le répertoire /etc/ld.so.conf.d/. 5.4.2 Regénération du cache Il ne sut pas d'ajouter le chemin ; on doit toujours ensuite regénérer le cache avec la commande : # ldconfig Deux options de la commande ldconfig sont à retenir : -v (verbose) : pour être informé des actions eectuées par ldconfig, -p (print) : pour lister le contenu du cache. Remarque 6 Dans tous les cas, les commandes d'administration du système ne peuvent être lancées que par : le super utilisateur root (l'administrateur du système), ou un utilisateur ordinaire mais autorisé, au moyen de la commande sudo. 12