Suite à de nombreuses recherches en anglais et bien souvent assez hard, je me suis dis qu'expliquer mes nombreuses heures de déboires pourraient en aider plus d'un.

Les paquets utiles

  • dpkg-dev
  • gcc
  • make
  • patch
  • perl
  • dh-make et debhelper
  • autoconf et automake
  • fakeroot
  • gnupg

Voila normalement si vous utilisez correctement apt-get vous devriez avoir une belle config a ce stade, donc on peut démarrer le plus marrant : la création du paquet.

Préambule

Dans un soucis de compréhension, mettons que nous avons de base l'architecture ci-contre :
-helloword-1.0/
+-- helloworld.c
+-- Makefile

Nous passerons sur le codage d'un helloworld, et voyons plutôt le Makefile :
DESTDIR=
BINDIR=/usr/bin
all: oldboy 

oldboy : helloworld.c
  gcc helloworld.c -o helloworld

clean:
  rm -f helloword

install:
  install -d -m 0755 -o root -g root $(DESTDIR)/$(BINDIR)
  install -m 0755 -o root -g root helloworld $(DESTDIR)/$(BINDIR)

Le répertoire d'installation doit être DESTDIR

Étape 1 - Compression

On crée un tar.gz du programme. La forme du nom est extrêmement importante

Makefile helloworld.c
$>tgz helloworld_1.0.orig.tar.gz helloworld-1.0/
Writing gzip'd tar archive to "helloworld_1.0.orig.tar.gz".
...

Étape 2 - Création

On crée un squelette de paquet avec dh_make.

$>cd helloworld-1.0/
$>dh_make
ldap_sasl_interactive_bind_s: No such attribute (16)
Type of package: single binary, multiple binary, library, kernel
module or cdbs?
[s/m/l/k/b] s
Maintainer name : OLD boy
Email-Address : oldboy@fai.fr
Date : Wed, 7 Nov 2007 15:51:18 +0100
Package Name : helloworld
Version : 1.0
License : blank
Type of Package : Single
Hit  to confirm:

A ce stade vous vous apercevez que dh_make a crée pour vous tout un tas de fichiers dans un répertoire nommé debian. La moitié de ces fichiers sont des exemples ".ex" donc vous pouvez allègrement les détruire. Le même sort peut être appliqué au fichier dirs, docs et README.debian

Étape 3 - Édition

Nous allons maintenant pouvoir éditer les fichiers importants.

control

Source: helloworld
Section: misc
Priority: optional
Maintainer: OLD boy 
Build-Depends: debhelper (>= 5)
Standards-Version: 3.7.2
Package: helloworld
Architecture: all
Depends:
Description: program that displays hello world.

copyright

This package was debianized by OLD boy 
 on Thu, 30 Apr 2008 14:12:07 +0100.
Upstream Author: OLD boy 
Copyright: 2007 OLD boy
License: public domain
The Debian packaging is (C) 2007, OLD boy  and
is licensed under the GPL, see `/usr/share/common-licenses/GPL'.

changelog

helloworld (1.0-1) unstable; urgency=low
* Initial release.
-- OLD boy  Thu, 30 Apr 2008 14:12:07 +0100

Étape 4 - Construction

Bien nous allons maintenant pouvoir passer à la dernière étape qui consiste en la construction de notre paquet .deb.
Pour se faire nous allons nous placer dans helloworld-1.0 et utiliser dpkg comme suit :

$>cd helloworld-1.0
$>dpkg-buildpackage -rfakeroot

Laissez le gentiment travaillez ca ne devrait pas être long du tout. Une fois terminé vous pourrez alors admirer le travail. :)

$>ls .. -l
total 32
drwxr-xr-x 3 oldboy oldboy 4096 2007-11-07 16:06 helloworld-1.0
-rw-r--r-- 1 oldboy oldboy 2856 2007-11-07 16:06 helloworld_1.0-1_all.deb
-rw-r--r-- 1 oldboy oldboy 1392 2007-11-07 16:06 helloworld_1.0-1.diff.gz
-rw-r--r-- 1 oldboy oldboy 329 2007-11-07 16:06 helloworld_1.0-1.dsc
-rw-r--r-- 1 oldboy oldboy 733 2007-11-07 16:06 helloworld_1.0-1_i386.changes
-rw-r--r-- 1 oldboy oldboy 526 2007-11-07 15:49 helloworld_1.0.orig.tar.gz
Et voilà le travail !

Informations supplémentaires

Vous pouvez toujours voir la référence debian en la matière pour plus amples informations notamment concernant les options du fichier control : Guide du nouveau responsable Debian