Décompactage

Archive tar.gz

La norme [34] pour la compression sous UNIX est le format gzip, développé par le projet GNU, et considéré comme un des meilleurs outils de compression généralistes.

gzip est souvent associé à un utilitaire nommé tar. Celui-ci est un rescapé des temps préhistoriques où les informaticiens stockaient leurs informations sur des bandes magnétiques. Aujourd'hui, les disquettes et les CD-ROM ont remplacé les bandes magnétiques, mais tar est toujours utilisé pour créer des archives. Il est par exemple possible de concaténer (mettre à la suite les uns des autres) tous les fichiers d'un répertoire dans un seul fichier grâce à tar. Ce fichier peut ensuite être facilement compressé à l'aide de gzip.

C'est pourquoi de nombreux logiciels libres sont disponibles sous la forme d'archives tar, compressées avec gzip. Leur extension est donc .tar.gz (ou encore, sous forme abrégée, .tgz).

Utilisation de GNU Tar

Pour décompresser cette archive, on peut utiliser gzip, puis tar ensuite. Mais la version GNU de tar (tar) permet d'utiliser gzip «à la volée» , et ainsi de décompresser une archive de manière transparente, sans nécessiter d'espace disque supplémentaire.

L'utilisation de tar est d'une grande simplicité :

tar <options de fichier> <fichier en .tar.gz> [fichiers]

L'option <fichiers> est facultative. Dans le cas où elle est omise, le traitement s'effectuera sur toute l'archive. Si vous voulez extraire le contenu d'une archive .tar.gz, alors vous n'avez certainement pas besoin de spécifier cet argument.

Par exemple :

$ tar xvfz guile-1.3.tar.gz
-rw-r--r-- 442/1002      10555 1998-10-20 07:31 guile-1.3/Makefile.in
-rw-rw-rw- 442/1002       6668 1998-10-20 06:59 guile-1.3/README
-rw-rw-rw- 442/1002       2283 1998-02-01 22:05 guile-1.3/AUTHORS
-rw-rw-rw- 442/1002      17989 1997-05-27 00:36 guile-1.3/COPYING
-rw-rw-rw- 442/1002      28545 1998-10-20 07:05 guile-1.3/ChangeLog
-rw-rw-rw- 442/1002       9364 1997-10-25 08:34 guile-1.3/INSTALL
-rw-rw-rw- 442/1002       1223 1998-10-20 06:34 guile-1.3/Makefile.am
-rw-rw-rw- 442/1002      98432 1998-10-20 07:30 guile-1.3/NEWS
-rw-rw-rw- 442/1002       1388 1998-10-20 06:19 guile-1.3/THANKS
-rw-rw-rw- 442/1002       1151 1998-08-16 21:45 guile-1.3/TODO
...

Parmi les options à passer à tar :

  • v permet de rendre tar «verbeux» : c'est-à-dire qu'il affichera à l'écran tous les fichiers qu'il trouve dans l'archive ; si cette option est omise, alors le traitement sera silencieux;

  • f est une option obligatoire. Sans elle, tar essaiera d'utiliser une bande magnétique à la place d'un fichier d'archive (c'est-à-dire le périphérique /dev/rmt0);

  • z permet de manipuler une archive compressée par gzip (avec suffixe de nom de fichier en .gz). Si vous oubliez cette option lors du décompactage d'une archive compressée, alors tar produira une erreur. Inversement, si vous êtes en face d'une archive non compressée, n'utilisez pas cette option.

tar permet d'effectuer plusieurs manipulations différentes sur une archive (extraction, lecture, création, ajout...). Une option permet de spécifier l'usage qui en est fait :

  • x : permet d'extraire des fichiers de l'archive;

  • t : liste le contenu de l'archive;

  • c : permet de créer une archive, ce qui implique de détruire son contenu actuel. Vous n'utiliserez probablement cette option que dans le cas de votre usage personnel (vos sauvegardes, par exemple);

  • r : permet d'ajouter des fichiers à la fin de l'archive. Elle ne fonctionne pas dans le cas d'une archive compressée.

