Destination Debian

Infos à la source, maîtrisez votre distribution Debian/Ubuntu

  • Soutenir
  • Mes livres
    • Mémento Git à 100%
    • Debian 8 Jessie
  • Lettre d’informations
  • Mes activités chez Debian
    • Historique
    • Mes projets
  • Mes autres sites
    • My blog on free software
    • Freexian, ma société
    • Mon blog perso
  • Contact
Home Documentation 5 raisons qui font qu’un paquet Debian est plus qu’une simple archive de fichiers

5 raisons qui font qu’un paquet Debian est plus qu’une simple archive de fichiers

Posted on 06/04/2011 Written by Raphaël Hertzog

Folder with gearsLes paquets Debian font certainement partie de votre quotidien… mais savez-vous seulement ce qu’ils sont exactement ? De simples archives ? Sûrement plus que ça, sinon de « simples » archives TAR (vous savez, les fameux fichiers finissant par .tar.gz) feraient l’affaire. Cet article vous propose de plonger au cœur de leurs structures… suivez le guide !

1. Un paquet Debian ? Deux archives TAR dans une archive AR !

Un fichier .deb est, en premier lieu, une archive au format AR. Archive que vous pouvez manipuler à l’aide de la commande ar. Cette archive contient 3 fichiers, comme vous pouvez le constater par vous-même en téléchargeant n’importe quel .deb, et en lui passant la commande « ar t » :

$ ar t gwibber_2.31.91-1_all.deb
debian-binary
control.tar.gz
data.tar.gz

Le fichier debian-binary est un fichier texte indiquant la version du format du .deb, la version actuelle étant la 2.0.

$ ar p gwibber_2.31.91-1_all.deb debian-binary
2.0

Le fichier data.tar.gz contient quant à lui les fichiers « utiles » du paquets, i.e. tous les fichiers décompressés lorsque vous exécutez dpkg --unpack.

Jusque-là…rien d’extraordinaire. Ce qui fait qu’un .deb est plus qu’une archive est contenu dans le dernier fichier : control.tar.gz. Il contient des métainformations utilisées par le gestionnaire de paquets. Par exemple :

$ ar p gwibber_2.31.91-1_all.deb control.tar.gz | tar tzf -
./
./postinst
./prerm
./preinst
./postrm
./conffiles
./md5sums
./control

2. Des méta-informations concernant le paquet et ses relations…

Le fichier control contenu dans l’archive control.tar.gz est le plus important de tous : il contient des informations basiques sur le paquet telles que son nom, sa version, sa description, les architectures supportées, son mainteneur, etc. Il contient également tout le jeu de dépendances nécessaires au paquet, grâce auquel le gestionnaire de paquets peut s’assurer de la cohérence de l’écosystème avant l’installation du paquet. La page dédiée aux Binary control files vous en dira plus quant à l’utilisation de tous ces attributs.

Ces informations sont copiées dans le fichier /var/lib/dpkg/status après que le paquet a été installé.

3. …et des scripts pour que tout fonctionne dès l’installation

Aux différentes étapes de la vie d’un paquet — installation, mise à jour, suppression… — dpkg exécute les scripts du mainteneur, embarqués dans le paquet :

  • postinst : après l’installation
  • preinst : avant l’installation
  • postrm : après la suppression
  • prerm : avant la suppression

Il s’agit là d’une description largement simplifiée. Plus exactement, ces scripts sont exécutés en de nombreuses autres occasions, avec des paramètres d’appel différents. Un chapitre entier de la Charte Technique Debian est dédié à ce sujet. Cette page du wiki Debian pourrait vous paraître plus digeste pour une première approche.

Bien qu’effrayante de prime abord, il s’agit là d’une fonctionnalité très importante, indispensable à la bonne gestion des mises à jour non réversibles, à la création d’utilisateurs système, pour la configuration automatique, etc.

4. Les fichiers de configuration sont… spéciaux

Décompresser une archive entraîne la suppression des versions précédentes des fichiers, ce qui constitue le comportement désiré lorsqu’un paquet est mis à jour… sauf pour les fichiers de configuration : il vaut mieux ne pas écraser vos modifications, non ?

C’est dans cette optique que les paquets listent les fichiers de configuration dans le fichier conffiles fourni par control.tar.gz. De cette manière, dpkg les traitera différemment.

5. Vous pouvez toujours ajouter de nouvelles méta-informations

Et il existe déjà des outils qui exploitent la possibilité d’ajouter des fichiers supplémentaires dans control.tar.gz :

  • debsums utilise le fichier md5sums pour s’assurer qu’aucun fichier n’a été modifié par accident
  • dpkg-shlibdeps utilise les fichiers shlibs et symbols pour générer les dépendances à une bibliothèque
  • debconf utilise les scripts config pour obtenir des informations de configuration de la part de l’utilisateur

Une fois installés, ces fichiers sont conservés par dpkg dans /var/lib/dpkg/info/package.* à côté des scripts du mainteneur du paquet.

Cet article est une traduction de 5 reasons why a Debian package is more than a simple file archive contribuée par Weierstrass01. Suivez moi sur Identi.ca, Twitter et Facebook. Ou abonnez-vous à ce blog par RSS ou par email.

Filed Under: Documentation, Documentation pour les utilisateurs Tagged With: ar, conffile, control, deb, Debian, Libre, maintainer scripts, Référence, Ubuntu

Découvrez le Cahier de l'Admin Debian

Book coverAprès une campagne de libération réussie, le Cahier de l'Admin Debian est désormais librement disponible. Si vous appréciez mes articles et ce que je fais pour Debian, je vous invite à le parcourir et à en obtenir une copie.

