Skip to content

Archives, compilation et hachage

Sommaire

Archives tar

Rôle de tar

Les archives tar sont un format d’archive très répandu sous Linux.

  • Elles permettent de regrouper plusieurs fichiers et répertoires en un seul fichier.
  • Elles conservent les permissions et attributs (propriétaires, droits, dates…), ce qui n’est pas forcément le cas avec d’autres formats (zip, rar…).
  • Elles peuvent contenir des fichiers de très grande taille.
  • Elles sont souvent combinées avec une compression (gzip, bzip2, xz…).

Syntaxe générale :

bash
# tar [options] -f archive.tar <fichiers-ou-répertoires>

À retenir

tar crée des « archives » (regroupe des fichiers). La compression est un plus que l’on ajoute (-z, -j, -J).


Créer, extraire et afficher une archive

Les trois options principales à connaître :

  • -c : create → créer une archive
  • -x : extract → extraire une archive
  • -t : list → afficher le contenu d’une archive
  • -f : (file) nom de l’archive (obligatoire)

Exemples :

bash
# Créer une archive à partir d’un dossier (données/)
tar -cvf sauvegarde.tar données/

# Lister le contenu d’une archive
tar -tvf sauvegarde.tar

# Extraire le contenu dans le répertoire courant
tar -xvf sauvegarde.tar

Ici :

  • -v (verbose) affiche les fichiers en cours de traitement.
  • -f sauvegarde.tar indique le nom de l’archive. Tout ce qui suit -f est interprété comme le nom de fichier, donc -f doit être la dernière option avant ce nom.

Types de compression avec tar

On combine souvent tar avec un algorithme de compression :

  • -z → compression gzip (extension habituelle : .tar.gz ou .tgz)
  • -j → compression bzip2 (extension habituelle : .tar.bz2)
  • -J → compression xz (extension habituelle : .tar.xz)

Comparaison rapide :

  • gzip : rapide, taux de compression modéré, très courant.
  • bzip2 : plus lent que gzip, mais compresse généralement un peu mieux.
  • xz (LZMA) : meilleur taux de compression, mais plus lent (surtout en compression). Très utilisé pour distribuer des sources de logiciels ou des noyaux.

Exemples :

bash
# Créer une archive tar + gzip
tar -czvf sauvegarde.tar.gz données/

# Créer une archive tar + bzip2
tar -cjvf sauvegarde.tar.bz2 données/

# Créer une archive tar + xz
tar -cJvf sauvegarde.tar.xz données/

Et pour extraire (tar détecte souvent automatiquement le format de compression) :

bash
# Extraire, peu importe gzip/bzip2/xz
tar -xvf sauvegarde.tar.gz
# ou
tar -xvf sauvegarde.tar.bz2
# ou
tar -xvf sauvegarde.tar.xz

Options utiles : --exclude, -C

Exclure des fichiers/répertoires

On peut exclure certains fichiers ou dossiers de l’archive avec --exclude :

bash
# Archiver tout le projet sauf le dossier build/
tar -czvf projet.tar.gz projet/ --exclude=projet/build

Changer de répertoire avec -C

L’option -C permet de changer de répertoire avant d’exécuter l’opération.

bash
# Extraire une archive dans /tmp/extraction
tar -xvf sauvegarde.tar -C /tmp/extraction

Installation à partir de fichiers sources

Les gestionnaires de paquets (apt, pacman, etc.) facilitent l’installation, mais il est parfois utile de savoir compiler un logiciel à partir de son code source :

  • pour obtenir une version plus récente ;
  • pour un logiciel non disponible dans les dépôts de la distribution ;
  • pour comprendre le fonctionnement classique configure → make → make install.

Nous prendrons l’exemple du programme htop.

Téléchargement avec wget

wget permet de télécharger des fichiers directement en ligne de commande.

Syntaxe :

bash
wget <URL>

Exemple (htop 3.4.1) :

bash
wget https://github.com/htop-dev/htop/releases/download/3.4.1/htop-3.4.1.tar.xz

On récupère ainsi une archive tar.xz contenant le code source.


Extraction du fichier source

On utilise tar avec l’option -J (xz) :

bash
# Extraire l’archive
 tar -xJvf htop-3.4.1.tar.xz

# Se déplacer dans le dossier extrait
cd htop-3.4.1

On obtient alors l’arborescence du projet source (fichiers .c, .h, configure, Makefile, etc.).


Étape de configuration (./configure)

