Ce document va nous permettre de parcourir le document Debian Policy en essayant de fabriquer un vrai paquet Debian. Debian Policy est un document de référence qui indique précisément les règles de fabrication des paquets Debian.

Toutefois, c'est un document long à parcourir car il tente de traiter tous les cas possibles. Nous allons donc essayer de le lire tout en applicant ses principes à un paquet qui n'existe pas encore dans Debian: pgrouting.

A propos de pgrouting

pgrouting est un outil qui s'appuie sur PostgreSQL et PostGIS pour calculer le plus court chemin entre deux points sur un réseau. Il est publié sous la licence GPL v2. Nous allons travailler avec la version stable: 1.05 disponible ici: http://download.osgeo.org/pgrouting/source/pgrouting-1.05.tar.gz .

Chapitre 1

Ce châpitre donne des indications sur le document en lui-même. On apprend qu'on ne retrouvera pas tout dedans. Effectivement, il n'y a pas grand chose sur les outils Debian qui permettent de fabriquer des paquets...

Passons à la suite

Chapitre 2: l'archive Debian

On pourrait croire que cette partie n'est qu'informative. Pourtant, elle a déjà des conséquences pour notre paquet. Le plus important concerne les DFSG (Debian Free Software Guidelines). Ces grands principes permettent de savoir si notre logiciel peut intégrer le projet Debian ou non et comment.

Passons en revue les DFSG

Avant toute chose, nous devons savoir quelle est la licence de pgrouting. Dans les sources que nous venons de télécharger se trouve un fichier nommé COPYING qui contient le texte de la licence du logiciel. Il s'agit de la GPL v2. Munis de cette information, nous pouvons voir si le logiciel répond aux DFSG ou pas. Passons les en revue point par point.

  • Redistribution Libre: pour ce principe, la licence ne doit pas empêcher la vente ou la distribution comme un composant d'un ensemble de logiciels. Ce dernier point est essentiel: Debian, en tant que distribution de programmes est spécifiquement un ensemble de logiciels issus de différentes sources. En ce qui concerne la licence GPLv2, il n'y a pas de problème: elle a été spécialement écrite pour permettre la libre diffusion des sources du programme.
  • code Source: Le programme doit inclure le code source et autoriser sa distribution ainsi que la diffusion sous forme compilée. Encore une fois, la GPLv2 est complètement en phase avec cette notion.
  • Travaux dérivés: la licence doit permettre les modifications et les travaux dérivés ainsi que la distribution de ces travaux dérivés selon des termes identiques à la licence du programme originel. Sur ce point, la GPLv2 ne pose, encore une fois, aucun problème. A noter que c'est une notion essentielle pour la distribution Debian: lorsque vous construisez un paquet, vous devez parfois créer un ou plusieurs patchs de manière à ce que le programme s'adapte et compile dans l'environnement Debian. A ce niveau, un patch est un travail dérivé et il est important qu'il puisse être distribué.
  • Intégrité du code source de l'auteur: La licence peut restreindre la publication de version modifiée du code source uniquement si elle autorise la publication de patch.

    The license may restrict source-code from being distributed in modified form only if the license allows the distribution of "patch files" with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software. (This is a compromise. The Debian Project encourages all authors to not restrict any files, source or binary, from being modified.)

  • Pas de discrimination envers des groups ou des personnes: en gros, la licence ne doit pas contenir de trucs genre "interdit aux terroristes ou aux pauvres" ! La licence GPLv2 ne contient pas ce genre de choses (heureusement)...

    1. No Discrimination Against Fields of Endeavor

    The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.

    1. Distribution of License

    The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.

    1. License Must Not Be Specific to Debian

    The rights attached to the program must not depend on the program's being part of a Debian system. If the program is extracted from Debian and used or distributed without Debian but otherwise within the terms of the program's license, all parties to whom the program is redistributed must have the same rights as those that are granted in conjunction with the Debian system.

    1. License Must Not Contaminate Other Software

    The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be free software.

  • Exemples de licences: nous aurions dû lire ce point en premier: la licence GPL est directement citée comme étant une licence respectueuse des DFSG.

Quelle partie de l'archive Debian ?

Nous avons le choix entre les 3 parties de l'archive Debian:

  • main
  • contrib
  • non-free

Je vous laisse regarder la différence entre ces 3 parties directement dans Debian Policy

On voit que les logiciels qui veulent intégrer main qui est la vraie distribution Debian, doivent certes respecter les DFSG (ce qui est notre cas) mais également d'autres conditions:

  • le programme ne doit pas requérir ou recommender un paquet situé dans une autre partie de l'archive.
  • le programme ne doit pas être trop buggé !
  • le programme doit être conforme aux règles Debian Policy.

Pour les second et dernier points, nous ne pouvons, pour le moment, pas affirmer que le programme les respecte: nous n'avons pas encore créé le paquet !

En revanche, nous devons vraiment vérifier le premier point. Pour cela, et sans rentrer dans la technique, on peut se référer à la documentation d'installation de pgrouting qui indique quels sont les autres logiciels requis pour compiler et installer pgrouting.