EoleDebianPackaging24 » Historique » Version 16
Daniel Dehennin, 25/07/2012 10:02
1 | 1 | Daniel Dehennin | {{toc}} |
---|---|---|---|
2 | 1 | Daniel Dehennin | |
3 | 1 | Daniel Dehennin | h1. Debian packaging pour EOLE 2.4 |
4 | 1 | Daniel Dehennin | |
5 | 1 | Daniel Dehennin | h2. Introduction |
6 | 1 | Daniel Dehennin | |
7 | 1 | Daniel Dehennin | Nous ne décrirons pas ici comment créer un paquet debian, mais |
8 | 1 | Daniel Dehennin | quelques règles utiles lors de la création d’un paquet debian pour |
9 | 1 | Daniel Dehennin | EOLE. |
10 | 1 | Daniel Dehennin | |
11 | 1 | Daniel Dehennin | La principale cible de cette documentation est le packaging pour Ubuntu Precise Pangolin. |
12 | 1 | Daniel Dehennin | |
13 | 16 | Daniel Dehennin | Le nouveau système de build des paquets apporte plus de souplesse : |
14 | 16 | Daniel Dehennin | |
15 | 16 | Daniel Dehennin | * Possibilité de builder des paquets pour des architectures autre que _i386_ et _all_ |
16 | 16 | Daniel Dehennin | * 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) |
17 | 16 | Daniel Dehennin | * Choix de la politique de numérotation des paquets |
18 | 16 | Daniel Dehennin | |
19 | 12 | Daniel Dehennin | h2. debian/changelog |
20 | 12 | Daniel Dehennin | |
21 | 15 | Benjamin Bohard | La grande nouveauté du système de build pour EOLE 2.4 est l’absence de fichier @debian/changelog@ dans la branche de packaging. |
22 | 12 | Daniel Dehennin | |
23 | 12 | Daniel Dehennin | 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. |
24 | 1 | Daniel Dehennin | |
25 | 16 | Daniel Dehennin | h3. Numérotation des paquets |
26 | 1 | Daniel Dehennin | |
27 | 16 | Daniel Dehennin | L’absence du @debian/changelog@ impose une chose pour le premier paquet construit : |
28 | 16 | Daniel Dehennin | |
29 | 12 | Daniel Dehennin | # 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":http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.man.git.dch.html et se reposer sur l’utilisation de "tag":http://gitimmersion.fr/lab_13.html pour déclarer les versions @upstream@ |
30 | 12 | Daniel Dehennin | |
31 | 15 | Benjamin Bohard | Le moyen mnémotechnique pour s’en souvenir est de connaître la forme d’un "numéro de paquet Debian":http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version: |
32 | 12 | Daniel Dehennin | |
33 | 12 | Daniel Dehennin | <pre> |
34 | 12 | Daniel Dehennin | <UPSTREAM VERSION>-<DEBIAN PACKAGE RELEASE> |
35 | 12 | Daniel Dehennin | </pre> |
36 | 12 | Daniel Dehennin | |
37 | 12 | Daniel Dehennin | * Toute modification du code nécessite une modification de la partie *@<UPSTREAM VERSION>@* ; |
38 | 12 | Daniel Dehennin | * Toute modification sur la branche de packaging qui n’implique aucun @merge@ de la branche @upstream@ (@master@ chez EOLE), modifie la partie *@<DEBIAN PACKAGE RELEASE>@*. |
39 | 12 | Daniel Dehennin | |
40 | 1 | Daniel Dehennin | 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. |
41 | 1 | Daniel Dehennin | |
42 | 16 | Daniel Dehennin | h2. debian/source/format |
43 | 16 | Daniel Dehennin | |
44 | 16 | Daniel Dehennin | La valeur ce paramètre découle de la réponse à ces trois questions : |
45 | 16 | Daniel Dehennin | |
46 | 16 | Daniel Dehennin | # Qui a la responsabilité de l’incrémentation du numéro de version ; |
47 | 16 | Daniel Dehennin | # Est-il permis que la branche dite @upstream@ (chez EOLE, la branche @master@) soit vide ; |
48 | 16 | Daniel Dehennin | # 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 version @upstream@. |
49 | 16 | Daniel Dehennin | |
50 | 16 | Daniel Dehennin | h3. Il est interdit de modifier les sources dans le packaging |
51 | 16 | Daniel Dehennin | |
52 | 16 | Daniel Dehennin | Cela s’applique, chez Debian, aux paquets de logiciels « externes ». |
53 | 16 | Daniel Dehennin | |
54 | 16 | Daniel Dehennin | 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@. |
55 | 16 | Daniel Dehennin | 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/@. |
56 | 16 | Daniel Dehennin | |
57 | 16 | Daniel Dehennin | Cas d’utilisation typique: |
58 | 16 | Daniel Dehennin | |
59 | 16 | Daniel Dehennin | <pre> |
60 | 16 | Daniel Dehennin | # Mise à jour upstream |
61 | 16 | Daniel Dehennin | user:~/src/paquet (master)$ $EDITOR source_file.txt |
62 | 16 | Daniel Dehennin | user:~/src/paquet (master)$ git add source_file.txt |
63 | 16 | Daniel Dehennin | user:~/src/paquet (master)$ git commit -m "New source file" |
64 | 16 | Daniel Dehennin | user:~/src/paquet (master)$ git tag -s -m "New release 1.6" release/1.6 |
65 | 16 | Daniel Dehennin | user:~/src/paquet (master)$ git push origin master release/1.6 |
66 | 16 | Daniel Dehennin | |
67 | 16 | Daniel Dehennin | # Mise à jour du packaging |
68 | 16 | Daniel Dehennin | user:~/src/paquet (master)$ git checkout dist/ubuntu/precise/master |
69 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git merge -m "New upstream release" release/1.6 |
70 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ $EDITOR debian/control # Par exemple mise à jour des dépendences |
71 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git add debian/conrol |
72 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git commit -m "Update of dependencies" |
73 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git tag -s -m "New build request for experimental" build/eole/eole-2.4-experimental |
74 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git push origin build/eole/eole-2.4-experimental |
75 | 16 | Daniel Dehennin | # Produit un paquet numéroté 1.6-1~1.gbpXXXX |
76 | 16 | Daniel Dehennin | |
77 | 16 | Daniel Dehennin | # TOUT EST OK, on sort un nouveau paquet. |
78 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git tag -s -m "New build request for unstable" build/eole/eole-2.4-unstable |
79 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git push origin build/eole/eole-2.4-unstable |
80 | 16 | Daniel Dehennin | # Produit un paquet numéroté 1.6-1 |
81 | 16 | Daniel Dehennin | </pre> |
82 | 16 | Daniel Dehennin | |
83 | 16 | Daniel Dehennin | Les builds successifs de paquet sans merge d’une nouvelle version @upstream@ |
84 | 16 | Daniel Dehennin | |
85 | 16 | Daniel Dehennin | * @1.6-2@ pour le second build qui ne doit corriger que des erreurs de packaging ou avoir un patch pour @upstream@ dans @debian/patches@ ; |
86 | 16 | Daniel Dehennin | * @1.6-3@ pour le troisième build qui ne doit corriger que des erreurs de packaging ou avoir un patch pour @upstream@ dans @debian/patches@ ; |
87 | 16 | Daniel Dehennin | |
88 | 16 | Daniel Dehennin | Ce comportement est celui part défaut avec la valeur de @debian/source/format@ : |
89 | 16 | Daniel Dehennin | |
90 | 16 | Daniel Dehennin | <pre> |
91 | 16 | Daniel Dehennin | 3.0 (quilt) |
92 | 16 | Daniel Dehennin | </pre> |
93 | 16 | Daniel Dehennin | |
94 | 16 | Daniel Dehennin | h3. Il est possible de modifier les sources dans le packaging ou il n’y a pas de sources upstream |
95 | 16 | Daniel Dehennin | |
96 | 16 | Daniel Dehennin | Les modifications de code source sont autorisées sur la branche de packaging sans nouveau tag upstream. |
97 | 16 | Daniel Dehennin | La branche upstream peut-être complètement vide (cas des métapaquets de dépendances @*-pkg@) |
98 | 16 | Daniel Dehennin | |
99 | 16 | Daniel Dehennin | Cas d’utilisation typique: |
100 | 16 | Daniel Dehennin | |
101 | 16 | Daniel Dehennin | <pre> |
102 | 16 | Daniel Dehennin | # Premier tag upstream pour créer le fichier debian/changelog automatiquement |
103 | 16 | Daniel Dehennin | user:~/src/paquet (master)$ git tag -s -m "First release 1.0" release/1.0 |
104 | 16 | Daniel Dehennin | |
105 | 16 | Daniel Dehennin | # Premier paquet |
106 | 16 | Daniel Dehennin | user:~/src/paquet (master)$ git checkout -b dist/ubuntu/precise/master |
107 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ $EDITOR debian/* # Création du packaging |
108 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git add debian/conrol |
109 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git commit -m "First package" |
110 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git tag -s -m "New build request for experimental" build/eole/eole-2.4-experimental |
111 | 16 | Daniel Dehennin | # Produit un paquet numéroté 1.6-1~1.gbpXXXX |
112 | 16 | Daniel Dehennin | |
113 | 16 | Daniel Dehennin | # TOUT EST OK, on sort un nouveau paquet. |
114 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git tag -s -m "New build request for unstable" build/eole/eole-2.4-unstable |
115 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git push origin build/eole/eole-2.4-unstable |
116 | 16 | Daniel Dehennin | # Produit un paquet numéroté 1.6-1 |
117 | 16 | Daniel Dehennin | |
118 | 16 | Daniel Dehennin | # Mise à jour upstream |
119 | 16 | Daniel Dehennin | user:~/src/paquet (master)$ $EDITOR source_file.txt |
120 | 16 | Daniel Dehennin | user:~/src/paquet (master)$ git add source_file.txt |
121 | 16 | Daniel Dehennin | user:~/src/paquet (master)$ git commit -m "New source file" |
122 | 16 | Daniel Dehennin | user:~/src/paquet (master)$ git push origin master |
123 | 16 | Daniel Dehennin | |
124 | 16 | Daniel Dehennin | # Mise à jour du packaging |
125 | 16 | Daniel Dehennin | user:~/src/paquet (master)$ git checkout dist/ubuntu/precise/master |
126 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git merge -m "New upstream release" master |
127 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ $EDITOR debian/control # Par exemple mise à jour des dépendences |
128 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git add debian/conrol |
129 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git commit -m "Update of dependencies" |
130 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git tag -s -m "New build request for experimental" build/eole/eole-2.4-experimental |
131 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git push origin build/eole/eole-2.4-experimental |
132 | 16 | Daniel Dehennin | # Produit un paquet numéroté 1.6-2~1.gbpXXXX |
133 | 16 | Daniel Dehennin | |
134 | 16 | Daniel Dehennin | # TOUT EST OK, on sort un nouveau paquet. |
135 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git tag -s -m "New build request for unstable" build/eole/eole-2.4-unstable |
136 | 16 | Daniel Dehennin | user:~/src/paquet (dist/ubuntu/precise/master)$ git push origin build/eole/eole-2.4-unstable |
137 | 16 | Daniel Dehennin | # Produit un paquet numéroté 1.6-2 |
138 | 16 | Daniel Dehennin | </pre> |
139 | 16 | Daniel Dehennin | |
140 | 16 | Daniel Dehennin | Ce comportement est possible avec la valeur de @debian/source/format@ : |
141 | 16 | Daniel Dehennin | |
142 | 16 | Daniel Dehennin | <pre> |
143 | 16 | Daniel Dehennin | 3.0 (native) |
144 | 16 | Daniel Dehennin | </pre> |
145 | 16 | Daniel Dehennin | |
146 | 1 | Daniel Dehennin | h2. debian/control |
147 | 4 | Benjamin Bohard | |
148 | 1 | Daniel Dehennin | <pre> |
149 | 1 | Daniel Dehennin | Source: <package> |
150 | 1 | Daniel Dehennin | Section: <(admin|web|metapackages|...)> |
151 | 1 | Daniel Dehennin | Priority: optional |
152 | 1 | Daniel Dehennin | Maintainer: Équipe Eole <eole@ac-dijon.fr> |
153 | 1 | Daniel Dehennin | Build-Depends: debhelper (>= 9) |
154 | 1 | Daniel Dehennin | Standards-Version: 3.9.3 |
155 | 1 | Daniel Dehennin | Homepage: http://eole.orion.education.fr/diff/ |
156 | 1 | Daniel Dehennin | Vcs-Git: http://dev-eole.ac-dijon.fr/git/<package> |
157 | 5 | Daniel Dehennin | Vcs-Browser: http://dev-eole.ac-dijon.fr/projects/<package>/repository |
158 | 1 | Daniel Dehennin | |
159 | 1 | Daniel Dehennin | Package: <package> |
160 | 1 | Daniel Dehennin | Architecture: all |
161 | 1 | Daniel Dehennin | Depends: ${misc:Depends} |
162 | 1 | Daniel Dehennin | Description: <MAX 72 CHARS> |
163 | 1 | Daniel Dehennin | <DESCRIPTION> |
164 | 1 | Daniel Dehennin | . |
165 | 16 | Daniel Dehennin | <PARAGRAPHE SEPARATED BY DOT> |
166 | 1 | Daniel Dehennin | |
167 | 1 | Daniel Dehennin | Package: <package>-doc |
168 | 1 | Daniel Dehennin | Architecture: all |
169 | 1 | Daniel Dehennin | Description: <MAX 72 CHARS> |
170 | 1 | Daniel Dehennin | <DESCRIPTION> |
171 | 1 | Daniel Dehennin | . |
172 | 1 | Daniel Dehennin | <PARAGRAPHE SEPARATED BY DOT> |
173 | 1 | Daniel Dehennin | |
174 | 1 | Daniel Dehennin | Package: <package>-tests |
175 | 1 | Daniel Dehennin | Architecture: all |
176 | 1 | Daniel Dehennin | Depends: <package> |
177 | 1 | Daniel Dehennin | Description: <MAX 72 CHARS> |
178 | 1 | Daniel Dehennin | <DESCRIPTION> |
179 | 1 | Daniel Dehennin | . |
180 | 1 | Daniel Dehennin | <PARAGRAPHE SEPARATED BY DOT> |
181 | 1 | Daniel Dehennin | </pre> |
182 | 1 | Daniel Dehennin | |
183 | 1 | Daniel Dehennin | h3. Paquets sources et binaires python |
184 | 1 | Daniel Dehennin | |
185 | 16 | Daniel Dehennin | Il faut ajouter : |
186 | 1 | Daniel Dehennin | |
187 | 1 | Daniel Dehennin | * @Build-Depends@ du paquet source: @python-all-dev@ |
188 | 1 | Daniel Dehennin | * @Depends@ du/des paquet(s) binaire(s): @${python:Depends}@ |
189 | 1 | Daniel Dehennin | |
190 | 1 | Daniel Dehennin | h2. debian/rules |
191 | 1 | Daniel Dehennin | |
192 | 1 | Daniel Dehennin | h3. Pour tous |
193 | 1 | Daniel Dehennin | |
194 | 5 | Daniel Dehennin | <pre> |
195 | 1 | Daniel Dehennin | #!/usr/bin/make -f |
196 | 1 | Daniel Dehennin | # -*- makefile -*- |
197 | 1 | Daniel Dehennin | # Sample debian/rules that uses debhelper. |
198 | 1 | Daniel Dehennin | # This file was originally written by Joey Hess and Craig Small. |
199 | 1 | Daniel Dehennin | # As a special exception, when this file is copied by dh-make into a |
200 | 1 | Daniel Dehennin | # dh-make output file, you may use that output file without restriction. |
201 | 11 | Daniel Dehennin | # This special exception was added by Craig Small in version 0.37 of dh-make. |
202 | 7 | Daniel Dehennin | |
203 | 8 | Daniel Dehennin | # Uncomment this to turn on verbose mode. |
204 | 10 | Benjamin Bohard | #export DH_VERBOSE=1 |
205 | 15 | Benjamin Bohard | |
206 | 1 | Daniel Dehennin | %: |
207 | 1 | Daniel Dehennin | dh $@ |
208 | 1 | Daniel Dehennin | </pre> |
209 | 1 | Daniel Dehennin | |
210 | 1 | Daniel Dehennin | h3. Pour paquet python |
211 | 12 | Daniel Dehennin | |
212 | 1 | Daniel Dehennin | <pre> |
213 | 12 | Daniel Dehennin | #!/usr/bin/make -f |
214 | 1 | Daniel Dehennin | # -*- makefile -*- |
215 | 12 | Daniel Dehennin | # Sample debian/rules that uses debhelper. |
216 | 1 | Daniel Dehennin | # This file was originally written by Joey Hess and Craig Small. |
217 | 1 | Daniel Dehennin | # As a special exception, when this file is copied by dh-make into a |
218 | 14 | Daniel Dehennin | # dh-make output file, you may use that output file without restriction. |
219 | 14 | Daniel Dehennin | # This special exception was added by Craig Small in version 0.37 of dh-make. |
220 | 1 | Daniel Dehennin | |
221 | 1 | Daniel Dehennin | # Uncomment this to turn on verbose mode. |
222 | 1 | Daniel Dehennin | #export DH_VERBOSE=1 |
223 | 1 | Daniel Dehennin | |
224 | 1 | Daniel Dehennin | %: |
225 | 15 | Benjamin Bohard | dh $@ --with python2 |
226 | 1 | Daniel Dehennin | </pre> |
227 | 6 | Benjamin Bohard | |
228 | 1 | Daniel Dehennin | h2. debian/compat |
229 | 1 | Daniel Dehennin | |
230 | 1 | Daniel Dehennin | <pre> |
231 | 1 | Daniel Dehennin | 9 |
232 | 1 | Daniel Dehennin | </pre> |
233 | 1 | Daniel Dehennin | |
234 | 5 | Daniel Dehennin | h2. debian/copyright |
235 | 1 | Daniel Dehennin | |
236 | 1 | Daniel Dehennin | <pre> |
237 | 1 | Daniel Dehennin | Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ |
238 | 1 | Daniel Dehennin | Upstream-Name: <package |
239 | 1 | Daniel Dehennin | Source: <UPSTREAM URL> |
240 | 1 | Daniel Dehennin | |
241 | 1 | Daniel Dehennin | Files: * |
242 | 1 | Daniel Dehennin | Copyright: <YEAR1>,<YEAR2>,<YEAR3> <UPSTREAM AUTHOR NAME> <UPSTREAM AUTHOR EMAIL> |
243 | 1 | Daniel Dehennin | Copyright: <YEAR1>,<YEAR2>,<YEAR3> <UPSTREAM AUTHOR NAME> <UPSTREAM AUTHOR EMAIL> |
244 | 1 | Daniel Dehennin | License: GPL-3+ |
245 | 1 | Daniel Dehennin | |
246 | 1 | Daniel Dehennin | Files: debian/* |
247 | 1 | Daniel Dehennin | Copyright: <YEAR1>,<YEAR2>,<YEAR3> Équipe EOLE <eole@ac-dijon.fr> |
248 | 1 | Daniel Dehennin | License: GPL-3+ |
249 | 1 | Daniel Dehennin | |
250 | 1 | Daniel Dehennin | License: GPL-3+ |
251 | 1 | Daniel Dehennin | This program is free software: you can redistribute it and/or modify |
252 | 1 | Daniel Dehennin | it under the terms of the GNU General Public License as published by |
253 | 1 | Daniel Dehennin | the Free Software Foundation, either version 3 of the License, or |
254 | 1 | Daniel Dehennin | (at your option) any later version. |
255 | 1 | Daniel Dehennin | . |
256 | 1 | Daniel Dehennin | This package is distributed in the hope that it will be useful, |
257 | 1 | Daniel Dehennin | but WITHOUT ANY WARRANTY; without even the implied warranty of |
258 | 1 | Daniel Dehennin | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
259 | 1 | Daniel Dehennin | GNU General Public License for more details. |
260 | 1 | Daniel Dehennin | . |
261 | 1 | Daniel Dehennin | You should have received a copy of the GNU General Public License |
262 | 1 | Daniel Dehennin | along with this program. If not, see <http://www.gnu.org/licenses/>. |
263 | 1 | Daniel Dehennin | . |
264 | 1 | Daniel Dehennin | On Debian systems, the complete text of the GNU General |
265 | 1 | Daniel Dehennin | Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". |
266 | 1 | Daniel Dehennin | </pre> |