Créer un paquet Debian (.deb)
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à créer un paquet Debian ( les fameux fichiers .deb).
Qu'est ce qu'un paquet ?
Un paquet est un fichier compressé contenant les informations d'installation et les fichiers constituants une application, un plugin, une librairie, un driver, etc. On peut assimiler un paquet par un fichier "Setup.exe" sous Windows par exemple. Un paquet permet donc d'échanger et d'installer facilement un ensemble de commande et/ou de fonctionnalité sur un système donné.
Pourquoi doit on spécifier un paquet "Debian" ?
Le libre ayant une grande diversité de logiciel et de format, on y trouve logiquement plusieurs formats de système d'installation. Un paquet "Debian" est un paquet qui se termine par l'extension ".deb" et qui peut être installé facilement sur tous les systèmes Debian et dérivés (dont Ubuntu fait partie !).
II. Mise en place de l'environnement de test
Nous allons dés à présent créer notre paquet en devenir. Celui-ci sera pour notre tutoriel juste un script qui affichera la date actuelle avec un petit message. Nous créons donc un script sur notre machine :
vim itconnect.sh
et nous y mettons ce contenu :
#!/bin/bash echo "Nous sommes le `date`."
Et on lui donne les droits d'exécution
chmod og+x itconnect.sh
Voila, notre petit programme est prêt à devenir un paquet !
III. Construction de l'architecture du paquet
Nous allons maintenant créer l'architecture que doit avoir un paquet Debian avant de le transformer définitivement en paquet. En effet, tous les paquets Debian doivent être composés de fichiers clés qui servent à leur installation et leur intégration dans le système. On crée donc un répertoire portant le nom de notre script :
mdkir itconnect
Dans ce dossier, nous créons un répertoire "DEBIAN" qui contiendra des scripts de pré et post installation, de pré et post désinstallation et d'information du paquet :
mkdir itconnect/DEBIAN
Nous créons également l'arborescence de notre paquet. Par exemple si nous voulons que notre script "itconnect.sh" s'installe dans /usr/bin lors de l'installation du .deb, nous créons un répertoire "usr/bin" dans notre répertoire :
mkdir -p itconnect/usr/bin
et nous y mettons notre script :
mv itconnect.sh itconnect/usr/bin
Note : Pour un application contenant plusieurs fichiers dans plusieurs arborescences différentes, le principe reste le même. On crée les répertoires dans notre répertoire source comme s'il s'agissait de la racine d'un serveur ( par exemple pour mettre une configuration dans "/etc/" on créera le dossier "itconnect/etc" et on mettra notre fichier à l'intérieur).
Un exemple visuel pour une application avec plus de fichier que notre paquet de test :
IV. Création des informations d'installation du paquet
Maintenant que notre script (ou tout autre fichier d'une application) a son arborescence finale reproduite dans le dossier que nous transformerons en paquet (.deb), nous allons passer au fichier qui va aider le système à comprendre l'application lors de son installation. Il s'agit d'un fichier nommé "control" que nous allons créer dans le répertoire "itconnect/DEBIAN" :
vim itconnect/DEBIAN/control
Nous allons maintenant remplir ce fichier de façon à ce qu'il soit compris par une distribution basée sur Debian lors de son installation :
Package: itconnect Version: 12.0 Section: base Priority: optional Architecture: all Depends: bash Maintainer: dev <[email protected]> Description: Affiche la date dans le terminal Homepage: http://it-connect.fr
Une petite description des différentes informations indiquées :
- "Package" : Le nom du paquet.
- "Version" : La version de votre paquet.
- "Section" : Les archives dans Debian sont réparties en différentes parties : main (logiciels libres), non-free (logiciels non libres), et contrib (logiciels libres qui dépendent de logiciels non libres). Chacune d'entre elles est divisée en sections qui classent les paquets en catégories grossières. Entre autres existent "admin" pour les programmes destinés aux administrateurs, "devel" pour les outils de programmation, "doc" pour la documentation, etc. ( source : http://packages.debian.org/wheezy/ ).
- "Priority" : Décrit l'importance pour l'utilisateur d'installer ce paquet, on peut y assigner plusieurs valeurs "optional" qui convient pour les paquets récents, il existe également "standard", "required" ou "important".
- "Architecture" : Présente les architectures sur lesquelles le paquet binaire peut être compilé. Cette valeur est en général une des suivantes en fonction du type de paquet binaire. On peut y assigner deux valeurs principales. "any" le paquet créé va dépendre de l'architecture sur laquelle il est installé; "all" le paquet créé est indépendant de l'architecture (fichier texte par exemple).
- "Depends" : Permet d'indiquer les éventuelles dépendances d'un paquet.
- "Maintainer" : Nom et adresse mail du responsable du paquet.
- "Description" : Description du paquet et de ses fonctions.
- "Homepage" : Lien vers le site web ou la page de présentation du paquet.
On pourrait également ajouter l'information "Depends" où l'on indiquerais les éventuelles dépendances de notre paquet et leurs versions. (par exemple "Depends: libc6 (>= 2.1)" ).
En plus de ce fichier obligatoire, nous pouvons ajouter des scripts qui s’exécuteront avant et après l'installation du paquet ou encore avant et/ou après la désinstallation du paquet. Pour qu'un script rédigé soit exécuté au moment voulu de l'installation ou de la désinstallation du paquet, il doit être nommé correctement :
- "preinst" : Exécuté avant l'installation
- "postinst" : Exécuté après l'installation
- "prerm" : Exécuté avant la suppression
- "postrm" : Exécuté après la suppression
Pour faire un exemple, nous allons créer un script qui s'exécutera avant l'installation du paquet et qui affichera juste "bonjour" sur le terminal :
vim itconnect/DEBIAN/preinst
On saisi alors :
#!/bin/bash echo "bonjour !"
Il faut également donner les bons droits à ce (ou ces) script(s) :
chmod 755 itconnect/DEBIAN/preinst
Voici donc l'architecture de notre futur paquet :
V. Compilation
Nous pouvons à présent transformer ce répertoire en paquet qui pourra alors être installé de façon simple sur toute les distributions Debian. On utilisera cette commande :
dpkg-deb --build itconnect
On se retrouvera ensuite avec un fichier "itconnect.deb". Notre paquet est construit !
VI. Installation de notre paquet
Pour installer notre paquet, il suffit de saisir la commande suivante :
dpkg -i itconnect.deb
Note : Lors d'une installation avec "apt-get install" ou "aptitude install" par exemple, la machine se contente de trouver le paquet voulu sur les différents dépôts, de le télécharger puis d'effectuer cette même commande pour installer le paquet .deb téléchargé depuis les dépôts.
On remarque d'ailleurs l'exécution de notre script "preinst" qui nous dit bonjour :
On se retrouve donc avec notre script "itconnect" dans "/usr/bin" :
Celui-ci devient donc également une commande :
VII. Désinstallation du paquet
Notre paquet étant un paquet comme les autres installés sur le système, on peut maintenant avoir des informations sur celui-ci avec les commandes "apt-get" et "aptitude" et donc le désinstaller :
apt-get remove itconnect
mkdir -p itconnect/usr/bin
C’est corrigé, merci =)
Programmer un paquet logiciel pour Debian.
J’ai ajouté le lien de cette page à la bibliographie du wiki.
https://www.visionduweb.eu/wiki/index.php?title=Programmer_un_paquet_logiciel_pour_Debian
Merci.