Le copyright de cet article est partagé entre son auteur et Open Resources. Cet article est distribué sous licence OR Magazine License. On peut lire cette licence ici : http ://www.openresources.com/magazine/license/index.html.
Cet article a été produit pour La Espiral et sa version la plus récente est disponible à : http ://www.laespiral.org.
Adaptation française par Alain Labarthe <a.labarthe@free.fr>. L'auteur de cet article n'est pas responsable de l'oeuvre traduite.
Le paquet est le composant fondamental d'une distribution, mais à l'intérieur de celui-ci il y a beaucoup plus de ce que l'on peut imaginer. Dans cet article nous analyserons la distribution Debian GNU/Linux depuis cette perspective.
Il est important de bien connaître la structure des paquets que les distributions utilisent, parce qu'ainsi seulement nous serons capable de résoudre les problèmes qui pourraient apparaître lors d'une utilisation quotidienne (fichiers corrompus, installation de programmes non proposés par la distribution, etc.).
Bien que les distributions possèdent un grand nombre de programmes (Debian GNU/Linux, par exemple, en a plus de 2500) il est parfois intéressant d'installer des programmes qui ne font pas partie de la distribution elle même, ou qui n'y ont pas été incorporés ; ceci comprend les paquets de programmes que l'on trouve sur Internet ou les paquets commerciaux, de même que ceux créés par l'utilisateur lui-même ; afin de pouvoir le faire, il faudra pouvoir créer ses propres paquets si nous ne voulons pas entrer en conflit avec le système de gestion de paquets. Évidemment si nous voulons contribuer aux différentes distributions avec des programmes, il faudra que ceux-ci soient correctement empaquetés.
Il peut être aussi utile de re-compiler des paquets nouveaux avec des librairies anciennes, c'est le cas par exemple des paquets Hamm de Debian 2.0 compilés pour libc6, que l'on voudrait installer sur un système Bo (Debian 1.3.1), qui lui se sert de libc5, sans rien faire d'autre que de re-compiler le code source et installer le paquet (si la problématique de dépendance était seulement celle là ; la signification de dépendances sera abordé plus tard).
Dans cet article nous verrons en détail le système de paquets de Debian
GNU/Linux du point de vue de la forme du paquet (.deb
) avec la perspective
de préparer le lecteur intéressé par l'introduction faite ci-dessus.
Il faudra tenir compte du fait que le système de paquets est bien plus vaste que le seul format de fichiers qu'il y a derrière la philosophie "comment faire les choses", qui, dans le cas de Debian est une Politique bien définie.
La raison de détailler le système de paquetage Debian est multiple : d'un côté le système de paquets de Debian GNU/Linux est très versatile, avec quelques caractéristiques qui donne une uniformité à la distribution quant à la localisation de programmes et documentations, de même le système Debian GNU/Linux est le plus ouvert en respect à l'incorporation de mainteneurs (en anglais, maintainers) à celui-ci, à la différence d'autres distributions commerciales dans lesquelles cette contribution est limitée. Et finalement, parce que parmi beaucoup d'autres formats de paquets, Debian offre plus que la majorité, comme on pourra le lire dans cet article.
En premier lieu, il faut faire la différence entre ce qui est un système de paquets et le format des paquets pour qu'il n'y ait pas de confusion possible. Le système de paquets est un ensemble de règles propres à une distribution qui indiquent où se situent les programmes, comment s'installent les démons dans le système, quels fichiers de configuration génériques sont accessibles par les programmes, ainsi que les diverses interactions entre les paquets, en indiquant, par exemple, si deux programmes ont des incompatibilités et ne peuvent coexister dans le même système (conflits) ou, si avant d'installer un programme, il est nécessaire d'en installer un autre (dépendances).
Le format des paquets, par exemple les fichiers .deb
dans le cas de Debian
ou .rpm
dans celui de Red Hat, s'identifient normalement au système de paquets.
Mais, si bien sûr le système conditionne la manière dont seront créés et distribués
les paquets (les règles à suivre pour s'installer), il est possible d'installer
des paquets d'autres distributions dans notre système, nous pourrons même trouver
des outils pour le faire. Par exemple alien est un programme (disponible en
paquet Debian) qui, une fois installé, permet d'introduire des paquets qui
n'appartiennent pas à la distribution Debian (comme rpms) puisqu'il "connaît"
divers formats et est capable de les "traduire" pour notre distribution. Le format,
même lié au système, n'est pas beaucoup plus que cela. Les différences entre
un .deb
et un .rpm
sont pratiquement les mêmes qu'entre un .zip
et un .arj
.
N'empêche qu'il y a un risque lorsque l'on mélange les paquets de diverses
distributions, puisque leur politique, le système de paquets, est différente.
Pour l'illustrer avec un exemple : Debian et Red Hat ont une politique différente
pour ce qui est de la localisation des programmes qu'exécutent les démons de
démarrage, même si les deux suivent le modèle System V (Slackware suit elle
le modèle BSD et les placent donc ailleurs), Red Hat place les démons dans
l'archive /etc/rc.d/init.d
avec les liens symboliques dans /etc/rc.d/rcX.d
alors que Debian le fait dans /etc/init.d
avec les liens symboliques dans /etc/rcX.d
; et ce n'est pas la seule différence. Il est évident que si nous installons
un paquet d'une distribution qui fournit des démons devant s'exécuter dans
le démarrage d'une autre, il est possible que cela ne fonctionnera pas.
Cela fait un moment déjà qu'un débat existe sur une possible standardisation des systèmes de paquets, qui peut être se fera comme s'est déjà faite l'homogéinisation de la structure des répertoires au travers du Linux Filesystem Structure. Dans le futur, il y aura donc, peut-être, une meilleure compatibilité entre les distributions.
Nous allons voir, dans ce qui suit, les démarches et les outils nécessaires
à la création d'un paquet dans un système Debian GNU/Linux. Nous allons choisir
le paquet hello puisque c'est celui qu'offre Debian pour montrer le système
de construction de paquets, ce n'est rien de plus que la version GNU de hello
,
un simple programme bien connu des programmeurs qui écrit "Hello world" sur la sortie standard.
Premièrement nous récupérons les trois fichiers du paquet Debian
hello, c'est
à dire : hello_x.x.orig.tar.gz
, hello_x.x-xx.diff.gz
y hello_x.x-xx.dsc
(où
x
est le numéro de version). Tous ces paquets peuvent se retrouver dans une
distribution de Debian à :
stable/main/source/misc.
Le premier d'entre eux est le code source original, le second est un fichier indiquant les différences entre l'arborescence du code source (le répertoire où se trouve le code source) et l'arborescence source Debian, et le troisième est une brève description du paquet, qui comme nous le verrons plus tard est signé avec PGP (Pretty Good Privacy, voir plus bas) par la personne qui l'a empaqueté et a donc une valeur de contrôle (fonction hash MD5) des deux fichiers antérieurs afin de pouvoir détecter s'ils ont été modifiés par quelqu'un d'étranger au mainteneur (utile pour détecter les "chevaux de Troie").
Pour commencer nous exécuterons, avec les trois fichiers dans un même répertoire,
dpkg-source -x hello_x.x-xxx.dsc
, qui fabriquera un untar du fichier initial
(générant la structure de répertoires de l'arborescence source original) et,
par la suite, nous appliquerons le programme patch pour incorporer les modifications
qui ont été faites sur le paquet dans Debian. A l'intérieur du répertoire généré,
qui sera de la forme nom_du_paquet-version, nous exécuterons dpkg-buildpackage
, qui, si tout va bien laissera dans le répertoire antérieur, un fichier hello_xxx.deb
qui sera le paquet prêt à être installer.
Le processus de construction du paquet est réalisé par la commande dpkg-buildpackage
qui exécute dans l'ordre : dpkg-source, debian/rules (avec les méthodes clean,
build et binary), dpkg-shlibdeps, dpkg-gencontrol, dpkg-genchanges, et PGP;
plus avant nous en verrons la signification bien que l'on puisse voir la démarche
suivie à l'aide de la figure1.
Fig. 1 : Démarches suivies pour construire un paquet
Il faut être root (super-utilisateur) pour faire tout cela étant donné qu'une série des opérations ont besoin des privilèges de cet utilisateur, comme le changement de propriétaire des fichiers (qui deviennent propriété du super-utilisateur et de son groupe en règle générale). Ce qui peut devenir un problème lorsqu'un utilisateur veut générer un paquet et qu'il n'a pas ces droits. Il existe pour y remédier le programme fakeroot qui fait croire au système que l'utilisateur est le super-utilisateur, ceci ne suppose aucun problème de sécurité puisqu'en réalité il ne s'agit que d'une tromperie pour l'utilisateur et ses applications, qui de toute façon, n'acquièrent aucun des droits du super-utilisateur).
Debian se sert de PGP (bien que cela changera rapidement vers GPG) pour
certifier de l'authenticité et de l'intégrité des paquets, étant donné que
le système d'insertions de paquets faits par les mainteneurs de Debian est
semi-automatique (via divers serveurs ftp anonymes et les machines Debian)
et, il est aussi possible que des personnes étrangères à Debian (ou d'autres
développeurs de Debian) envoient des changements, par exemple pour arranger
certaines erreurs critiques. Il est donc important que ces paquets soient signés
par celui qui a fait ces modifications (dpkg-buildpackage appelle PGP lorsqu'il
termine) et les protéger contre des modifications après que le mainteneur ait
donné sa version. Ainsi, le fichier .dsc
qui contient une description du paquet
et une "trace" des fichiers vus antérieurement, est signé au moyen d'une fonction
"hash" très connue : MD5. Le fichier .changes qui contient les modifications effectuées sur
cette version devra être signé s'il existe.
Comme nous avons vu lors de l'exemple précédent, Debian possède une série d'outils dont il faudra se servir. Les voici :
.changes
).debian/files
.changelog
d'une arborescence
Debian désempaquetée et génère une sortie avec l'information de ces changements
convenablement préparée.Debian contrôle les caractéristiques et l'évolution du paquet au travers d'une série de fichiers. Comme la description du paquet, les dépendances avec d'autres paquets, les bibliothèques installées, les changements produits dans le paquet, règles pour construire et compiler les binaires du paquet, etc.
Ceci s'obtient avec le répertoire debian/
, qui en règle générale es le
seul rajouté par Debian au code source original d'un paquet. Dans ce répertoire
se trouve un ensemble de fichiers (voir la figure 1) qui doivent suivre les
règles définies par la
charte Debian dans laquelle est expliqué le contenu de ceux-ci ainsi
que leur format.
Dans le fichier control
les caractéristiques du paquet sont décrites ,
il s'agit simplement de ce qui s'observe lorsqu'on exécute dpkg --status sur
un paquet déjà installé ou dpkg --info sur un qui n'est pas installé (sur le
fichier .deb
). Les champs sont :
Le fichier rules
contient lui les règles pour construire le paquet et qui
seront celles appelées par les programmes de construction de paquets. Il s'agit
d'un "Makefile
", un fichier usuel pour ceux qui sont habitués à compiler des
programmes dans un environnement UNIX. Dans ce fichier nous trouverons une
série de règles et d'objectifs à accomplir. Dans ces objectifs nous pouvons
en souligner certains importants :
debian/tmp
, en y mettant les
programmes, la documentation et les librairies, changeant aussi les permissions
et les propriétaires comme il conviendra. Le premier effectue les tâches indépendantes
de l'architecture et le second les tâches pour une architecture déterminée.Le fichier changelog
documente les changements fait lors de la débianisation
du programme, ces changements se réfèrent aux particularités de Debian et non
pas à ceux qui peuvent se faire dans le code source ; à la racine il y aura
généralement un fichier changelog
qui documentera les changements apportés
au programme. Il suit un format spécifique, bien qu'on puisse utiliser dch
ou debchange pour le modifier. Il faut se rappeler qu'en général la personne
qui maintient le paquet (et qui le construit) est distincte de l'auteur du
programme lui-même. Bien que Debian ait des paquets faits expressément pour
son système et élaborés par ses mainteneurs, ce n'est pas la règle générale,
le
contrat social de Debian a pour but de rendre disponible les programmes de libre distribution sur
un système stable et homogène.
Dans conffiles
sont listés les fichiers de configuration qui installent
le paquet. Ceci est nécessaire pour que Debian ne ré-écrive pas les fichiers
de configuration que l'utilisateur auraient modifiés. Au moment d'installer
un programme, s'il y a des fichiers de configuration, Debian indiquera qu'ils
sont différents et donnera l'opportunité d'installer le nouveau ou laisser
l'ancien, solutionnant alors le problème que pourrait poser une installation
d'une nouvelle version d'un paquet qui détruirait le travail réalisé lors de
la configuration.
Les scripts preinst, postinst, prerm et postrm sont des scripts exécutés
par l'installateur de paquets lors des diverses phases de l'installation, respectivement
avant (pre
) et après (post
) d'être installés (dpkg--install) ou retirés (dpkg--remove)
du système.
Enfin, le fichier README.debian
contient les détails ou les différences
entre le paquet original et la version de Debian. Ce fichier se trouvera, une
fois installé le paquet, dans /usr/doc/nom_du_paquet
, avec toute la documentation,
le copyright et le fichier de changement (de la version originale et de celle
de Debian).
Il existe d'autres fichiers : menu
, init.d
, crontab
... qui peuvent être
utilisés pour intégrer encore plus le paquet dans le système.
Il y a certains outils qui ne font pas partie des "standards" de Debian, mais qui peuvent être utiles à la création de paquets, vu qu'ils simplifient certaines tâches courantes à réaliser lors de la construction d'un paquet.
L'un d'entre eux est
debmake, bien qu'il soit désuet et peu recommandé, qui contient
un bon nombres d'utilitaires pour la création de paquets. Par exemple en exécutant
debmake sur l'arborescence racine originale, il va se générer un répertoire
debian
ainsi que tous ses fichiers, prêts pour que l'utilisateur puisse les
modifier convenablement.
Beaucoup de ces utilitaires de debmake ont été retirés, puisque certainement
cet outil disparaîtra, mais ils ont été incorporés, ainsi que d'autres, au
paquet
devscripts qui contient : debchange, debclean, release, build, depkg, debi, debc,
dch, uupdate, uscan, ainsi que deblint, un outil très utile pour vérifier que
le paquet remplit strictement toutes les conditions de la charte Debian. L'usage
de ces outils est très simple, par exemple : pour incorporer les changements
au fichier debian/changelog
on peut exécuter dch texte_du_changement, et si
en plus on veut que ce soit une nouvelle version dch -n texte_du_changement,
le programme ajoutera automatiquement l'en-tête et le pied de lettre suivant
le format définit (indiquant la date, l'heure et le développeur).
Le paquet
debhelper contient un bon nombre d'outils utilisables pour construire,
de manière très simple, le fichier debian/rules
, en automatisant les tâches
habituelles : installer les fichiers, les comprimer, arranger les permissions,
intégrer le paquet avec le système de menu Debian, etc. Tous les utilitaires
fournis dans ce paquet commencent par dh_, nous avons ainsi : dh_installdocs,
dh_installexamples, dh_checkroot...
Et n'oublions pas de mentionner cvs-buildpackage qui permet lui de créer des paquets à partir d'un CVS ("Concurrent Versions System", un système de contrôle de versions très souple et employé couramment).
les fichiers .deb
générés par le processus antérieurement décrit ne sont
rien de plus qu'une série de fichiers encaténés par le programme ar, au total
de trois : data.tar.gz
, control.tar.gz
et debian-binary
. Les deux premiers
sont, d'un côté un tar.gz
(data.tar.gz
) avec l'arborescence de répertoires
qui se créé dans et qui se désempaquète directement à la racine
du disque dur au moment d'installer, et de l'autre côté le répertoire
DEBIAN
(control.tar.gz
) qui contient beaucoup des fichiers vus dans debian/
, bien
que certains seront modifiés.
Il est possible d'extraire séparément certains fichiers, le tar.gz
avec
la commande dpkg -x fichier.deb répertoire_cible et le DEBIAN
avec la commande
dpkg -c fichier.deb répertoire_cible. En réalité cela peut aussi être fait
avec ar -x fichier.deb, ce qui rend possible d'installer un paquet Debian et
ce même sur un système qui ne connaît pas de distribution, en ayant simplement
l'utilitaire ar installé. On peut aussi construire un fichier .deb
(c'est à
dire faire le processus inverse) avec le programme ar ou avec dpkg --build
répertoire qui créera le fichier répertoire.deb
.
Nous n'avons pas parlé de la charte Debian par rapport à l'installation
des paquets, qui définit depuis où doivent se situer les fichiers jusqu'à quelles
modifications peuvent se faire sur un paquet ou un système, ou bien grâce à
quelles méthode cela peut se faire (en utilisant par exemple le système menu
pour inclure des applications dans les menus de tous les gestionnaires de fenêtres
X). Nous recommandons au lecteur de consulter l'appendice "plus d'informations" pour rentrer dans les détails, il n'empêche
qu'il est intéressant de commenter quelques unes des différences qui font que
Debian soit supérieur à d'autres systèmes :
http ://localhost/doc
) et de l'installation d'un serveur (racine du serveur et hébergement de CGIs
) ce qui permet aux paquets de s'intégrer au serveur ouaibe local du réseau.Aussi, un travail se fait sur l'éventuelle utilisation de linuxconf
. Diverses
sélections préfabriquées de paquets sont déterminées afin que l'utilisateur
puisse choisir parmi un éventail générique (développement ouaibe, jeux, développement
de logiciels...) à l'installation et obtenir une sélection de paquets conformes,
n'ayant pas ainsi à naviguer parmi les 2500 paquets disponibles avec la Debian
2.1.
Avec ceci et plus, Debian démontre que son système de paquets est robuste et fiable, plus encore que les autres distributions. Conjugué à la qualité et la variété des logiciels qui accompagnent la distribution, le fait d'être un système ouvert à ceux qui désirent y collaborer (peut-être le lecteur, après avoir lu cet article, voudra en faire partie) le place comme un système à prendre en considération dans le monde GNU/Linux.
templar@root :/tmp/hello-1.3$ dpkg-buildpackage dpkg-buildpackage : source package is hello dpkg-buildpackage : source version is 1.3-13 dpkg-buildpackage : build architecture is i386 debian/rules clean test -f hello.c -a -f debian/rules rm -f build make -i distclean || make -f Makefile.in distclean make[1] : Entering directory `/tmp/hello-1.3' rm -f hello *.o core test.out hello.dvi hello.?? hello.??s rm -f Makefile config.status make[1] : Leaving directory `/tmp/hello-1.3' rm -rf *~ debian/*~ debian/files* dpkg-source -b hello-1.3 dpkg-source : building hello using existing hello_1.3.orig.tar.gz dpkg-source : building hello in hello_1.3-13.diff.gz dpkg-source : building hello using existing hello_1.3.orig.tar.gz dpkg-source : building hello in hello_1.3-13.diff.gz dpkg-source : building hello in hello_1.3-13.dsc debian/rules build test -f hello.c -a -f debian/rules ./configure --prefix=/usr checking for gcc (...) make[1] : Entering directory `/tmp/hello-1.3' (...) gcc -o hello hello.o version.o getopt.o getopt1.o make[1] : Leaving directory `/tmp/hello-1.3' touch build debian/rules binary test -f hello.c -a -f debian/rules test root ="`whoami`" test -f hello.c -a -f debian/rules test -f hello.c -a -f debian/rules rm -rf install -d /DEBIAN install -d /usr/doc/hello cp debian/{postinst,prerm} /DEBIAN/. chmod +x /DEBIAN/{postinst,prerm} make CFLAGS=-O2 LDFLAGS=-s INSTALL_PROGRAM='install -c -s' \ prefix=/usr install make[1] : Entering directory `/tmp/hello-1.3' ./mkinstalldirs /usr/bin /usr/info install -c -s hello /usr/bin/hello /usr/bin/install -c -m 644 ./hello.info /usr/info/hello.info make[1] : Leaving directory `/tmp/hello-1.3' g zip -9v /usr/info/* cp debian/copyright /usr/doc/hello/. cp debian/changelog /usr/doc/hello/changelog.Debian cp ChangeLog /usr/doc/hello/changelog gzip -9v /usr/doc/hello/changelog{,.Debian} dpkg-shlibdeps hello dpkg-gencontrol chown -R root.root chmod -R g-ws dpkg --build .. d pkg-deb : building package `hello' in `../hello_1.3-13_i386.deb'. signfile hello_1.3-13.dsc Pretty Good Privacy(tm) 2.6.2i - Public-key encryption for the masses. (c) 1990-1995 Philip Zimmermann, Phil's Pretty Good Software. 7 May 95 (...) dpkg-genchanges dpkg-genchanges : not including original source code in upload signfile hello_1.3-13_i386.changes Pretty Good Privacy(tm) 2.6.2i - Public-key encryption for the masses. (c) 1990-1995 Philip Zimmermann, Phil's Pretty Good Software. 7 May 95 (...) dpkg-buildpackage : diff-only upload (original source NOT included) ***
Avec Debian, les noms des paquets suivent une structure standard qui est
: nom+version+architecture.deb
. L'architecture pourra être i386 (PCs avec processeur
386 ou supérieur), alpha, sparc ou m68k, mais des efforts sont faits pour porter
Debian sur d'autres architectures comme PowerPC ou ARM. Le numéro de version
est du type :[époque]version-upstream[-revision-debian]
.deb
. Normalement le format utilisé par l'auteur initial est conservé
(bien que parfois il doive être modifié pour qu'il n'y ai pas de conflits),
il peut seulement être composé de caractères alphanumériques, '+','-','.' ou
' :' et doit commencer par un chiffre.Suivre ce schéma est important parce que Debian s'en sert pour résoudre les conflits et les dépendances, qui dépendent souvent d'une version déterminée. Seulement grâce à un schéma fixe dpkg pourra savoir si une version est nouvelle ou plus ancienne qu'une autre.
#!/usr/bin/make -f # Exemple de fichier debian-rules - pour GNU Hello (1.3) # Copyright 1994,1995 pour Ian Jackson. # Je te donne la permission perpétuelle et illimitée pour copier, modifier et # re-licencer ce fichier, à la condition de ne pas effacer mon nom de ce fichier # (J'assure mon droit moral à la paternité à l'aide du Copyright, Design et brevets # de 1988) # Ce fichier peut avoir besoin de modifications étendues. # Il y avait des objectifs appelés 'source' et 'diff' dans ce fichier et # beaucoup de paquets qui ont eu 'changes' et 'dist'. Ces fonctions ont été # réunies dans dpkg-source, dpkg-genchanges et dpkg-buildpackage de façon # indépendante au paquet, ces objectifs sont alors obsolètes. package=hello build : $(checkdir) ./configure --prefix=/usr $(MAKE) CFLAGS=-O2 LDFLAGS= touch build clean : $(checkdir) -rm -f build -$(MAKE) -i distclean || $(MAKE) -f Makefile.in distclean -rm -rf *~ debian/*~ debian/files* binary-indep : checkroot build $(checkdir) # No hay ningun fichero independiente de arquitectura generado por # este paquete. Si lo hubiera se haría aquí. binary-arch : checkroot build $(checkdir) -rm -rf install -d /DEBIAN install -d /usr/doc/$(package) cp debian/{postinst,prerm} /DEBIAN/. chmod +x /DEBIAN/{postinst,prerm} $(MAKE) CFLAGS=-O2 LDFLAGS=-s INSTALL_PROGRAM='install -c -s' \ prefix=/usr install gzip -9v /usr/info/* cp debian/copyright /usr/doc/$(package)/. cp debian/changelog /usr/doc/$(package)/changelog.Debian cp ChangeLog /usr/doc/$(package)/changelog gzip -9v /usr/doc/$(package)/changelog{,.Debian} dpkg-shlibdeps hello dpkg-gencontrol chown -R root.root chmod -R g-ws dpkg --build .. define checkdir test -f $(package).c -a -f debian/rules endef # Esto de aquí abajo es bastante genérico binary : binary-indep binary-arch source diff : @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false checkroot : $(checkdir) test root = "`whoami`" .PHONY : binary binary-arch binary-indep clean checkroot
On peut trouver plus d'informations sur le système de paquets Debian sur
le site officiel du projet,
http ://www.debian.org (le miroir français est
http ://www.fr.debian.org) où il y a une série
de paquets qui fournissent de la documentation détaillée sur le fonctionnement
du système de paquets Debian, et qui sont :
debian-policy (la charte à suivre pour créer
des paquets Debian), et
developers-reference (information pour ceux qui veulent devenir des développeurs
officiels de Debian), bien que l'on puisse aussi trouver beaucoup d'informations
dans un système Debian, installées dans /usr/doc/dpkg
et /usr/doc/debian
. Les
listes de diffusion sont aussi une source importante d'information, on les trouve
indexées sur le site de Debian ; en général,
la liste debian-devel@lists.debian.org traite de tous les sujets d'importance
pour les développeurs Debian, il existe aussi une liste pour les utilisateurs
courants anglophones (debian-user) ainsi que pour ceux espagnols (debian-user-spanish).
(Ndt : et pour les francophones, il s'agit de la fameuse "debian-french")
Dans les copies de la distribution Debian on peut aussi trouver plus d'information dans le sous-répertoire projects.
La version originale de cet article est disponible à
http ://www.openresources.com/es/magazine/making-debian-packages/
, dans la
revue Open Resources.