Bzip2

Un format de compression nommé bzip2 a déjà remplacé gzip pour l'utilisation générale, même si certains logiciels sont encore distribués au format gzip, principalement par compatibilité avec les anciens systèmes. La plupart des logiciels libres sont maintenant distribués dans des des archives à l'extension .tar.bz2.

bzip2 s'utilise de la même manière que gzip par le biais de la commande tar. Il suffit de remplacer la lettre z par la lettre j. Par exemple :

$ tar xvjf toto.tar.bz2

A la place, certaines distributions utilisent (ou ont utilisé) l'option I :

$ tar xvfI toto.tar.bz2

Une autre possibilité (qui semble être plus portable, mais plus longue à taper !) :

$ tar --use-compress-program=bzip2 -xvf toto.tar.bz2

Précisons qu'il faut avoir installé bzip2 et l'avoir inclus dans la variable PATH avant d'exécuter tar.

C'est tout bête !

Le plus simple

Maintenant que vous êtes prêt(e) à décompacter l'archive, n'oubliez pas de le faire en tant qu'administrateur (root). En effet, vous allez avoir besoin de faire des manipulations qu'un simple utilisateur ne peut faire, et même si ce n'est pas le cas de toutes ces manipulations, il est plus facile d'agir en tant que root pendant toute la durée de l'opération, même si ce n'est pas idéal du point de vue de la sécurité.

Commencez par vous rendre dans le répertoire /usr/local/src, et copiez l'archive dans ce répertoire. Cela vous permet de retrouver à tout moment l'archive si vous perdez le logiciel installé. Si vous n'avez pas beaucoup d'espace disque, sauvegardez l'archive sur disquette après avoir installé le logiciel, ou effacez-la, mais assurez-vous de pouvoir la retrouver sur le Web à tout moment.

Normalement, le décompactage d'une archive tar devrait créer un nouveau répertoire (détail dont vous pouvez vous être assuré(e) grâce à l'option t). Rendez-vous maintenant dans ce répertoire, vous êtes prêt(e) à continuer.

Le plus sûr

Le système UNIX (dont font partie GNU/Linux et FreeBSD) est un système sécurisé. Cela signifie que les utilisateurs normaux ne peuvent pas effectuer des opérations qui mettraient le système en danger (comme par exemple formater un disque), ni altérer les fichiers des autres utilisateurs. Dans la pratique et en particulier, cela immunise aussi le système contre les virus.

En revanche, l'utilisateur root a le droit de tout faire, y compris d'exécuter un programme malveillant (tel virus). Disposer du code source est une garantie de sécurité face aux virus, mais vous avez tout à fait le droit d'être paranoïaque[35].

L'idée consiste à créer un utilisateur dédié à l'administration (free ou admin par exemple) par le biais de la commande adduser. Ce compte devra avoir le droit d'écrire dans le répertoire /usr/local/src ainsi que dans les répertoires /usr/local/bin, /usr/local/lib et toute l'arborescence de /usr/man (il se peut qu'il ait également besoin de copier des fichiers ailleurs). Pour cela, je vous recommande soit de rendre cet utilisateur propriétaire des répertoires nécessaires, soit de créer un groupe pour lui, et de rendre ces répertoires accessibles en écriture pour ce groupe.

Une fois que ces précautions sont prises, vous pouvez effectuer les manipulations décrites dans la section intitulée “Le plus simple”.



[34] Sous GNU/Linux, on utilise de plus en plus un nouveau programme, appelé bzip2, plus efficace sur les fichiers texte, mais plus gourmand en puissance de calcul. Voir plus loin, la section intitulée “Bzip2” à ce sujet.

[35] Un proverbe venant du monde BSD dit : «never trust a package you don't have the sources for» (ne faites jamais confiance en un paquetage dont vous n'avez pas les sources.)