Table des matières

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 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

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.

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 <eric.seigne@ryxeo.com>
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 :

Niveausignification
requiredindispensable
importantdoit être dans tout système GNU/Linux
standardpeut être dans tout système GNU/Linux
optionalpaquets intéressants suivant l'installation réalisée
extrapaquets optionnels qui simplifient GNU/Linux

:?: Plus de détails ici : Guide du mainteneur Debian

type d'ordinateurconditions nécessairesce qu'il faut mettre
Toutes plateformesLes scripts qui marchent sur toutes les architectures du mondeall ou any
i386Les scripts ne marchent que sur intel386i386

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 <eric.seigne@ryxeo.com>  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 <eric.seigne@ryxeo.com> on
Wed, 11 Apr 2007

It was downloaded from
http://docs.abuledu.org

Upstream Author: Autre Développeur <adresse.email@domaine.ext>

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 <eric.seigne@ryxeo.com>

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 l'étape suivante

Pour en savoir plus sur Internet

- Guide officiel Debian du mainteneur de paquet

Revenir au menu Mainteneur