Les paquets binaires : .deb
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) ...