====== Préparation d'une source pour la création d'un paquet "Debian/Ubuntu" ======
Nous allons voir ici comment faire pour préparer la création d'un paquet Debian/Ubuntu "propre" (ou presque) à partir de zéro.
:?: Pour comprendre 8-o les étapes nécessaires à la création de ce nouveau paquet, prenons l'exemple de ce logiciel simple AVE.
===== Exemple du logiciel AVE non compilé et très simple =====
1. Télécharger les sources du logiciel {{abuledu:mainteneur:ave-1.0.tar.gz|ave-1.0.tar.gz}}
2. Décompressez-le dans votre répertoire de travail
3. Analyser ce logiciel pour trouver ce dont il a besoin pour fonctionner, c'est la recherche des dépendances, quels autres paquets Debian ce logiciel nécessite ... par exemple dans notre cas il faut
* python
* python-gtk2
===== Définir le nom du paquet à construire =====
Dans l'exemple ci-dessus nous voulons construire un paquet deb qui s'appelera :
abuledu-ave_1.0-ryxeo1.deb
Pour obtenir ce résultat, les fichiers suivant doivent contenir
- dans **control** : abuledu-ave
- dans **changelog** : abuledu-ave (1.0-ryxeo1)
En regardant après installation dans synaptic, on retrouve les informations, dans l'exemple ci-dessous, le nom déclaré était **ave** à la place de **abuledu-ave** et la version était **1.0-lprod1** au lieu de **1.0-ryxeo1**.
{{abuledu:mainteneur:ave.jpg|}}
La description du logiciel provient de la section description du fichier **control**.
===== Création des fichiers nécessaires au paquet debian/ubuntu =====
Un paquet debian/ubuntu doit normalement contenir 8 fichiers de références, **control**, **changelog**, **copyright**, **rules**, **menu**, **postinst**, **postrm**, **prerm**.
Seuls les fichiers **control**, **changelog**, **copyright**, **rules**, **menu** sont **indispensables**
Pour commencer votre travail de création de paquet, commencez par créer un répertoire "**debian**" dans vos fichiers sources dans lequel vous mettrez les 8 fichiers suivants.
==== debian/control ====
Source: abuledu-ave
Section: universe/x11
Priority: extra
Maintainer: Eric Seigne
Build-Depends: debhelper
Standards-Version: 3.6.2.1
Package: abuledu-ave
Architecture: all
Depends: python, python-gtk2
Description: ave, petit logiciel pour apprendre a faire un paquet
Ce logiciel affiche une boite "hello world" en version romaine
Remplacez les informations et adaptez à votre logiciel en prenant comme modèle l'exemple ci-dessus :
* Source : Le nom de la source du logiciel
* Section : la liste des sections possibles se trouve [[http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections|ici sur le site Debian (anglais)]]
* Priority : Il existe 5 solutions pour renseigner cette ligne, choisissez celle qui convient le mieux à votre paquet
|Niveau|signification|
|required|indispensable|
|important|doit être dans tout système GNU/Linux|
|standard|peut être dans tout système GNU/Linux|
|optional|paquets intéressants suivant l'installation réalisée|
|extra|paquets optionnels qui simplifient GNU/Linux|
:?: Plus de détails ici : [[http://www.debian.org/doc/manuals/reference/ch-system.fr.html#s-pkg-basics|Guide du mainteneur Debian]]
* Maintainer : Mettez votre prénom, votre nom et votre adresse email valide où l'on peut vous contacter en respectant la structure
* Architecture:
|type d'ordinateur|conditions nécessaires|ce qu'il faut mettre|
|Toutes plateformes|Les scripts qui marchent sur toutes les architectures du monde|**all** ou **any**|
|i386|Les scripts ne marchent que sur intel386|**i386**|
* Depends (valable aussi pour Build-Depends) : Vous complétez la liste des dépendances du logiciel, par exemple il a besoin de Mencoder, vous mettez **mencoder**. Si vous souhaitez en plus un contrôle de version, rajoutez **(>= 4.0.0)**, ce qui donne **mencoder (>= 4.0.0)**.
==== debian/changelog ====
abuledu-ave (1.0-ryxeo1) dapper; urgency=low
* nouvelle version du logiciel
* avec la liste des choses qui sont arrivees dans cette version
-- Eric Seigne Wed, 11 Apr 2007 11:03:26 +0200
- Pour ce fichier le nom déclaré, ici **abuledu-ave** doit parfaitement correspondre à celui déclaré dans le fichier **control**
- La version du logiciel sera indiquée entre les parenthèses.
==== debian/copyright ====
This package was debianized by Eric Seigne on
Wed, 11 Apr 2007
It was downloaded from
http://docs.abuledu.org
Upstream Author: Autre Développeur
Copyright:
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License with
the Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL;
if not, write to the Free Software Foundation, Inc., 51 Franklin St,
Fifth Floor, Boston, MA 02110-1301, USA.
==== debian/rules ====
C'est ce fichier qui embarque réellement "l'intelligence" de la création du paquet ...
#!/usr/bin/make -f
# -*- mode: makefile; coding: utf-8 -*-
# # Copyright (c) 2007 Eric Seigne
DEB=debian/abuledu-ave
DEST=usr/share/abuledu-ave
include /usr/share/cdbs/1/rules/debhelper.mk
common-install-indep::
mkdir -p $(DEB)/$(DEST)
mkdir -p $(DEB)/usr/bin
cp abuledu-ave $(DEB)/usr/bin
mkdir -p $(DEB)/usr/share/pixmaps
cp debian/abuledu-ave.xpm $(DEB)/usr/share/pixmaps
chmod 755 $(DEB)/usr/bin/abuledu-ave
chown -R root:root $(DEB)
Remarquez le fichier abuledu-ave.xpm qui est dans le repertoire debian/ en effet le développeur n'a pas distribué d'icone pour son application, le mainteneur de paquet l'ajoute donc, c'est à vous de créer une image d'icone ! Inspirez vous des icones systèmes ... ou réutilisez-en une !
==== debian/menu ====
C'est le fichier qui détermine le menu qui sera utilisé dans gnome/kde/et autres applications compatibles
?package(abuledu-ave):needs="X11"\
section="XShells"\
hints="AVE"\
title="AbulEdu AVE"\
icon="/usr/share/pixmaps/abuledu-ave.xpm"\
command="/usr/bin/abuledu-ave"
==== debian/postinst ====
Si vous avez besoin de lancer une commande spéciale après l'installation du paquet, c'est dans ce fichier que ça se passe
=== debian/preinst ===
Si vous avez besoin de lancer une commande spéciale avant l'installation du paquet, c'est dans ce fichier que ça se passe
==== debian/postrm ====
Si vous avez besoin de lancer une commande spéciale après la suppression du paquet, c'est dans ce fichier que ça se passe
==== debian/prerm ====
Si vous avez besoin de lancer une commande spéciale avant la suppression du paquet, c'est dans ce fichier que ça se passe
===== Lancer la création du paquet =====
Vous êtes maintenant dans la situation d'un mainteneur de paquet existant, vous pouvez donc passer à la [[abuledu:mainteneur:creer_un_paquet|l'étape suivante]] ...
===== Pour en savoir plus sur Internet =====
- [[http://www.debian.org/doc/manuals/maint-guide/|Guide officiel Debian du mainteneur de paquet]]
Revenir au menu [[abuledu:mainteneur:mainteneur|Mainteneur]]