Beaucoup de projets utilisent un script configure qui :

  • vérifie la présence des bibliothèques nécessaires ;
  • adapte la compilation à votre système ;
  • génère des fichiers de configuration (par ex. Makefile).

Commande typique :

bash
./configure

Si des dépendances manquent, le script peut afficher des messages d’erreur. Il faut alors :

  1. Lire attentivement les messages ;
  2. Installer les paquets requis avec le gestionnaire de paquets de la distribution.

Exemple (sur une base Debian/Ubuntu) :

bash
sudo apt-get install libncursesw5-dev

README / INSTALL

Toujours lire le fichier README ou INSTALL fourni avec le projet : il décrit les dépendances et les options de configuration.


Compilation avec make

Une fois la configuration terminée, on compile avec make :

bash
make

make lit le fichier Makefile et lance les commandes de compilation nécessaires.

On peut accélérer la compilation sur une machine multi-cœurs en utilisant -j :

bash
# Utiliser 4 jobs en parallèle
make -j4

Pas de sudo !

Ne pas exécuter make avec sudo : la compilation se fait dans votre répertoire utilisateur.


Installation avec sudo make install

Après une compilation réussie, on peut installer le programme dans le système.

bash
sudo make install
  • Cette commande copie les fichiers compilés dans les répertoires système (/usr/local/bin, /usr/local/lib, etc.).
  • Elle nécessite sudo car elle écrit en dehors de votre $HOME.

Une fois l’installation terminée, vous pouvez lancer le programme par son nom, s’il est dans le PATH :

bash
htop

Attention : installer « à la main » avec make install ne crée pas d’entrée dans le gestionnaire de paquets. Pour désinstaller, il faut souvent utiliser sudo make uninstall (si prévu) ou supprimer les fichiers manuellement.


Hachage et vérification d’intégrité

Principe du hachage

Les fonctions de hachage permettent de calculer un code unique (empreinte) à partir d’un fichier. Exemples de fonctions :

  • md5 (obsolète pour la sécurité, mais encore utilisé pour vérifier l’intégrité) ;
  • sha1 ;
  • sha256.

Usage typique :

  • un site fournit un fichier à télécharger (ex. htop-3.4.1.tar.xz) ;
  • il donne aussi le hash attendu (ex. un sha256 dans un fichier .sha256 ou affiché sur la page) ;
  • vous calculez le hash du fichier téléchargé ;
  • si les deux valeurs correspondent, le fichier n’a pas été corrompu.

Plus la fonction est récente, plus elle est considérée comme robuste :

  • sha1 est plus sécuritaire que md5 ;
  • sha256 est plus sécuritaire que sha1.

Commandes de hachage

Sous Linux, on utilise généralement la commande nom-de-la-méthode + sum :

  • md5sum
  • sha1sum
  • sha256sum

Syntaxe :

bash
md5sum fichier
sha1sum fichier
sha256sum fichier

Exemple :

bash
sha256sum htop-3.4.1.tar.xz

Sortie typique :

text
1a2b3c4d5e6f...  htop-3.4.1.tar.xz

On compare ensuite cette valeur avec celle publiée sur le site officiel (par exemple sur la page GitHub de htop).

Lorsqu’un fichier .sha256 ou similaire est fourni, on peut aussi laisser la commande faire la vérification :

bash
sha256sum -c htop-3.4.1.tar.xz.sha256

Si tout est correct, on obtient :

text
htop-3.4.1.tar.xz: OK

À retenir

  • tar permet de regrouper des fichiers dans une archive, en préservant les permissions.
    • -c crée, -x extrait, -t liste le contenu, -f donne le nom de l’archive.
    • -z, -j, -J ajoutent respectivement la compression gzip, bzip2, xz.
    • --exclude et -C facilitent la gestion de ce qu’on archive et où on extrait.
  • L’installation depuis les sources suit souvent le schéma :
    • wget → télécharger l’archive ;
    • tar → extraire (-xJvf pour .tar.xz) ;
    • ./configure → configuration (avec installation des dépendances si besoin) ;
    • make → compilation ;
    • sudo make install → installation dans le système.
  • Le hachage (md5, sha1, sha256…) permet de vérifier qu’un fichier n’a pas été corrompu.
    • On utilise md5sum, sha1sum, sha256sum sur un fichier ;
    • On compare le résultat avec la valeur fournie sur le site ou dans un fichier .sha256.

Quiz 🎯

Ce quiz couvre : archives tar, compilation depuis les sources et hachage.

0 questions - Bonne chance !

.