Il est assez facile de trouver de la documentation sur le sujet. Le net regorge de méthodes, parfois très différentes, pour réaliser un fichier ".deb". Je trouve personnellement la plupart de ces documentations assez complexes. Elles semblent s'adresser à des gens ayant déjà des connaissances et (ou) des besoins assez particuliers. (La documentation présente sur le site ubuntu-fr en est un parfait exemple). J'ai donc décidé de reprendre les bases en partant du point de départ. La création "manuelle" d'un paquet très basique. Il sera ensuite possible de complexifier les choses au fur et à mesure... Pour commencer il s'agira donc de créé un paquet très simple à partir d'un programme basique (et pas basic avec un c... quel humour !).

Etape 1 : Le programme à empaqueter

Nous ne sommes pas la pour apprendre à programmer des scripts shells... Alors on fait SIMPLE : Essayer de taper la commande suivante :

zenity --info --title "test" --text "coucou"

Si tout se passe bien vous verrez apparaitre à l'écran une fenêtre qui affiche "coucou". Zenity est normalement installé par défaut sur ubuntu, si ce n'est pas le cas chez vous et que vous avez un message d'erreur, installez le : sudo apt-get install zenity

Afin de rendre les choses un tout petit peu plus intéressantes, nous allons créer un fichier "de configuration", qui contiendra le texte qui doit être affiché dans la fenêtre. Au final nous allons donc créer deux fichiers. Le "programme" d'une part, et son fichier de configuration de l'autre

Le programme

Créez un fichier texte dans votre répertoire utilisateur, appelez le "affiche_ecran" et copiez cette ligne à l'interieur :

zenity --info --title "test" --text "`cat ~/affiche.cfg`" 

Enregistrez le, et rendez le exécutable :

sudo chmod a+x affiche_ecran 

Le fichier de configuration

Créez un autre fichier texte, toujours dans votre répertoire, et appelez le "affiche.cfg". Mettez ce que vous voulez dedans, par exemple : Bonjour à tous

Tester le programme

Lancez le programme en tapant :

./affiche_ecran

Le contenu du affiche.cfg devrait s'afficher dans une fenetre. Nous avons terminé le programme à empaqueter

Etape 2 : Création du paquet

Avant toute chose il faut créer un répertoire qui contiendra le contenu du paquet. Appelons le "exemple-un". A l'intérieur de ce répertoire, faites-en un autre et appelez le DEBIAN (en majuscules). Nous verrons l'utilité de ce répertoire vide plus loin. Il faut maintenant mettre dans "exemple-un" tous les fichiers qui devront être installés. Mais pas n'importe comment ! En fait, il faut reproduire exactement l'arborescence telle qu'elle devra être respectée lors de l'installation. Par exemple, si on veut que le fichier "affiche_ecran" soit installé dans /tmp au moment de l'installation du paquet, alors il faut créer un répertoire tmp dans exemple-un, puis mettre "affiche_ecran" à l'intérieur.

Dans notre cas de figure on veut que les deux fichiers que l'on à crée à l'étape une soient mis dans notre répertoire utilisateur au moment de l'installation du paquet. Il faut donc créer "home/votre_login" à l'intérieur de notre répertoire de travail, afin d'avoir au final quelque chose qui ressemble à ceci :

/home/votre_login (votre répertoire utilisateur)
	|
 	|-> exemple-un 
		|
		|-> DEBIAN
		|-> home
		      |
                      |-> votre_login
				|
				|-> affiche_ecran
				|-> affiche.cfg

Informations supplémentaires (version, dépendances...)

Concernant les fichiers à installer, nous avons terminé. Mais il faut maintenant indiquer quelques petites choses à dpkg, l'outil de création et d'installation de paquet. Par exemple comment va s'appeler notre paquet, sur quelle machine on peut l'installer, quelle est son numéro de version, de quoi a-t-il besoin, entre t-il en conflit avec d'autre, y a t-il des opérations à réaliser avant ou après l'installation etc. Tout ceci se fait grâce à des fichiers texte qu'on place dans le répertoire DEBIAN. Pour le moment, nous nous contenterons d'un seul fichier (le seul qui soit obligatoire) le fichier "control". Créez donc un nouveau fichier texte, appelez le "control" en minuscule, placez le dans le répertoire DEBIAN puis copiez ceci à l'intérieur :

Package: exemple-un
Version: 1.0
Architecture: i386
Depends: zenity
Maintainer: your_email@your.fai
Description: Mon premier paquet !
  Ce paquet contient deux fichiers :
  affiche_ecran (le script)
  affiche.cfg (le texte qui doit s'afficher)

Globalement tout facile à comprendre, mais examinons ce fichier ligne par ligne. La première indique le nom du paquet. La seconde, sa version. Il s'agit bien de la version du paquet, pas de la version du programme qui est dedans ! Si plusieurs versions du même paquet sont disponibles, les outils comme apt-get choisirons toujours la version la plus récente par défaut. Ensuite nous avons l'architecture cible du paquet (ici i386, autrement dit n'importe quel PC "standard" avec un processeur de type "x86". Puis arrive la liste des dépendances, aussi appelées "pré-requis". La seule chose qui soit nécessaire et qui pourrait ne pas être installée est zenity. Si cela arrivait, apt-get saurait donc qu'il faut l'installer pour pouvoir utiliser ce programme. Il est possible d'indiquer plusieurs prés-requis en les séparant par une virgule. il est aussi possible d'indiquer un numéro de version précis, ou minimum etc. Le "maintainer" est le nom de la personne ayant réalisé le paquet... C'est vous ! Enfin on trouve une description en deux parties. La première partie (sur une seule ligne) est la description courte du paquet. Puis vient la description "longue". Elle peut s'étaler sur plusieurs lignes, mais il faut toujours commencer chaque ligne par deux espaces.

Note : J'ai simplifié ce fichier au maximum... il est possible d'y indiquer beaucoup d'autres choses, alors n'hésitez pas à consulter les docs !

Enfin, le .deb

Tout est prêt, nous pouvons maintenant créer le paquet :

 cd ~/      
 dpkg -b exemple-un

Le fichier exemple-un.deb a dû être créé ! Bravo, vous venez de faire votre premier paquet.

Test du paquet

Commencez par supprimer les fichiers affiche_ecran et affiche.cfg qui sont dans votre répertoire. Lorsque vous êtes sûr qu'ils n'y sont plus, lancez l'installation du paquet :

 sudo dpkg -i exemple-un.deb

Si tout se passe bien, les deux fichiers sont ré-apparus, et vous pouvez à nouveau lancer affiche_écran. Essayez aussi d'afficher les informations de votre paquet avec la commande : apt-cache show exemple-un

Essayez maintenant de supprimer le paquet :

 sudo apt-get remove exemple-un

Notez que les deux fichiers sont supprimés. Or, l'un d'eux est un fichier de paramétrage... On pourrait vouloir ne pas l'effacer par défaut, pour pouvoir le conserver lors d'une mise à jour du programme par exemple. Il faudrait pour cela le déclarer en tant que "fichier de configuration". C'est ce que nous verrons dans le prochain épisode...