Si vous êtes sous Linux et que vous programmez, vous avez peut-être déjà eu besoin de distribuer votre programme. C'est relativement simple lorsqu'il ne s'agit que de le distribuer à petite échelle, mais cela peut vite devenir compliqué. Ce tutoriel vous apprendra donc à distribuer vos programmes à grande échelle grâce au packaging Debian.
Si vous avez lu le tutoriel de M@teo21 sur Linux, et plus particulièrement la partie sur l'installation de logiciels, vous devriez savoir "en gros" ce qu'est un paquet .deb. Pour ceux qui n'auraient pas suivi, un paquet .deb est en fait un dossier compressé contenant les éléments à installer et des informations sur le paquet. Comme l'indique l'extension, un paquet .deb est utilisé sur les systèmes reposant sur Debian. C'est, si vous ne le savez pas encore, une distribution Linux qui a elle-même engendré d'autres distributions. Quelques exemples de distributions reposant sur Debian, utilisant apt-get, et par conséquent les .deb : (schéma par M@teo21)
Un paquet Debian est constitué de deux parties notables : un dossier contenant le nom du paquet, ses dépendances, etc. d'un côté, et les fichiers du programme de l'autre. L'arborescence d'un paquet Debian se présente sous cette forme :
Tout d'abord, commencez par créer un dossier du nom de votre programme (ou un autre, hein, on s'en fiche un peu ^^ ). Créez ensuite dans ce dernier un dossier nommé "DEBIAN" (tout en majuscules). Dans le dossier juste créé, ajoutez un fichier nommé "control". Ouvrez-le avec nano, vim, emacs, ou ce que vous voulez. Évitez cependant les programmes graphiques de type gedit. Dans ce fichier, tapez les lignes suivantes, en complétant avec les informations nécessaires:
Package : le nom de votre paquet. C'est par exemple celui utilisé pour apt-get, lorsque vous écrivez apt-get install firefox.
Version : ça se passe de commentaires, le version de votre programme.
Section : je ne sais pas vraiment ce que c'est, laissez "base".
Priority : l'importance de votre paquet pour le système. La plupart du temps, votre programme sera noté "optional", mais si vous voulez plus de choix, rendez-vous ici.
Architecture : les architectures avec lesquelles votre programme est compatible. La plupart du temps, on choisira "all". Pour plus de choix, c'est par ici.
Depends : les dépendances de votre programme.
Maintainer : le nom et l'email de celui qui s'occupe de la création du .deb. On va dire que c'est vous, hein ! :) Le format est "Votre Nom <votre@email>".
Description : la description de votre paquet.
Homepage : l'adresse de votre site internet, si vous en avez un.
Dans le cas de mon script, ça donnera quelque-chose comme ça :
Citation : control
Package: carotte Version: 1.0-sdz Section: base Priority: optional Architecture: all Depends: bash Maintainer: outadoc <[email protected]> Description: Affiche un truc inutile dans la console. Homepage: http://outadoc.fr
Vous pouvez, si c'est nécessaire (c'est facultatif), ajouter des scripts qui seront exécutés avant/après l'installation/la suppression du paquet. Ils auront pour nom :
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
Vous pouvez vous en servir pour déplacer des dossiers, afficher des instructions à l'écran, commander des pizzas... Vos scripts doivent avoir une permission de 755 :
sudo chmod 755 post*
sudo chmod 755 pre*
Je vais, pour ma part, créer un fichier "postinst" :
Bon, on a fait le plus gros. Mais on n'a toujours pas fait l'essentiel ! En effet, jusqu'ici nous avons donné les informations sur le paquet, mais toujours pas le contenu en lui-même. Avouez que ça serait dommage de s'arrêter ici ! :) Là, tout dépend du type de programme que vous empaquetez. Si, comme moi, vous n'avez qu'un simple programme ou script, nous allons supposer qu'il nous faut l'installer dans /usr/bin. Et bien dans ce cas-là, c'est très simple ! Placez-vous à la racine de votre paquet, où se trouve le dossier DEBIAN, et créez un dossier usr/, puis un dossier bin/ à l'intérieur du premier. Le principe est le même pour les autres: considérez la racine du paquet comme la racine du disque. Prenons un exemple : votre programme contient un bibliothèque dynamique libcarotte.so. Elle devra normalement être placée dans un dossier usr/lib dans le paquet, pour se retrouver dans /usr/lib une fois le .deb installé.
Bon ! Si tout est prêt, on va pouvoir transformer tout ça en un paquet .deb ! :D Mettez-vous dans le dossier qui contient votre paquet. Ensuite, tapez cette commande en tant que root :
sudo dpkg-deb --build nom_du_paquet
...où nom_du_paquet est le nom du dossier qui contient le dossier DEBIAN et tout le reste. Et TADAAA ! Un fichier .deb du nom du dossier devrait avoir été créé dans le répertoire courant. Pour l'installer, tapez :
Voilà, vous avez réussi. Bon, j'espère que vous aurez une meilleure idée de programme que moi ! :p Pour désinstaller le paquet, vous utiliserez la commande :
sudo apt-get remove nom_du_paquet
Vous savez maintenant comment créer un paquet Debian, bien plus simple pour installer un programme que d'utiliser de simples dossiers compressés. De plus, vous pourrez éventuellement envoyer vos paquets sur des dépôts après cela... Alléchant, non ? ;)