EoleDebianPackaging24 » Historique » Version 16
« Précédent -
Version 16/28
(diff) -
Suivant » -
Version actuelle
Daniel Dehennin, 25/07/2012 10:02
- Debian packaging pour EOLE 2.4
Debian packaging pour EOLE 2.4¶
Introduction¶
Nous ne décrirons pas ici comment créer un paquet debian, mais
quelques règles utiles lors de la création d’un paquet debian pour
EOLE.
La principale cible de cette documentation est le packaging pour Ubuntu Precise Pangolin.
Le nouveau système de build des paquets apporte plus de souplesse :
- Possibilité de builder des paquets pour des architectures autre que i386 et all
- Utilisation du système de build pour construire des paquets de correctif pour les versions stables (plus besoin de télécharger l’ancien paquet, applique un patch, incrémenter le numéro de version et compiler à la main)
- Choix de la politique de numérotation des paquets
debian/changelog¶
La grande nouveauté du système de build pour EOLE 2.4 est l’absence de fichier debian/changelog
dans la branche de packaging.
Ce dernier n’est créé et mis à jour que par le système de build lui-même et n’est jamais directement accessible aux développeurs/packageurs.
Numérotation des paquets¶
L’absence du debian/changelog
impose une chose pour le premier paquet construit :
- Le premier paquet généré ne peut pas connaître son numéro de version par
debian/changelog
, il faut donc utiliser les mécanismes de git-buildpackage et se reposer sur l’utilisation de tag pour déclarer les versionsupstream
Le moyen mnémotechnique pour s’en souvenir est de connaître la forme d’un numéro de paquet Debian:
<UPSTREAM VERSION>-<DEBIAN PACKAGE RELEASE>
- Toute modification du code nécessite une modification de la partie
<UPSTREAM VERSION>
; - Toute modification sur la branche de packaging qui n’implique aucun
merge
de la brancheupstream
(master
chez EOLE), modifie la partie<DEBIAN PACKAGE RELEASE>
.
En français on pourrait le décrire par: on publie la version <DEBIAN PACKAGE RELEASE>
du paquet debian de la version <UPSTREAM VERSION>
du logiciel.
debian/source/format¶
La valeur ce paramètre découle de la réponse à ces trois questions :
- Qui a la responsabilité de l’incrémentation du numéro de version ;
- Est-il permis que la branche dite
upstream
(chez EOLE, la branchemaster
) soit vide ; - Est-il possible qu’entre deux paquets debian, il y ait des modifications de fichiers en dehors du répertoire
debian/
sans nouveau tag de versionupstream
.
Il est interdit de modifier les sources dans le packaging¶
Cela s’applique, chez Debian, aux paquets de logiciels « externes ».
Le paquet Debian ne doit pas contenir de modification du code source (tout ce qui est en dehors du répertoire debian/
), sans qu’il y ait eu un nouveau numéro de version par les développeurs ustream
.
La seul possibilité pour adapter le code source à la distribution est de faire un patch et de le disposer dans le répertoire debian/patches/
.
Cas d’utilisation typique:
# Mise à jour upstream user:~/src/paquet (master)$ $EDITOR source_file.txt user:~/src/paquet (master)$ git add source_file.txt user:~/src/paquet (master)$ git commit -m "New source file" user:~/src/paquet (master)$ git tag -s -m "New release 1.6" release/1.6 user:~/src/paquet (master)$ git push origin master release/1.6 # Mise à jour du packaging user:~/src/paquet (master)$ git checkout dist/ubuntu/precise/master user:~/src/paquet (dist/ubuntu/precise/master)$ git merge -m "New upstream release" release/1.6 user:~/src/paquet (dist/ubuntu/precise/master)$ $EDITOR debian/control # Par exemple mise à jour des dépendences user:~/src/paquet (dist/ubuntu/precise/master)$ git add debian/conrol user:~/src/paquet (dist/ubuntu/precise/master)$ git commit -m "Update of dependencies" user:~/src/paquet (dist/ubuntu/precise/master)$ git tag -s -m "New build request for experimental" build/eole/eole-2.4-experimental user:~/src/paquet (dist/ubuntu/precise/master)$ git push origin build/eole/eole-2.4-experimental # Produit un paquet numéroté 1.6-1~1.gbpXXXX # TOUT EST OK, on sort un nouveau paquet. user:~/src/paquet (dist/ubuntu/precise/master)$ git tag -s -m "New build request for unstable" build/eole/eole-2.4-unstable user:~/src/paquet (dist/ubuntu/precise/master)$ git push origin build/eole/eole-2.4-unstable # Produit un paquet numéroté 1.6-1
Les builds successifs de paquet sans merge d’une nouvelle version upstream
1.6-2
pour le second build qui ne doit corriger que des erreurs de packaging ou avoir un patch pourupstream
dansdebian/patches
;1.6-3
pour le troisième build qui ne doit corriger que des erreurs de packaging ou avoir un patch pourupstream
dansdebian/patches
;
Ce comportement est celui part défaut avec la valeur de debian/source/format
:
3.0 (quilt)
Il est possible de modifier les sources dans le packaging ou il n’y a pas de sources upstream¶
Les modifications de code source sont autorisées sur la branche de packaging sans nouveau tag upstream.
La branche upstream peut-être complètement vide (cas des métapaquets de dépendances *-pkg
)
Cas d’utilisation typique:
# Premier tag upstream pour créer le fichier debian/changelog automatiquement user:~/src/paquet (master)$ git tag -s -m "First release 1.0" release/1.0 # Premier paquet user:~/src/paquet (master)$ git checkout -b dist/ubuntu/precise/master user:~/src/paquet (dist/ubuntu/precise/master)$ $EDITOR debian/* # Création du packaging user:~/src/paquet (dist/ubuntu/precise/master)$ git add debian/conrol user:~/src/paquet (dist/ubuntu/precise/master)$ git commit -m "First package" user:~/src/paquet (dist/ubuntu/precise/master)$ git tag -s -m "New build request for experimental" build/eole/eole-2.4-experimental # Produit un paquet numéroté 1.6-1~1.gbpXXXX # TOUT EST OK, on sort un nouveau paquet. user:~/src/paquet (dist/ubuntu/precise/master)$ git tag -s -m "New build request for unstable" build/eole/eole-2.4-unstable user:~/src/paquet (dist/ubuntu/precise/master)$ git push origin build/eole/eole-2.4-unstable # Produit un paquet numéroté 1.6-1 # Mise à jour upstream user:~/src/paquet (master)$ $EDITOR source_file.txt user:~/src/paquet (master)$ git add source_file.txt user:~/src/paquet (master)$ git commit -m "New source file" user:~/src/paquet (master)$ git push origin master # Mise à jour du packaging user:~/src/paquet (master)$ git checkout dist/ubuntu/precise/master user:~/src/paquet (dist/ubuntu/precise/master)$ git merge -m "New upstream release" master user:~/src/paquet (dist/ubuntu/precise/master)$ $EDITOR debian/control # Par exemple mise à jour des dépendences user:~/src/paquet (dist/ubuntu/precise/master)$ git add debian/conrol user:~/src/paquet (dist/ubuntu/precise/master)$ git commit -m "Update of dependencies" user:~/src/paquet (dist/ubuntu/precise/master)$ git tag -s -m "New build request for experimental" build/eole/eole-2.4-experimental user:~/src/paquet (dist/ubuntu/precise/master)$ git push origin build/eole/eole-2.4-experimental # Produit un paquet numéroté 1.6-2~1.gbpXXXX # TOUT EST OK, on sort un nouveau paquet. user:~/src/paquet (dist/ubuntu/precise/master)$ git tag -s -m "New build request for unstable" build/eole/eole-2.4-unstable user:~/src/paquet (dist/ubuntu/precise/master)$ git push origin build/eole/eole-2.4-unstable # Produit un paquet numéroté 1.6-2
Ce comportement est possible avec la valeur de debian/source/format
:
3.0 (native)
debian/control¶
Source: <package> Section: <(admin|web|metapackages|...)> Priority: optional Maintainer: Équipe Eole <eole@ac-dijon.fr> Build-Depends: debhelper (>= 9) Standards-Version: 3.9.3 Homepage: http://eole.orion.education.fr/diff/ Vcs-Git: http://dev-eole.ac-dijon.fr/git/<package> Vcs-Browser: http://dev-eole.ac-dijon.fr/projects/<package>/repository Package: <package> Architecture: all Depends: ${misc:Depends} Description: <MAX 72 CHARS> <DESCRIPTION> . <PARAGRAPHE SEPARATED BY DOT> Package: <package>-doc Architecture: all Description: <MAX 72 CHARS> <DESCRIPTION> . <PARAGRAPHE SEPARATED BY DOT> Package: <package>-tests Architecture: all Depends: <package> Description: <MAX 72 CHARS> <DESCRIPTION> . <PARAGRAPHE SEPARATED BY DOT>
Paquets sources et binaires python¶
Il faut ajouter :
Build-Depends
du paquet source:python-all-dev
Depends
du/des paquet(s) binaire(s):${python:Depends}
debian/rules¶
Pour tous¶
#!/usr/bin/make -f # -*- makefile -*- # Sample debian/rules that uses debhelper. # This file was originally written by Joey Hess and Craig Small. # As a special exception, when this file is copied by dh-make into a # dh-make output file, you may use that output file without restriction. # This special exception was added by Craig Small in version 0.37 of dh-make. # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 %: dh $@
Pour paquet python¶
#!/usr/bin/make -f # -*- makefile -*- # Sample debian/rules that uses debhelper. # This file was originally written by Joey Hess and Craig Small. # As a special exception, when this file is copied by dh-make into a # dh-make output file, you may use that output file without restriction. # This special exception was added by Craig Small in version 0.37 of dh-make. # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 %: dh $@ --with python2
debian/compat¶
9
debian/copyright¶
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: <package Source: <UPSTREAM URL> Files: * Copyright: <YEAR1>,<YEAR2>,<YEAR3> <UPSTREAM AUTHOR NAME> <UPSTREAM AUTHOR EMAIL> Copyright: <YEAR1>,<YEAR2>,<YEAR3> <UPSTREAM AUTHOR NAME> <UPSTREAM AUTHOR EMAIL> License: GPL-3+ Files: debian/* Copyright: <YEAR1>,<YEAR2>,<YEAR3> Équipe EOLE <eole@ac-dijon.fr> License: GPL-3+ License: GPL-3+ 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 3 of the License, or (at your option) any later version. . This package 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 along with this program. If not, see <http://www.gnu.org/licenses/>. . On Debian systems, the complete text of the GNU General Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".