Comments

  1. vvillenave says

    06/04/2011 at 17:36

    Très intéressant. La solidité des paquets Debian n’est plus à démontrer, mais il me semble que les RPM n’ont aujourd’hui plus rien à leur envier…

    Pour la petite histoire : je suis actuellement sous Fedora pour une seule raison : l’existence d’un petit utilitaire en ncurses appelé rpmreaper, qui me permet d’afficher l’arborescence de tous les paquets installés avec leurs liens de dépendances, ce qui me permet de virer absolument toutes les bibliothèques dont je ne me sers pas (et de ce fait de garder mon système très propre et minimal). Cette fonctionnalité unique (que l’on ne retrouve ni dans Synaptic ni dans Aptitude) fonctionne beaucoup mieux que deborphan (Debian, Ubuntu) ou urpme –auto-orphans (Mandriva) car elle est constamment générée et mise à jour depuis la base de données des paquets eux-même.

    • Raphaël Hertzog says

      06/04/2011 at 21:06

      Je ne connais pas d’interface graphique similaire dans Debian mais il est assez facile d’avoir un système minimal avec Debian également: https://raphaelhertzog.com/2011/03/07/debian-cleanup-tip-6-remove-automatically-installed-packages/

  2. Stéphane Péchard says

    06/04/2011 at 22:01

    Merci pour cet article intéressant.
    Je me suis toujours demandé si il existait des outils d’aide à la création de paquets (édition des fichiers, création des binaires, etc.) ou bien si un packageur répétait à chaque fois les même commandes. Une idée ?

    • Raphaël Hertzog says

      07/04/2011 at 07:47

      On suit forcément la même démarche à chaque fois mais des outils d’aide il en existe plein, mais rien qui ne soit « tout intégré » pour autant que je sache.

      En général on utilise dh_make pour créer les fichiers initiaux et ensuite on adapte le contenu des fichiers créés (avec un simple éditeur de texte).

  3. Freddec says

    07/04/2011 at 09:36

    Salut,
    Merci de cet article qui nous éclaire un peu plus sur les .deb

    Que penses tu (en tant que DD) de l’utilitaire checkinstall ?
    Non pas pour la création de paquets officiels propres (où là l’expertise du mainteneur est primordiale)
    Mais plus comme un outils pour amateurs (comme moi) permettant de garder un système « propre » en passant par apt pour installer/desinstaller un paquet issus des sources, tout en évitant la trilogie infernale des .config, make, make install ?
    Il m’est arrivé de l’utiliser 2-3 fois, je l’ai trouvé pratique mais me demande si c’est une solution saine.
    Quelles sont selon toi ses avantages et ses limites ?

    • Raphaël Hertzog says

      07/04/2011 at 09:57

      Je n’ai jamais utilisé checkinstall donc je ne peux pas vraiment me prononcer. Mais j’en ai entendu parler à plusieurs reprises et je n’ai pas souvenir de mauvaises critiques.

      http://packages.qa.debian.org/c/checkinstall.html n’indique que 2 bogues et un paquet avec un long historique. Le logiciel a donc l’air assez mature de prime abord.

      • Freddec says

        07/04/2011 at 11:08

        Merci de ce retour rapide
        Évidement, vu sous l’aspect « Historique » et « Rapport de Bug » on peut se dire qu’il n’y a pas trop de soucis à l’utiliser
        Me voila rassurer 😉

  4. djiock says

    08/04/2011 at 15:02

    Merci pour cet article ! C’est sympa de prendre du temps pour expliquer un peu les rouages au commun des mortels 🙂
    Qui sait, peut-être certains d’entre nous serons amenés à créer un paquet Debian un jour !

Découvrez mes ouvrages

Apprenez en plus en cliquant sur leur couverture :

Lettre d’informations

Abonnez-vous à ma lettre d'informations, saisissez votre adresse électronique et cliquez sur « S'abonner » :

Suivez moi

  • Adresse mail
  • Facebook
  • GitHub
  • RSS
  • Twitter

Archives

Planètes

  • Planète April
  • Planète Debian-Fr
  • Planète des utilisateurs Debian
  • Planète Libre

Flux Mon blog anglophone sur le libre

  • Freexian is looking to expand its team with more Debian contributors 29/03/2024
  • Freexian’s report about Debian Long Term Support, July 2022 31/08/2022
  • Freexian’s report about Debian Long Term Support, June 2022 26/07/2022
  • Freexian’s report about Debian Long Term Support, May 2022 23/06/2022
  • Freexian’s report about Debian Long Term Support, April 2022 03/06/2022
  • Debian 9 soon out of (free) security support 11/05/2022

Mots-clés

3.0 (quilt) Annonce aptitude Cahier Admin conffile Contribuer DebConf Debian Debian France Debian Live Distro Tracker dpkg dpkg-source Eyrolles Freexian GNOME GSOC HOWTO Informatique Kali Linux Libre Livres LTS Moi multiarch nautilus-dropbox nettoyage Packaging Politique Presse Pro Programmation PTS publican python-django Release Rolling Référence Résumé d'activité synaptic Testing Tryton Ubuntu unstable wordpress

Articles récents

  • Le logiciel libre a t’il une couleur politique ?
  • Mes activités libres en janvier 2017
  • Élections présidentielles, logiciel libre et Charlotte Marchandise
  • Mes activités libres en décembre 2016
  • Mes activités libres en novembre 2016

Copyright © 2025 · Focus Pro Theme sur Genesis Framework · WordPress · Log in