ARCHIVE PACKAGING DEBIAN
1 ================================================= DEBUT ATELIER PACKAGING DEBIAN =================================================
2 progfou 03/09/2013 13:30:20
3 bonjour à toutes et à tous
4 nous allons maintenant voir la question de l'empaquetage Debian 03/09/2013 13:30:48
5 je vais d'abord parler un peu de ce que c'est et pourquoi on le fait 03/09/2013 13:31:07
6 ensuite de la façon dont c'est géré chez Debian 03/09/2013 13:31:16
7 et de la façon dont nous gérons cela à l'AUF 03/09/2013 13:31:25
8 on s'arrêtera là sur la théorie et on passera à la pratique 03/09/2013 13:31:41
9 si on va assez vite on verra trois cas : la correction d'un paquet, le rétro-portage (backport) d'un paquet et la création d'un nouveau paquet 03/09/2013 13:32:22
10 fawaz.tairou a quitté la salle 13:32
11 fawaz.tairou a rejoint le salon 13:32
12
13 progfou 03/09/2013 13:33:31
14 si ce n'est pas encore fait, lancez tout de suite la commande "sudo aptitude install devscripts dh-make" dans un terminal à côté, en acceptant les paquets additionnels recommandés
15 ainsi le téléchargement se fera pendant que je présenterai le début 03/09/2013 13:33:47
16 donc, commençons par le pourquoi de l'empaquetage Debian 03/09/2013 13:34:15
17 je ne vais pas remonter dans toute l'histoire de la distribution de logiciels… 03/09/2013 13:34:36
18 mais, en gros, la gestion des logiciels installés sur un système a toujours été un problème sensible 03/09/2013 13:35:03
19 installer un logiciel est souvent simple (enfin… on le prétend ) 03/09/2013 13:35:22
20 le désinstaller est souvent une autre histoire ! 03/09/2013 13:35:35
21 comment retrouver où les fichiers se sont installés ? 03/09/2013 13:35:52
22 d'ailleurs, se sont-ils installés « au bon endroit » ? ou n'importe où, au choix de l'auteur du logiciel et sans aucun respect des standards existants ? (cas encore fréquent, hélas) 03/09/2013 13:36:33
23 shafeek.sumser a rejoint le salon 13:36
24
25 arnaud.amelina@auf.org 03/09/2013 13:37:00
26 QUESTION: j'installe les paquets en question ça me demande de setup postfix est-ce normal?
27 olivier.larcheveque 03/09/2013 13:37:21
28
29 progfou 03/09/2013 13:37:37
30 R: vous pouvez configurer postfix en livraison locale seule, car on ne l'utilisera pas ici
31 (mais sinon, oui, c'est normal, tout système devrait avoir un moyen d'envoyer des courriels d'information) 03/09/2013 13:37:56
32 en dehors du problème de l'installation et de la désinstallation, il y a aussi la maintenance du logiciel installé 03/09/2013 13:38:07
33 que devrait-on faire lors d'une mise à jour ? doit-on changer des fichiers ? doit-on exécuter des scripts de mise à jour ? 03/09/2013 13:38:37
34 ou faire des opérations sur une base de données ? 03/09/2013 13:38:51
35 la notion de paquet logiciel va gérer tous ces aspects, ou au moins tenter d'en gérer le maximum possible 03/09/2013 13:39:35
36 bertille.lekeufack a rejoint le salon 13:39
37
38 progfou 03/09/2013 13:39:58
39 et de façon la plus automatique possible, pour le bien être du sysadmin
40 un autre aspect pris en charge par la notion de paquet est celle des dépendances 03/09/2013 13:40:26
41 ce logiciel a besoin de quel autre logiciel, ou partie de logiciel (librairie, outils, etc), pour être installé ? 03/09/2013 13:40:54
42 ce logiciel entre-t-il en conflit avec un autre logiciel installé ? 03/09/2013 13:41:10
43 ce logiciel fournit-il une alternative à une catégorie générale de logiciels ? (par exemple un éditeur) 03/09/2013 13:41:40
44 là aussi, la notion de paquet peut gérer ces aspects 03/09/2013 13:41:58
45 la notion de paquet va aussi nous aider dans la vérification de l'état d'un système 03/09/2013 13:42:23
46 elle permet de savoir quelles versions des logiciels sont installés 03/09/2013 13:42:46
47 cette information peut ensuite être combinée à une liste de versions de logiciels disponibles sur Internet 03/09/2013 13:43:28
48 ce qui permet de savoir si nous avons bien les dernières versions installées sur notre système 03/09/2013 13:43:46
49 et donc de gérer de façon automatisée la possibilité d'avertir et de faire des mises à jour 03/09/2013 13:44:22
50 quand on a bien compris tous ces aspects, et qu'on a essayé 2-3 fois d'installer des logiciels soi-même « à la main », on a vite envie de passer à l'étape supérieur : la gestion par paquets ! 03/09/2013 13:45:28
51 je ne vais pas comparer les différentes techniques de gestion par paquets existantes : vu que nous utilisons Debian et Ubuntu la seule qui nous intéresse ici est l'empaquetage Debian 03/09/2013 13:46:15
52 shafeek.sumser a quitté la salle 13:46
53
54 progfou 03/09/2013 13:46:51
55 quand on voit tous les aspects gérés, on peut imaginer que ce n'est pas une tâche simple
56 et effectivement ça ne l'est pas ! comme vous pouvez le voir ici : http://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Debian_package_cycle.svg/1000px-Debian_package_cycle.svg.png 03/09/2013 13:47:40
57 ce schéma explique le cycle de vie d'un paquet Debian (source : http://en.wikipedia.org/wiki/Debian#Package_maintenance) 03/09/2013 13:48:16
58 là aussi, je ne vais pas entrer dans les détails, je vous laisserai le regarder attentivement plus tard 03/09/2013 13:48:45
59 je tenais à vous le montrer, non pas pour vous effrayer (quoi que… ) mais pour vous montrer qu'il s'agit là d'un sujet sérieux 03/09/2013 13:49:30
60 et qu'il faut donc le considérer comme tel 03/09/2013 13:49:38
61 car j'ai malheureusement déjà été confronté plusieurs fois à des paquets Debian « vite-fait mal-fait », sans considération des conséquences derrière 03/09/2013 13:50:16
62 la création de paquets Debian est pourtant très bien documentée 03/09/2013 13:50:52
63 on peut commencer par le wiki Debian : https://wiki.debian.org/Packaging 03/09/2013 13:51:09
64 qui fait le tour du sujet et donne des liens vers les docs utiles 03/09/2013 13:51:31
65 en particulier le guide du mainteneur de paquet Debian : http://www.debian.org/doc/manuals/maint-guide/ (en français) 03/09/2013 13:51:43
66 ou encore des conseils aux développeurs sur les bonnes pratiques pour faire des paquets : http://www.debian.org/doc/manuals/developers-reference/best-pkging-practices.html 03/09/2013 13:51:56
67 malheureusement (ou heureusement), la documentation est à la hauteur du sujet : très lourde 03/09/2013 13:52:36
68 donc aujourd'hui je vais vous donner des premières pistes 03/09/2013 13:53:06
69 mais cela ne vous dispense pas de lire les docs officielles !! 03/09/2013 13:53:16
70 pour nous, à l'AUF, l'objectif de faire des paquets Debian est de faciliter, voire automatiser, le déploiement massif d'une solution 03/09/2013 13:54:28
71 et d'en faciliter la maintenance ensuite, en profitant du système de mise à jour de Debian 03/09/2013 13:54:52
72 c'est ce qui nous permet par exemple d'installer un poste client en 30 min sans toucher au clavier 03/09/2013 13:55:35
73 ou encore de mettre en place le suivi des modifications du serveur avec git en une seule commande (aptitude install auf-git-etc) 03/09/2013 13:56:18
74 faire des paquets Debian va donc nous faciliter les choses 03/09/2013 13:56:38
75 en revanche cela implique une responsabilité quant à la maintenance du paquet créé : il faut produire une nouvelle version chaque fois que c'est nécessaire, par exemple suite à une alerte de sécurité ou la découverte d'un bogue majeur 03/09/2013 13:56:52
76 mais il faut aussi savoir respecter l'un des principes de base de Debian : garantir la stabilité du système 03/09/2013 13:57:39
77 cela veut dire qu'à chaque mise à jour du paquet, on ne devrait faire que les modifications minimales nécessaires et rien de plus 03/09/2013 13:57:52
78 ne surtout pas, par exemple, mettre à niveau le logiciel vers une nouvelle version majeure => il est très probable qu'un changement aussi important mettrait en péril la stabilité du système (ou devrais-je dire de l'éco-système logiciel) 03/09/2013 13:58:49
79 yemen.sayour a quitté la salle 13:59
80 yemen.sayour a rejoint le salon 13:59
81
82 progfou 03/09/2013 14:00:08
83 30 min passées, est-ce que tout les participants ont pu télécharger et installer les paquets demandés ? (répondre dans le salon tech SVP, signaler surtout si ça n'est pas encore fini !)
84
85 arnaud.amelina@auf.org 03/09/2013 14:01:10
86 olivier.larcheveque 03/09/2013 14:01:00
87 QUESTION: dans debian, quand un paquet évolue beaucoup, est-ce que ça fait l'objet d'un nouveau paquet ou d'une version différente?
88
89 progfou 03/09/2013 14:01:53
90 ok, donc déjà je vais rappeler rapidement le fonctionnement de Debian à ce niveau
91
92 arnaud.amelina@auf.org 03/09/2013 14:02:37
93 Tu peux continuer
94
95 progfou 03/09/2013 14:02:49
96 sur le principe fondateur de la garantie de stabilité du système, Debian ne livrera jamais automatiquement une nouvelle version d'un logiciel
97 par exemple, si la version actuelle de Django est 1.3, on ne verra pas de Django 1.4 apparaître avant la prochaine version de Debian 03/09/2013 14:03:30
98 on ne verra que des 1.3-1, 1.3-2, etc 03/09/2013 14:03:42
99 louis-beethoven.montrose a rejoint le salon 14:04
100
101 progfou 03/09/2013 14:04:11
102 un passage de 1.3 à 1.4 impliquerait trop de changements à faire au niveau du système, ce qui n'est pas compatible avec la notion de stabilité
103 toto a quitté la salle 14:04
104
105 progfou 03/09/2013 14:04:54
106 donc, dans une même version de Debian, pas de mise à niveau (changement de version) d'un logiciel
107 ensuite, quand on change de version de Debian, par exemple une mise à niveau de Debian 6 à Debian 7, là, oui, il va y avoir des mises à niveau des logiciels 03/09/2013 14:05:24
108 et à ce moment là on va pouvoir parler des changements de versions d'un paquet, ou de paquet différent 03/09/2013 14:05:51
109 les 2 cas existent, mais le second est plus rare 03/09/2013 14:06:00
110 eddy.andriamanantena a quitté la salle 14:06
111
112 progfou 03/09/2013 14:06:44
113 quand un logiciel reste toujours le même fondamentalement, ça reste le même nom de paquet, avec un changement de numéro de version, par exemple python-django-1.3.x va devenir python-django-1.4.y
114 en revanche, il existe des cas où il est nécessaire d'avoir deux versions installées au même moment, pour faire la transition 03/09/2013 14:07:13
115 ça arrive typiquement avec les moteurs de bases de données comme MySQL ou PostgreSQL 03/09/2013 14:07:30
116 dans ce cas, on aura des paquets mysql-server-5.0 et mysql-server-5.1 03/09/2013 14:08:00
117 ah, je me rends compte que j'ai mal nommé l'exemple pour Django plus haut… 03/09/2013 14:08:14
118 pour Django, ce serait toujours python-django version 1.3 et python-django version 1.4 (la version n'est pas dans le nom du paquet) 03/09/2013 14:08:40
119 la version la plus haute remplaçant automatiquement une version plus basse 03/09/2013 14:09:00
120 tandis que pour mysql-server-5.0 et mysql-server-5.1, ce sont 2 paquets différents 03/09/2013 14:09:16
121 qui peuvent donc, potentiellement, si aucune information de dépendance/conflit entre paquets ne s'y oppose, être installés en même temps, en parallèle 03/09/2013 14:09:50
122 c'est utilisé quand il est nécessaire de migrer les données d'une version à l'autre, typiquement quand le format de stockage des données a changé 03/09/2013 14:10:30
123 ok pour cette question ? autre question ? 03/09/2013 14:11:10
124
125 arnaud.amelina@auf.org 03/09/2013 14:12:13
126 non
127 ils sont prêts pour le nécessaire du TP 03/09/2013 14:12:47
128
129 progfou 03/09/2013 14:13:17
130 ah, installez aussi "dget", ce sera très utile ici
131 ok, il est déjà dans devscripts en fait (je pensais à dput plutôt, qui est à part) 03/09/2013 14:14:00
132 donc, installez aussi "dput" 03/09/2013 14:14:17
133
134 arnaud.amelina@auf.org 03/09/2013 14:15:32
135 Je pense que lui aussi doit avoir déjà été installé
136
137 progfou 03/09/2013 14:15:45
138 ok
139 donc maintenant, les paquets Debian à l'AUF 03/09/2013 14:15:53
140 comme d'habitude, tous nos sources doivent être mis sur git.auf.org 03/09/2013 14:16:18
141 on peut y voir plusieurs paquets Debian faits par l'AUF, en particulier dans le projet auf-poste-client (mais pas seulement) 03/09/2013 14:16:46
142 http://git.auf.org/?p=auf-poste-client.git;a=tree;f=lucid 03/09/2013 14:16:59
143 les paquets produits à l'AUF doivent ensuite être envoyés sur apt.auf.org 03/09/2013 14:17:42
144 shafeek.sumser a rejoint le salon 14:17
145
146 progfou 03/09/2013 14:18:09
147 la documentation à ce niveau se trouve ici : http://wiki.auf.org/wikiteki/DépôtAPT/EnvoyerSesPaquets
148 elle serait à mettre à jour, mais les principes n'ont pas changé 03/09/2013 14:18:28
149 en gros : tout le monde à l'AUF peut déposer ses paquets 03/09/2013 14:18:58
150 soit dans la section experimental, soit dans la section test 03/09/2013 14:19:11
151 le passage en section stable par contre demande une validation par Moussa ou moi-même 03/09/2013 14:19:34
152 la section test est prévue pour recevoir tous vos paquets, à condition qu'ils aient déjà été testés et soient fonctionnels chez vous 03/09/2013 14:20:08
153 la section experimental est prévue pour recevoir les paquets dont on n'est pas sûr des conséquences possibles ailleurs, qui pourraient présenter un risque 03/09/2013 14:20:44
154 l'envoi des paquets se fait via un simple dépôt par FTP, sans authentification, mais uniquement via le RPV 03/09/2013 14:21:16
155 par contre les fichiers déposés doivent respecter une certaine norme, celle des constructions de paquets Debian 03/09/2013 14:21:47
156 nous allons donc commencer un peu de pratique 03/09/2013 14:22:31
157 pour cela il faut configurer un peu votre environnement, pour construire les paquets (les téléchargements faits tout à l'heure) et pour déposer les paquets (nous allons le faire maintenant) 03/09/2013 14:23:04
158 je suppose que vous êtes tous sur Ubuntu, soit sous Lucid, soit sous Precise 03/09/2013 14:23:28
159
160 arnaud.amelina@auf.org 03/09/2013 14:24:16
161 yep !
162
163 progfou 03/09/2013 14:24:28
164 donc vous allez vous créer un fichier comme suit ~/.dput.cf :
165 [DEFAULT]
166 hash = md5
167 allow_unsigned_uploads = 1
168 fqdn = apt.auf
169 method = ftp
170 login = anonymous
171 run_dinstall = 0
172 default_host_main = lucid-experimental
173
174 [squeeze-test]
175 incoming = test/squeeze
176
177 [squeeze-experimental]
178 incoming = experimental/squeeze
179
180 [wheezy-test]
181 incoming = test/wheezy
182
183 [wheezy-experimental]
184 incoming = experimental/wheezy
185
186 [lucid-test]
187 incoming = test/lucid
188
189 [lucid-experimental]
190 incoming = experimental/lucid
191
192 [precise-test]
193 incoming = test/precise
194
195 [precise-experimental]
196 incoming = experimental/precise
197 ce fichier décrit les sections de dépôt de paquets disponibles pour les envois 03/09/2013 14:24:54
198 arnaud.amelina@auf.org_ a rejoint le salon 14:25
199
200 progfou 03/09/2013 14:26:52
201 ensuite, vous allez ajouter ces lignes à la fin de votre ~/.profile :
202 export AUTHOR_NAME="Progfou"
203 export AUTHOR_EMAIL="jean-christophe.andre@auf.org"
204
205 export GIT_AUTHOR_NAME="$AUTHOR_NAME"
206 export GIT_AUTHOR_EMAIL="$AUTHOR_EMAIL"
207 export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
208 export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
209
210 export EMAIL="${AUTHOR_NAME} <${AUTHOR_EMAIL}>"
211 export BZR_EMAIL="${EMAIL}"
212
213 export DEBFULLNAME="$AUTHOR_NAME"
214 export DEBEMAIL="$AUTHOR_EMAIL"
215 export DEBSIGN_MAINT="$AUTHOR_EMAIL"
216 export DH_ALWAYS_EXCLUDE="CVS:.svn:.bzr:.git"
217 en y mettant votre nom et votre adél à vous bien sûr 03/09/2013 14:27:09
218 cela vous servira pour le développement en général (pas seulement pour les paquets Debian) 03/09/2013 14:27:39
219 maintenant nous allons choisir un cobaye, un paquet Debian à torturer pour nos tests 03/09/2013 14:28:49
220 je propose celui-ci, prévu pour : http://packages.ubuntu.com/hello 03/09/2013 14:30:12
221 doan.manh.ha a quitté la salle 14:30
222 thierry.tsitoara a rejoint le salon 14:30
223
224 progfou 03/09/2013 14:30:56
225 placez vous dans un dossier temporaire, par exemple ~/src/tmp
226 puis lancez la commande suivante : dget http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.4-3.dsc 03/09/2013 14:31:15
227 comment ai-je trouvé cette URL .dsc ? tout simplement sur la page du paquet, dans la colonne de droite 03/09/2013 14:31:56
228 les .dsc sont des fichiers de description des sources du paquet, qui permettent de récupérer ce qui est nécessaire pour le reconstruire, tout en vérifier si tout est bien intègre ! (sommes de contrôle MD5, SHA1, SHA256) 03/09/2013 14:33:02
229 des questions ? 03/09/2013 14:33:05
230
231 arnaud.amelina@auf.org 03/09/2013 14:34:13
232 alexandre.domont 03/09/2013 14:29:08
233 QUESTION : c'est pas mieux de mettre ça dans ~/.bashrc ?
234
235 progfou 03/09/2013 14:34:26
236 R: non, ça n'est pas mieux
237 autre question ? 03/09/2013 14:34:37
238
239 arnaud.amelina@auf.org 03/09/2013 14:34:56
240 olivier.larcheveque 03/09/2013 14:34:36
241 QUESTION: en fait l'url du paquet me rediriges vers une recherche, je ne retrouve pas ton lien avec le contexte pool/main...
242
243 progfou 03/09/2013 14:35:03
244 plus sérieusement : les variables globales d'environnement se mettent dans le ~/.profile
245 le .bashrc est fait pour les alias et fonctions locales à une instance de shell (et est donc rechargé à chaque lancement de shell) 03/09/2013 14:35:27
246 alors que le .profile n'est chargé qu'une fois pour toute à la création de la session, les variables étant ensuite transmises via l'héritage de l'environnement d'un processus à l'autre (alors que les alias ne sont pas hérités puisqu'ils ne sont pas dans l'environnement) 03/09/2013 14:36:24
247 QUESTION: en fait l'url du paquet me rediriges vers une recherche, je ne retrouve pas ton lien avec le contexte pool/main...
248 => l'URL du paquet dirige vers une page qui affiche la liste des versions pour lesquelles le paquet existe
249 => on clique sur la version la plus appropriée (lucid si on est sous Lucid, precise si on est sous Precise), ce qui nous amène sur la page du paquet pour cette version là
250 => on y trouve le lien vers le .dsc dans la colonne de droite 03/09/2013 14:38:05
251 ça répond à la question ? autre question ? 03/09/2013 14:38:49
252
253 arnaud.amelina@auf.org 03/09/2013 14:38:52
254 mclaude 03/09/2013 14:37:38
255 QUESTION: est-ce que gpg: Impossible de vérifier la signature: clé publique non trouvée
256 Validation FAILED!! signifie que ca n'a pas marché ?
257
258 progfou 03/09/2013 14:39:30
259 ok, ici on arrive sur un aspect dont je n'ai pas parlé mais qui est important aussi : la garantie d'intégrité des sources
260 je ne vais pas aller trop dans le détail mais disons que Debian fait attention à ce qu'on puisse vérifier que ce qu'on télécharge est bien l'original 03/09/2013 14:39:57
261 ici 2 stratégies possibles : soit on s'en fout et on désactive cette vérification, soit on installe les clés des développeurs pour pouvoir valider 03/09/2013 14:40:26
262 yemen.sayour a quitté la salle 14:40
263 shafeek.sumser a quitté la salle 14:41
264
265 progfou 03/09/2013 14:41:46
266 installer les clés des développeurs consiste normalement à installer le paquet ubuntu-keyring
267 mhhh… pas sûr que ça suffise ici… 03/09/2013 14:43:03
268 shafeek.sumser a rejoint le salon 14:43
269
270 progfou 03/09/2013 14:43:45
271 je ne me rappelle plus du paquet exact à installer, donc pour ne pas bloquer trop longtemps là dessus on va utiliser l'autre stratégie : ne pas faire la validation (ce n'est pas bien, il faudra corriger ça ensuite)
272 il faut pour cela se créer un fichier ~/.devscripts contenant cette ligne :
273 #DGET_VERIFY=no 03/09/2013 14:44:25
274 en fait cette ligne (c'est commenté chez moi car j'avais déjà résolu le problème) :
275 DGET_VERIFY=no 03/09/2013 14:44:46
276 ensuite relancez le dget 03/09/2013 14:45:08
277 mclaude: ok je comprend que je n'ai pas de clé de développeur
278 => non, c'est la clé du développeur du paquet hello qui manque ici, pour valider ses sources 03/09/2013 14:46:08
279 ici dget ne signe pas, mais il veut valider la signature faite par le développeur 03/09/2013 14:46:33
280 toto a rejoint le salon 14:46
281
282 progfou 03/09/2013 14:46:49
283 est-ce que tout le monde a pu faire son dget avec succès ?
284 voici ce que cela affiche quand tout va bien :
285 $ dget http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.4-3.dsc
286 dget: retrieving http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.4-3.dsc
287 % Total % Received % Xferd Average Speed Time Time Time Current
288 Dload Upload Total Spent Left Speed
289 100 1174 100 1174 0 0 2003 0 --:--:-- --:--:-- --:--:-- 4772
290 dget: retrieving http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.4.orig.tar.gz
291 % Total % Received % Xferd Average Speed Time Time Time Current
292 Dload Upload Total Spent Left Speed
293 100 487k 100 487k 0 0 210k 0 0:00:02 0:00:02 --:--:-- 253k
294 dget: retrieving http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.4-3.diff.gz
295 % Total % Received % Xferd Average Speed Time Time Time Current
296 Dload Upload Total Spent Left Speed
297 100 5684 100 5684 0 0 11583 0 --:--:-- --:--:-- --:--:-- 25719
298 dpkg-source: info: extraction de hello dans hello-2.4
299 dpkg-source: info: extraction de hello_2.4.orig.tar.gz
300 dpkg-source: info: mise en place de hello_2.4-3.diff.gz
301 dpkg-source: info: fichiers amont modifiés :
302 hello-2.4/doc/Makefile.in 03/09/2013 14:47:26
303 on voit qu'il charge le .dsc pour les infos sur le paquet 03/09/2013 14:47:49
304 il charge ensuite le .orig.tar.gz = la version d'origine de l'auteur du logiciel (et non de l'auteur du paquet) 03/09/2013 14:48:12
305 et enfin il charge le .diff.gz = le différentiel entre la version d'origine et la version actuelle, qui contient ce qu'il faut pour construire le paquet Debian (et éventuellement des ajustements sur le logiciel d'origine, quand c'est nécessaire) 03/09/2013 14:49:19
306 vous vous retrouvez alors avec un dossier contenant le source extrait :
307 $ ls
308 hello-2.4 hello_2.4-3.diff.gz hello_2.4-3.dsc hello_2.4.orig.tar.gz 03/09/2013 14:50:16
309 allez dedans : cd hello-2.4 03/09/2013 14:50:27
310 on y trouve les sources du logiciel, et un sous-dossier "debian" contenant les informations pour construire le paquet 03/09/2013 14:50:52
311 pour le moment on ne va pas encore regarder dedans, on va juste re-constuire le paquet 03/09/2013 14:51:44
312 pour pouvoir le reconstruire, il faut d'abord s'assurer d'avoir ce qu'il faut ! 03/09/2013 14:52:01
313 parfois un compilateur C suffit, parfois il faut installer des paquets en plus 03/09/2013 14:52:16
314 doan.manh.ha a rejoint le salon 14:52
315
316 progfou 03/09/2013 14:52:30
317 Debian nous donne un outil pour vérifier cela : dpkg-checkbuilddeps
318 il faut le lancer en étant dans le dossier du paquet : dans hello-2.4 03/09/2013 14:52:43
319 fawaz.tairou a quitté la salle 14:52
320
321 progfou 03/09/2013 14:53:19
322 s'il n'affiche rien (ce devrait être le cas ici) c'est que vous avez déjà tout ce qu'il faut sur votre machine pour faire la reconstruction du paquet
323 donc ensuite on va effectivement la lancer, avec : debuild -us -uc -tc -sa 03/09/2013 14:53:48
324 doan.manh.ha a quitté la salle 14:53
325
326 darko.stanar 03/09/2013 14:54:02
327 ls -l
328
329 progfou 03/09/2013 14:54:24
330 les -us et -uc sont pour dire qu'on ne va pas signer le paquet construit (car c'est toute une autre partie que je n'explique pas aujourd'hui, et qu'on n'utilise pas à l'AUF)
331 le -tc dit qu'on veut produire un paquet .deb 03/09/2013 14:54:36
332 et le -sa dit qu'on veut inclure aussi les sources 03/09/2013 14:54:47
333 c'est nécessaire pour l'envoi vers le dépôt ensuite 03/09/2013 14:54:59
334 donc lancez tous : debuild -us -uc -tc -sa 03/09/2013 14:55:13
335
336 darko.stanar 03/09/2013 14:55:15
337 ls -l
338 sorry ... 03/09/2013 14:55:51
339
340 progfou 03/09/2013 14:56:54
341 (hop, plus de faute possible en mode modéré )
342 doan.manh.ha a rejoint le salon 14:56
343 doan.manh.ha a quitté la salle 14:57
344 doan.manh.ha a rejoint le salon 14:57
345
346 progfou 03/09/2013 14:57:19
347 normalement, si tout se passe bien, ça se finit par :
348 Finished running lintian.
349 doan.manh.ha a quitté la salle 14:57
350 doan.manh.ha a rejoint le salon 14:57
351
352 progfou 03/09/2013 14:57:51
353 et un ls .. vous montrera :
354 hello-2.4 hello_2.4-3_amd64.build hello_2.4-3_amd64.changes hello_2.4-3_amd64.deb hello_2.4-3.diff.gz hello_2.4-3.dsc hello_2.4.orig.tar.gz
355 doan.manh.ha a quitté la salle 14:57
356 doan.manh.ha a rejoint le salon 14:57
357
358 progfou 03/09/2013 14:58:11
359 (vous aurez des i386 au lieu de amd64 si vous êtes en 32 bits)
360 doan.manh.ha a quitté la salle 14:58
361
362 progfou 03/09/2013 14:58:48
363 dans cette liste vous avez un .deb => c'est votre paquet prêt à être installé, manuellement au départ pour le tester
364 c'est ce qu'on va faire ici pour le valider : sudo debi (toujours dans le dossier hello-2.4, c'est là que tout se passe) 03/09/2013 14:59:13
365 $ sudo debi
366 Sélection du paquet hello précédemment désélectionné.
367 Dépaquetage de hello (à partir de hello_2.4-3_amd64.deb) ...
368 Paramétrage de hello (2.4-3) ... 03/09/2013 15:00:16
369 maintenant que votre paquet hello est installé, vérifiez en le contenu : dpkg -L hello 03/09/2013 15:01:13
370 (on pouvait aussi vérifier le contenu avant l'installation avec : dpkg -c ../hello*.deb) 03/09/2013 15:01:38
371 lancez la commande hello :
372 $ hello
373 Bonjour, le monde! 03/09/2013 15:01:55
374 (c'est presque en français ! la ponctuation étant à revoir) 03/09/2013 15:02:15
375
376 arnaud.amelina@auf.org 03/09/2013 15:02:25
377 Q:chez moi je reçois les message W: hello source: missing-debian-source-format
378 W: hello source: ancient-standards-version 3.8.3 (current is 3.8.4)
379 Finished running lintian.
380 claudine.mosoz 03/09/2013 15:02:37
381
382 progfou 03/09/2013 15:03:00
383 R: ces avertissements sont normaux ici : le format de paquet Debian a évolué depuis la création des sources de ce paquet hello
384 maintenant, on commence la partie fun : faisons une nouvelle version de notre paquet ! 03/09/2013 15:03:33
385 d'abord on modifie un peu le source, histoire de ne pas juste changer la version sans rien d'autre 03/09/2013 15:04:31
386 on édite le fichier src/hello.c à la ligne 128 : 03/09/2013 15:06:39
387 on remplace :
388 else if (g == greet_gnu)
389 puts (_("Hello, world!")); 03/09/2013 15:07:00
390 ado.abba-ari a quitté la salle 15:07
391
392 progfou 03/09/2013 15:07:03
393 par :
394 else if (g == greet_gnu)
395 puts (_("Hello, my world!"));
396 (on ajoute "my" au milieu) 03/09/2013 15:07:13
397 ensuite il faut indiquer qu'on a fait une nouvelle version 03/09/2013 15:07:35
398 la gestion des versions se fait dans le fichier debian/changelog 03/09/2013 15:07:54
399 ado.abba-ari a rejoint le salon 15:08
400
401 progfou 03/09/2013 15:08:22
402 mais il n'est pas nécessaire de le gérer manuellement, là aussi on a un outil pour ça : dch
403 si on était le développeur du paquet Debian, on utiliserait dch -i 03/09/2013 15:09:17
404 pour incrémenter automatiquement le numéro de version 03/09/2013 15:09:24
405 mais ici nous sommes des développeurs externes, qui adaptons le travail de Debian pour produire une version locale à l'AUF 03/09/2013 15:09:49
406 on va donc le déclarer comme tel, avec : dch -l auf 03/09/2013 15:10:02
407 on voit que cela nous lance un éditeur avec un fichier contenant ceci :
408 hello (2.4-3auf1) precise; urgency=low
409
410 * …
411
412 -- Progfou <jean-christophe.andre@auf.org> Tue, 03 Sep 2013 11:11:12 -0400
413
414 hello (2.4-3) unstable; urgency=low
415
416 * Modified doc/Makefile.in to avoid /usr/share/info/dir.gz.
417
418 -- Santiago Vila <sanvila@debian.org> Sun, 30 Aug 2009 13:05:52 +0200 03/09/2013 15:10:42
419 mon nom et mon adél ont été automatiquement récupérés depuis les variables d'environnement qu'on avait fixé dans ~/.profile 03/09/2013 15:11:11
420 on voit que le numéro de version est passé de 2.4-3 à 2.4-3auf1 03/09/2013 15:11:36
421 ici une petite parenthèse sur la numérotation s'impose 03/09/2013 15:12:02
422 la partie avant le tiret, donc ici 2.4, est la version de l'auteur du logiciel "hello" 03/09/2013 15:12:22
423 c'est la version "upstream" (de l'auteur) 03/09/2013 15:12:37
424 la partie après le tiret, ici 3, est la révision dans le système de gestion des paquets 03/09/2013 15:13:12
425 donc c'est la troisième version du paquet pour le logiciel hello 03/09/2013 15:13:28
426 donc c'est la troisième version du paquet pour le logiciel hello 2.4 03/09/2013 15:13:41
427 on ajoute encore le suffixe auf1 pour préciser que c'est une sous-version auf et que c'est la première 03/09/2013 15:14:11
428 j'arrête la parenthèse ici, bien qu'il y ait encore d'autres règles à connaître… 03/09/2013 15:14:30
429 dans ce fichier changelog, on indique les changements apportés 03/09/2013 15:14:52
430 chaque point commençant par une astérisque 03/09/2013 15:15:49
431 donc ici nous allons mettre par exemple :
432 hello (2.4-3auf1) precise; urgency=low
433
434 * Bonjour _mon_ monde !
435
436 -- Progfou <jean-christophe.andre@auf.org> Tue, 03 Sep 2013 11:11:12 -0400 03/09/2013 15:15:49
437 et on enregistre et quitte le fichier 03/09/2013 15:15:51
438 on relance alors la commande de construction, toujours la même (elle ne changera jamais, ou presque) : debuild -us -uc -tc -sa 03/09/2013 15:16:21
439 on s'assure que tout s'est bien passé (Finished running lintian.) et on vérifie le résultat :
440 $ ls ..
441 hello-2.4 hello_2.4-3_amd64.changes hello_2.4-3auf1_amd64.build hello_2.4-3auf1_amd64.deb hello_2.4-3auf1.dsc hello_2.4-3.dsc
442 hello_2.4-3_amd64.build hello_2.4-3_amd64.deb hello_2.4-3auf1_amd64.changes hello_2.4-3auf1.diff.gz hello_2.4-3.diff.gz hello_2.4.orig.tar.gz 03/09/2013 15:17:13
443 on voit qu'on a maintenant des fichiers en 2.4-3auf1, dont un .deb 03/09/2013 15:17:32
444 on l'installe pour tester : sudo debi 03/09/2013 15:17:40
445 le gestionnaire de paquet voit bien la mise à jour :
446 $ sudo debi
447 Préparation du remplacement de hello 2.4-3 (en utilisant hello_2.4-3auf1_amd64.deb) ...
448 Dépaquetage de la mise à jour de hello ...
449 Paramétrage de hello (2.4-3auf1) ... 03/09/2013 15:18:09
450 et le résultat est bien là :
451 $ hello
452 Hello, my world! 03/09/2013 15:18:24
453 au passage, on voit qu'on a perdu la traduction ! c'est normal, il aurait aussi fallu adapter le fichier de traduction 03/09/2013 15:18:47
454 il reste très peu de temps, donc je vais le consacrer surtout à commenter les fichiers les plus importants dans le sous-dossier debian du paquet 03/09/2013 15:19:59
455 (sachant que vous pourrez plus tard générer un modèle de sous-dossier debian avec la commande dh_make) 03/09/2013 15:20:31
456 le paquet hello est un bon exemple contenant vraiment le minimum pour construire un paquet : 03/09/2013 15:21:12
457 les fichiers debian/control, debian/rules, debian/changelog et debian/copyright 03/09/2013 15:21:36
458 le fichier debian/control va donner toutes les informations nécessaires pour la gestion du paquet lui-même 03/09/2013 15:22:14
459
460 arnaud.amelina@auf.org 03/09/2013 15:23:58
461 sekou.diall 03/09/2013 15:23:43
462 Question : le paquet hello est un bon exemple contenant vraiment le minimum pour construire un paquet ?
463
464 progfou 03/09/2013 15:24:12
465 il y a d'abord une section concernant le logiciel d'origine : le nom du logiciel d'origine (Source), sa catégorie (Section), son importance (Priority), son mainteneur chez Debian (Maintainer), la version du format de paquet (Standards-Version)
466
467 arnaud.amelina@auf.org 03/09/2013 15:24:29
468 sekou.diall 03/09/2013 15:24:14
469 Question : tu veux dire le tar.gz ?
470
471 progfou 03/09/2013 15:24:44
472 ensuite une section concernant les paquets construits autour de ce logiciel (il peut y en avoir plusieurs, quand on sépare la documentation, le développement, etc)
473 david.violette a quitté la salle 15:26
474
475 progfou 03/09/2013 15:26:39
476 la section pour les paquets construits contient leur nom (Package), leur architecture le cas échéant (any = peut potentiellement fonctionner, et donc être construit, pour n'importe quelle architectures ; all = indépendant de l'architecture, comme un script), la liste des dépendances (Depends), des recommandations (Recommends), des conflits (Conflicts), et plusieurs autres encore, et enfin une description du contenu (Description)
477 toto a quitté la salle 15:26
478
479 progfou 03/09/2013 15:27:28
480 on a déjà vu le fichier debian/changelog
481 thomas.bierry a quitté la salle 15:27
482
483 progfou 03/09/2013 15:27:59
484 le fichier debian/copyright précise les droits sur le logiciel => il est obligatoire, faute de quoi on n'a aucun droit dessus (potentiellement pas même celui de l'utiliser !)
485 frumenceboroto07 a quitté la salle 15:28
486
487 progfou 03/09/2013 15:28:31
488 et enfin le fichier debian/rules contient les règles de construction du paquet, au format Makefile (vu qu'il est lancé par make)
489
490 arnaud.amelina@auf.org 03/09/2013 15:28:36
491 mclaude 03/09/2013 15:28:25
492 Question : Où est publié ce nouveau paquet?
493
494 progfou 03/09/2013 15:29:07
495 nous n'avons pas encore fait la publication, mais en fait cela se résume à lancer : debrelease --dput lucid-experimental
496 (ou autre section) 03/09/2013 15:29:12
497
498 arnaud.amelina@auf.org 03/09/2013 15:29:16
499 ekou.diall 03/09/2013 15:28:45
500 Question : quand tu disais "le paquet hello est un bon exemple contenant vraiment le minimum pour construire un paquet", tu parlais du tar.gz de hello ?
501
502 progfou 03/09/2013 15:29:40
503 ensuite il y a un cron qui tourne aux 5 minutes sur apt.auf.org qui va importé les paquets déposés dans le dépôt APT de l'AUF
504 R (Sékou) : le paquet hello est un bon exemple car ses fichiers de description pour la construction du paquet sont simples, il n'y en a que 4, là où il pourrait y en avoir plus d'une vingtaine (sous debian/) 03/09/2013 15:30:32
505
506 arnaud.amelina@auf.org 03/09/2013 15:31:02
507 Merci Grand Manitou pour cet atelier combien alléchant
508
509 progfou 03/09/2013 15:31:11
510 bon, on s'arrête là, mais j'ouvre un salon labo-paquetdebian pour cette semaine ! celles/ceux qui veulent continuer d'expérimenter y seront les bienvenus !
511
512 arnaud.amelina@auf.org 03/09/2013 15:31:16
513 Merci à toutes et tous ceux qui y ont participé
514 Merci RDV au Labo 03/09/2013 15:31:35
515 koye.dansaibo a quitté la salle 15:31
516
517 arnaud.amelina@auf.org 03/09/2013 15:32:15
518 ================================================= FIN ATELIER PACKAGING DEBIAN =================================================