Mémento des commandes abordées :

$ ar -x <nom du paquet binaire>  (désarchiver un paquet binaire)
$ dpkg-deb --info <nom du paquet binaire> (permet d'afficher des informations sur le paquet notamment celle contenu dans le fichier control)
$ dpkg-deb --control <nom du paquet binaire> (extraction des fichiers de contrôle)
$ dpkg-deb --extract <nom du paquet binaire> (extraction des fichiers de configuration et de données)
#dpkg --install <nom du paquet binaire> (installation et configuration du paquet binaire)

Nous allons donner ici quelques explications sur la manipulation des fichiers binaires. Comme nous avons pu le voir précédemment un fichier binaire possède l'extention .deb.
Il peut contenir des programmes exécutables, des fichiers de configuration, de la documentation ainsi que des informations contenant les droits d'auteur.

1. Nommage d'un fichier binaire

Il n'existe pas de convention de nommage d'un fichier binaire. Chacun peut choisir le nom qu'il désire. Cependant, il arrive souvent que ces noms soient souvent explicites. Prenons, par exemple, un fichier binaire se trouvant encore dans notre cache donc dans le répertoire /var/cache/apt/archives. ici, nous allons regarder le paquet suivant :
strace_4.5.14-2_i386.deb

Le nom du fichier binaire se divise en trois partie :
- strace : le nom du paquet
- 4.5.14-2 : la version ainsi que la révision
- i386 : la version matérielle


2. Contenu d'un paquet binaire

Un fichier binaire peut être manipuler sur n'importe quel unix. le fichier .deb est simplement une archive BSD ar. Elle peut donc être vu par la commande ar.

Regardons un peu le contenu du fichier opera_9.02-20060919.5-shared-qt_en_i386.deb :
# ar -t opera_9.02-20060919.5-shared-qt_en_i386.deb
debian-binary
control.tar.gz
data.tar.gz

Si nous regardons maintenant le fichier binaire strace_4.5.14-2_i386.deb :
#ar -t /var/cache/apt/archives/strace_4.5.14-2_i386.deb
debian-binary
control.tar.gz
data.tar.gz

Comme nous pouvons le constater, tout paquet binaire comprend la même structure.

- debian-binary : numéro de version du format de paquet utilisé
- control.tar.gz : contient les informations liées au paquet (nom, version, description, dépendances, etc ...)
- data.tar.gz : contient les fichiers installés par le paquet sur le système de fichier racine.

Il est possible si vous le souhaitez de désarchiver le paquet avec la commande ar -x afin d'accéder aux 3 fichiers :
# ar -x opera_9.02-20060919.5-shared-qt_en_i386.deb

Nous avons donc les trois fichiers suivants maintenant :
# ls -ltr
-rw-r--r--   1 root   root           4 Dec  3 00:31 debian-binary
-rw-r--r--   1 root   root     5156155 Dec  3 00:31 data.tar.gz
-rw-r--r--   1 root   root        5878 Dec  3 00:31 control.tar.gz

On peut alors regarder le contenu du fichier debian-binary et décompresser/désarchiver les fichier .tar.gz :
# more debian-binary
2.0

Cela correspond à la version du format du paquet.

Si l'on regarde maintenant le contenu de l'archive data.tar.gz :
# tar tzvf data.tar.gz
drwxr-xr-x root/root         0 2006-09-19 16:04:23 ./
drwxr-xr-x root/root         0 2006-09-19 16:04:22 ./usr/
drwxr-xr-x root/root         0 2006-09-19 16:04:22 ./usr/share/
drwxr-xr-x root/root         0 2006-09-19 16:04:22 ./usr/share/opera/
drwxr-xr-x root/root         0 2006-09-19 16:04:22 ./usr/share/opera/locale/
drwxr-xr-x root/root         0 2006-09-19 16:04:22 ./usr/share/opera/locale/en/
-rw-r--r-- root/root      6715 2006-09-19 16:04:22 ./usr/share/opera/locale/en/license.txt
-rw-r--r-- root/root      7152 2006-09-19 16:04:22 ./usr/share/opera/locale/en/search.ini
-rw-r--r-- root/root       832 2006-09-19 16:04:22 ./usr/share/opera/locale/en/default.adr
-rw-r--r-- root/root    214673 2006-09-19 16:04:22 ./usr/share/opera/locale/english.lng
drwxr-xr-x root/root         0 2006-09-19 16:04:22 ./usr/share/opera/ini/
-rw-r--r-- root/root     96502 2006-09-19 16:04:22 ./usr/share/opera/ini/dialog.ini
-rw-r--r-- root/root      1741 2006-09-19 16:04:22 ./usr/share/opera/ini/fastforward.ini
-rw-r--r-- root/root     20665 2006-09-19 16:04:22 ./usr/share/opera/ini/standard_keyboard.ini
-rw-r--r-- root/root     55443 2006-09-19 16:04:22 ./usr/share/opera/ini/standard_menu.ini
... ... ... ... ... ... ...     ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ...     ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

etc etc ...

Ici on voit bien la liste des fichiers qui seront installés.

Et enfin regardons l'archive control.tar.gz :
# tar tzvf control.tar.gz
drwxr-xr-x root/root         0 2006-09-19 16:04:23 ./
-rwxr-xr-x root/root      5097 2006-09-19 16:04:23 ./postinst
-rwxr-xr-x root/root      1766 2006-09-19 16:04:23 ./prerm
-rwxr-xr-x root/root      1013 2006-09-19 16:04:23 ./postrm
-rw-r--r-- root/root        34 2006-09-19 16:04:22 ./conffiles
-rw-r--r-- root/root      5540 2006-09-19 16:04:24 ./md5sums
-rw-r--r-- root/root       860 2006-09-19 16:04:23 ./control

Voyons le détail des fichiers ci-dessus :

2.1 control

Ce fichier contient la description du paquet (nom du paquet, version etc ...) et la liste des dépendances qui doivent être satisfaites (exemple : Depends: libc6 (>= 2.1.3), xlib6g (>= 3.3.6)). Ce fichier est utilisé par les outils de gestion de paquets pour obetnir toutes ces informations.

2.2 conffiles

Contient des fichiers de configuration utilisés par les outils de gestion de paquets afin de conserver les modifications effectuées sur ces fichiers.
Exemple de contenu du fichier conffiles pour le paquet opera :
/etc/opera6rc
/etc/opera6rc.fixed

2.3 md5sums

Ce fichier contient les signatures MD5 de tous les fichiers  installés par le paquets.

Exemple :
370bcc2150bfd404ae55ca33a1b88a51  usr/share/opera/locale/en/license.txt
06ca608752cd8986817b83451193099e  usr/share/opera/locale/en/search.ini
b2cdf9a67b286809c5473e926d86b9ac  usr/share/opera/locale/en/default.adr
ff1ff4e2acbb6bcab403f98108dbb1c5  usr/share/opera/locale/english.lng
8916d643b1939de737a76735b42576aa  usr/share/opera/ini/dialog.ini
bd7cd1396153a547f8195bf4b327256d  usr/share/opera/ini/fastforward.ini

2 .4 postinst

Ce script est appelé au moment de la configuration du paquet, parès l'installation de l'ensemble des fichiers. Il peut aussi être appelé par dpkg lors d'une mise à jour en erreur ou lors de la suppresions du paquet.

2.5 prerm

Ce script est appelé lors de la suppression du paquet ou lors d'une mise à jour également.

2.6 postrm

Ce script peut être appelé par dpkg au moment de la suppression du paquet.

Il existe encore d'autres fichiers mais je m'arrêterais ici.

3. Commandes utiles pour les paquets binaires

3.1 Informations sur les paquets

La commande dpkg -deb --info <nom_du_paquet_binaire> permet d'afficher les infos sur un paquet binaire.
$ dpkg-deb --info opera_9.02-20060919.5-shared-qt_en_i386.deb
nouveau paquet Debian, version 2.0.
taille 5162226 octets : archive de contrôle= 5878 octets.
    34 octets,     2 lignes     conffiles          
     860 octets,    21 lignes      control             
    5540 octets,    80 lignes      md5sums             
    5097 octets,   174 lignes   *  postinst            #!/bin/sh
  1013 octets,    37 lignes   * postrm             #!/bin/sh
    1766 octets,    62 lignes   *  prerm               #!/bin/sh
Package: opera
Version: 9.02-20060919.5
Section: non-free/web
Priority: optional
Architecture: i386
Depends: libc6 (>= 2.1.3), xlib6g (>= 3.3.6) | xlibs | libxmu6, libqt3c102-mt (>= 3:3.2.1), libstdc++5
Recommends: libaspell15
Suggests: flashplugin-nonfree | libflash-mozplugin
Conflicts: opera-static
Replaces: opera-static
Provides: opera-static, www-browser
Installed-Size: 11348
Maintainer: Opera Packaging Team <packager@opera.com>
Description: The Opera Web Browser
  Welcome to the Opera Web browser. It is smaller, faster,
  customizable, powerful, yet user-friendly. Opera eliminates
  sluggish performance, HTML standard violations, desktop
  domination, and instability. This robust Web browser lets you
  navigate the Web at incredible speed and offers you the best
  Internet experience.
The binaries were built on RedHat-9.0 (shrike) using gcc-3.2.2.

Nous pouvons aussi extraire que les fichiers de contrôle du paquet via la commande dpkg-deb --control <nom du paquet binaire>. Un répertoire DEBIAN est alors créé contenant la liste des fichiers de contrôle (control, md5sum, conffiles etc ...)
$ dpkg-deb --control opera_9.02-20060919.5-shared-qt_en_i386.deb
$ ls ./DEBIAN
conffiles  control  md5sums  postinst  postrm  prerm
dqssqd

Dans la même logique, nous pouvons extraire séparement les fichiers de données du paquet binaire dans un répertoire temporaire avec la commande dpkg-deb --extract <nom du paquet binaire> <répertoire de destination>
Dans cet exemple, on extrait les fichiers de données et on a ainsi les repertoire etc et usr contenant les fichiers de configuration et les données du paquets.
$dpkg-deb --extract opera_9.02-20060919.5-shared-qt_en_i386.deb .
$ls
etc usr

3.2 Installation d'un paquet

Pour réaliser l'installation et la configuration d'un paquet, il suffit de lancer la commande dpkg --install <nom du paquet binaire> ou pour faire plus court dkpg -i <nom du paquet binaire> avec l'utilisateur root.
Exemple :
# dpkg --install opera_9.02-20060919.5-shared-qt_en_i386.deb
Selecting previously deselected package opera.
(Reading database ... 103741 files and directories currently installed.)
Unpacking opera (from opera_9.02-20060919.5-shared-qt_en_i386.deb) ...
Setting up opera (9.02-20060919.5) ...