# Certification Linux LPI/Administrateur système débutant/Examen 101/Installation de Linux et gestion des packages/Compiler et installer des programmes à partir des sources
## Compiler et installer des programmes à partir des sources
### Objectif

Description: Les Candidats seront capables de compiler et installer un programme exécutable à partir de ses sources. Cet objectif inclus des adaptations simples au Makefile, par exemple modifier des chemins ou ajouter un répertoire d'inclusions supplémentaire.
fichiers clés termes et utilitaires: gunzip gzip bzip2 tar configure make

### Fichiers source

On appelle archive un ensemble de fichiers qui ont une relation et stockés dans un fichier unique (pour faciliter la copie, par exemple). La commande permettant de rassembler fichiers et sous-répertoires dans une archive est tar. C'est pourquoi il est courant de dire qu'un fichier tar est une archive.
Fonctions courantes:
-c: Crée une nouvelle archive.
-t: liste les fichiers rassemblés dans un fichier tar.
-x: Extrait le contenu d’un fichier tar.
Options courantes:
-f file: Spécifie le nom du fichier tar.
Exemples:
On utilise généralement l'extension .tar pour toutes archives créées par l'utilitaire tar.

### Compression de fichiers

La compression permet d'économiser l'espace de stockage et les besoins inhérents au transfert de fichiers. Il existe de nombreux utilitaires de compression de fichiers:
* compress, uncompress # vieil algorithme Unix de compression
* gzip, gunzip # Le plus utilisé
* bzip2, bunzip2 # l'algorithme donnant la meilleure compression (au coût de la vitesse...)
Une fois qu'une archive a été créée, elle peut être compressée.
Exemples:

### Archivage de fichiers et compression

Il est possible de rassembler des fichiers et de compresser l'archive obtenue en une seule commande.
Exemples:
Par défaut, tar utilise des chemins relatifs, mais il est possible de sauver des fichiers en chemin absolu en utilisant l'option -P. Dans ce mode, les fichiers seront toujours extraits au même endroit.

### Chaîne d’outils GNU

Sous Linux, toutes les sources peuvent être compilées avec la chaine d’outils standard de GNU.
* L'utilitaire make permet de construire un programme à partir de plusieurs fichiers sources. Il utilise les règles définies dans le Makefile.
* gcc est un compilateur C compatible ANSI.
* g++ est un compilateur C++.
Beaucoup d'archives contiennent des fichiers d'information (README, INTALL) qui expliquent comment le programme doit être compilé et installé.
Les fichiers Makefile.in et configure.in sont les fichiers de base servant à produire le Makefile final. Le fichier configure est généralement un script qui va explorer le système et produire un Makefile final. C'est pourquoi il est courant que l'installation d’un programme à partir des sources se résume à la suite de commandes :
La dernière commande demande généralement les droits super-utilisateur (root) pour s'exécuter avec succès.

### Exercices

* Solution des exercices
* Faites une archive des répertoires /bin et /sbin. Quel utilitaire obtiendra la meilleure compression ? Utilisez -v pour obtenir la réduction de taille en pourcentage.
* Copiez le fichier /usr/src/packages/SOURCES/grub-09.tar.bz2 dans /tmp, et compilez les sources en lisant les fichiers README et INSTALL.
* Trouvez un moyen de décompresser une archive .deb et .rpm. Qu'y-a-t'il dedans ?
* En une seule commande, compressez un nouveau fichier, puis décompreser le dans un autre endroit.
| Installer un gestionnaire d'amorçage (boot manager) | Gérer les bibliothèques partagées |