=== ARCHIVE PACKAGING DEBIAN === {{{#!highlight irc ================================================= DEBUT ATELIER PACKAGING DEBIAN ================================================= progfou 03/09/2013 13:30:20 bonjour à toutes et à tous nous allons maintenant voir la question de l'empaquetage Debian 03/09/2013 13:30:48 je vais d'abord parler un peu de ce que c'est et pourquoi on le fait 03/09/2013 13:31:07 ensuite de la façon dont c'est géré chez Debian 03/09/2013 13:31:16 et de la façon dont nous gérons cela à l'AUF 03/09/2013 13:31:25 on s'arrêtera là sur la théorie et on passera à la pratique 03/09/2013 13:31:41 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 fawaz.tairou a quitté la salle 13:32 fawaz.tairou a rejoint le salon 13:32 progfou 03/09/2013 13:33:31 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 ainsi le téléchargement se fera pendant que je présenterai le début 03/09/2013 13:33:47 donc, commençons par le pourquoi de l'empaquetage Debian 03/09/2013 13:34:15 je ne vais pas remonter dans toute l'histoire de la distribution de logiciels… 03/09/2013 13:34:36 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 installer un logiciel est souvent simple (enfin… on le prétend ) 03/09/2013 13:35:22 le désinstaller est souvent une autre histoire ! 03/09/2013 13:35:35 comment retrouver où les fichiers se sont installés ? 03/09/2013 13:35:52 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 shafeek.sumser a rejoint le salon 13:36 arnaud.amelina@auf.org 03/09/2013 13:37:00 QUESTION: j'installe les paquets en question ça me demande de setup postfix est-ce normal? olivier.larcheveque 03/09/2013 13:37:21 progfou 03/09/2013 13:37:37 R: vous pouvez configurer postfix en livraison locale seule, car on ne l'utilisera pas ici (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 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 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 ou faire des opérations sur une base de données ? 03/09/2013 13:38:51 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 bertille.lekeufack a rejoint le salon 13:39 progfou 03/09/2013 13:39:58 et de façon la plus automatique possible, pour le bien être du sysadmin un autre aspect pris en charge par la notion de paquet est celle des dépendances 03/09/2013 13:40:26 ce logiciel a besoin de quel autre logiciel, ou partie de logiciel (librairie, outils, etc), pour être installé ? 03/09/2013 13:40:54 ce logiciel entre-t-il en conflit avec un autre logiciel installé ? 03/09/2013 13:41:10 ce logiciel fournit-il une alternative à une catégorie générale de logiciels ? (par exemple un éditeur) 03/09/2013 13:41:40 là aussi, la notion de paquet peut gérer ces aspects 03/09/2013 13:41:58 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 elle permet de savoir quelles versions des logiciels sont installés 03/09/2013 13:42:46 cette information peut ensuite être combinée à une liste de versions de logiciels disponibles sur Internet 03/09/2013 13:43:28 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 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 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 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 shafeek.sumser a quitté la salle 13:46 progfou 03/09/2013 13:46:51 quand on voit tous les aspects gérés, on peut imaginer que ce n'est pas une tâche simple 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 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 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 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 et qu'il faut donc le considérer comme tel 03/09/2013 13:49:38 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 la création de paquets Debian est pourtant très bien documentée 03/09/2013 13:50:52 on peut commencer par le wiki Debian : https://wiki.debian.org/Packaging 03/09/2013 13:51:09 qui fait le tour du sujet et donne des liens vers les docs utiles 03/09/2013 13:51:31 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 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 malheureusement (ou heureusement), la documentation est à la hauteur du sujet : très lourde 03/09/2013 13:52:36 donc aujourd'hui je vais vous donner des premières pistes 03/09/2013 13:53:06 mais cela ne vous dispense pas de lire les docs officielles !! 03/09/2013 13:53:16 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 et d'en faciliter la maintenance ensuite, en profitant du système de mise à jour de Debian 03/09/2013 13:54:52 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 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 faire des paquets Debian va donc nous faciliter les choses 03/09/2013 13:56:38 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 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 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 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 yemen.sayour a quitté la salle 13:59 yemen.sayour a rejoint le salon 13:59 progfou 03/09/2013 14:00:08 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 !) arnaud.amelina@auf.org 03/09/2013 14:01:10 olivier.larcheveque 03/09/2013 14:01:00 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? progfou 03/09/2013 14:01:53 ok, donc déjà je vais rappeler rapidement le fonctionnement de Debian à ce niveau arnaud.amelina@auf.org 03/09/2013 14:02:37 Tu peux continuer progfou 03/09/2013 14:02:49 sur le principe fondateur de la garantie de stabilité du système, Debian ne livrera jamais automatiquement une nouvelle version d'un logiciel 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 on ne verra que des 1.3-1, 1.3-2, etc 03/09/2013 14:03:42 louis-beethoven.montrose a rejoint le salon 14:04 progfou 03/09/2013 14:04:11 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é toto a quitté la salle 14:04 progfou 03/09/2013 14:04:54 donc, dans une même version de Debian, pas de mise à niveau (changement de version) d'un logiciel 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 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 les 2 cas existent, mais le second est plus rare 03/09/2013 14:06:00 eddy.andriamanantena a quitté la salle 14:06 progfou 03/09/2013 14:06:44 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 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 ça arrive typiquement avec les moteurs de bases de données comme MySQL ou PostgreSQL 03/09/2013 14:07:30 dans ce cas, on aura des paquets mysql-server-5.0 et mysql-server-5.1 03/09/2013 14:08:00 ah, je me rends compte que j'ai mal nommé l'exemple pour Django plus haut… 03/09/2013 14:08:14 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 la version la plus haute remplaçant automatiquement une version plus basse 03/09/2013 14:09:00 tandis que pour mysql-server-5.0 et mysql-server-5.1, ce sont 2 paquets différents 03/09/2013 14:09:16 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 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 ok pour cette question ? autre question ? 03/09/2013 14:11:10 arnaud.amelina@auf.org 03/09/2013 14:12:13 non ils sont prêts pour le nécessaire du TP 03/09/2013 14:12:47 progfou 03/09/2013 14:13:17 ah, installez aussi "dget", ce sera très utile ici ok, il est déjà dans devscripts en fait (je pensais à dput plutôt, qui est à part) 03/09/2013 14:14:00 donc, installez aussi "dput" 03/09/2013 14:14:17 arnaud.amelina@auf.org 03/09/2013 14:15:32 Je pense que lui aussi doit avoir déjà été installé progfou 03/09/2013 14:15:45 ok donc maintenant, les paquets Debian à l'AUF 03/09/2013 14:15:53 comme d'habitude, tous nos sources doivent être mis sur git.auf.org 03/09/2013 14:16:18 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 http://git.auf.org/?p=auf-poste-client.git;a=tree;f=lucid 03/09/2013 14:16:59 les paquets produits à l'AUF doivent ensuite être envoyés sur apt.auf.org 03/09/2013 14:17:42 shafeek.sumser a rejoint le salon 14:17 progfou 03/09/2013 14:18:09 la documentation à ce niveau se trouve ici : http://wiki.auf.org/wikiteki/DépôtAPT/EnvoyerSesPaquets elle serait à mettre à jour, mais les principes n'ont pas changé 03/09/2013 14:18:28 en gros : tout le monde à l'AUF peut déposer ses paquets 03/09/2013 14:18:58 soit dans la section experimental, soit dans la section test 03/09/2013 14:19:11 le passage en section stable par contre demande une validation par Moussa ou moi-même 03/09/2013 14:19:34 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 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 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 par contre les fichiers déposés doivent respecter une certaine norme, celle des constructions de paquets Debian 03/09/2013 14:21:47 nous allons donc commencer un peu de pratique 03/09/2013 14:22:31 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 je suppose que vous êtes tous sur Ubuntu, soit sous Lucid, soit sous Precise 03/09/2013 14:23:28 arnaud.amelina@auf.org 03/09/2013 14:24:16 yep ! progfou 03/09/2013 14:24:28 donc vous allez vous créer un fichier comme suit ~/.dput.cf : [DEFAULT] hash = md5 allow_unsigned_uploads = 1 fqdn = apt.auf method = ftp login = anonymous run_dinstall = 0 default_host_main = lucid-experimental [squeeze-test] incoming = test/squeeze [squeeze-experimental] incoming = experimental/squeeze [wheezy-test] incoming = test/wheezy [wheezy-experimental] incoming = experimental/wheezy [lucid-test] incoming = test/lucid [lucid-experimental] incoming = experimental/lucid [precise-test] incoming = test/precise [precise-experimental] incoming = experimental/precise ce fichier décrit les sections de dépôt de paquets disponibles pour les envois 03/09/2013 14:24:54 arnaud.amelina@auf.org_ a rejoint le salon 14:25 progfou 03/09/2013 14:26:52 ensuite, vous allez ajouter ces lignes à la fin de votre ~/.profile : export AUTHOR_NAME="Progfou" export AUTHOR_EMAIL="jean-christophe.andre@auf.org" export GIT_AUTHOR_NAME="$AUTHOR_NAME" export GIT_AUTHOR_EMAIL="$AUTHOR_EMAIL" export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME" export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL" export EMAIL="${AUTHOR_NAME} <${AUTHOR_EMAIL}>" export BZR_EMAIL="${EMAIL}" export DEBFULLNAME="$AUTHOR_NAME" export DEBEMAIL="$AUTHOR_EMAIL" export DEBSIGN_MAINT="$AUTHOR_EMAIL" export DH_ALWAYS_EXCLUDE="CVS:.svn:.bzr:.git" en y mettant votre nom et votre adél à vous bien sûr 03/09/2013 14:27:09 cela vous servira pour le développement en général (pas seulement pour les paquets Debian) 03/09/2013 14:27:39 maintenant nous allons choisir un cobaye, un paquet Debian à torturer pour nos tests 03/09/2013 14:28:49 je propose celui-ci, prévu pour : http://packages.ubuntu.com/hello 03/09/2013 14:30:12 doan.manh.ha a quitté la salle 14:30 thierry.tsitoara a rejoint le salon 14:30 progfou 03/09/2013 14:30:56 placez vous dans un dossier temporaire, par exemple ~/src/tmp 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 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 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 des questions ? 03/09/2013 14:33:05 arnaud.amelina@auf.org 03/09/2013 14:34:13 alexandre.domont 03/09/2013 14:29:08 QUESTION : c'est pas mieux de mettre ça dans ~/.bashrc ? progfou 03/09/2013 14:34:26 R: non, ça n'est pas mieux autre question ? 03/09/2013 14:34:37 arnaud.amelina@auf.org 03/09/2013 14:34:56 olivier.larcheveque 03/09/2013 14:34:36 QUESTION: en fait l'url du paquet me rediriges vers une recherche, je ne retrouve pas ton lien avec le contexte pool/main... progfou 03/09/2013 14:35:03 plus sérieusement : les variables globales d'environnement se mettent dans le ~/.profile 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 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 QUESTION: en fait l'url du paquet me rediriges vers une recherche, je ne retrouve pas ton lien avec le contexte pool/main... => l'URL du paquet dirige vers une page qui affiche la liste des versions pour lesquelles le paquet existe => 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à => on y trouve le lien vers le .dsc dans la colonne de droite 03/09/2013 14:38:05 ça répond à la question ? autre question ? 03/09/2013 14:38:49 arnaud.amelina@auf.org 03/09/2013 14:38:52 mclaude 03/09/2013 14:37:38 QUESTION: est-ce que gpg: Impossible de vérifier la signature: clé publique non trouvée Validation FAILED!! signifie que ca n'a pas marché ? progfou 03/09/2013 14:39:30 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 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 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 yemen.sayour a quitté la salle 14:40 shafeek.sumser a quitté la salle 14:41 progfou 03/09/2013 14:41:46 installer les clés des développeurs consiste normalement à installer le paquet ‎ubuntu-keyring mhhh… pas sûr que ça suffise ici… 03/09/2013 14:43:03 shafeek.sumser a rejoint le salon 14:43 progfou 03/09/2013 14:43:45 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) il faut pour cela se créer un fichier ~/.devscripts contenant cette ligne : #DGET_VERIFY=no 03/09/2013 14:44:25 en fait cette ligne (c'est commenté chez moi car j'avais déjà résolu le problème) : DGET_VERIFY=no 03/09/2013 14:44:46 ensuite relancez le dget 03/09/2013 14:45:08 mclaude‎: ok je comprend que je n'ai pas de clé de développeur => non, c'est la clé du développeur du paquet hello qui manque ici, pour valider ses sources 03/09/2013 14:46:08 ici dget ne signe pas, mais il veut valider la signature faite par le développeur 03/09/2013 14:46:33 toto a rejoint le salon 14:46 progfou 03/09/2013 14:46:49 est-ce que tout le monde a pu faire son dget avec succès ? voici ce que cela affiche quand tout va bien : $ dget http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.4-3.dsc dget: retrieving http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.4-3.dsc % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1174 100 1174 0 0 2003 0 --:--:-- --:--:-- --:--:-- 4772 dget: retrieving http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.4.orig.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 487k 100 487k 0 0 210k 0 0:00:02 0:00:02 --:--:-- 253k dget: retrieving http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.4-3.diff.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 5684 100 5684 0 0 11583 0 --:--:-- --:--:-- --:--:-- 25719 dpkg-source: info: extraction de hello dans hello-2.4 dpkg-source: info: extraction de hello_2.4.orig.tar.gz dpkg-source: info: mise en place de hello_2.4-3.diff.gz dpkg-source: info: fichiers amont modifiés : hello-2.4/doc/Makefile.in 03/09/2013 14:47:26 on voit qu'il charge le .dsc pour les infos sur le paquet 03/09/2013 14:47:49 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 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 vous vous retrouvez alors avec un dossier contenant le source extrait : $ ls 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 allez dedans : cd hello-2.4 03/09/2013 14:50:27 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 pour le moment on ne va pas encore regarder dedans, on va juste re-constuire le paquet 03/09/2013 14:51:44 pour pouvoir le reconstruire, il faut d'abord s'assurer d'avoir ce qu'il faut ! 03/09/2013 14:52:01 parfois un compilateur C suffit, parfois il faut installer des paquets en plus 03/09/2013 14:52:16 doan.manh.ha a rejoint le salon 14:52 progfou 03/09/2013 14:52:30 Debian nous donne un outil pour vérifier cela : dpkg-checkbuilddeps il faut le lancer en étant dans le dossier du paquet : dans hello-2.4 03/09/2013 14:52:43 fawaz.tairou a quitté la salle 14:52 progfou 03/09/2013 14:53:19 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 donc ensuite on va effectivement la lancer, avec : debuild -us -uc -tc -sa 03/09/2013 14:53:48 doan.manh.ha a quitté la salle 14:53 darko.stanar 03/09/2013 14:54:02 ls -l progfou 03/09/2013 14:54:24 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) le -tc dit qu'on veut produire un paquet .deb 03/09/2013 14:54:36 et le -sa dit qu'on veut inclure aussi les sources 03/09/2013 14:54:47 c'est nécessaire pour l'envoi vers le dépôt ensuite 03/09/2013 14:54:59 donc lancez tous : debuild -us -uc -tc -sa 03/09/2013 14:55:13 darko.stanar 03/09/2013 14:55:15 ls -l sorry ... 03/09/2013 14:55:51 progfou 03/09/2013 14:56:54 (hop, plus de faute possible en mode modéré ) doan.manh.ha a rejoint le salon 14:56 doan.manh.ha a quitté la salle 14:57 doan.manh.ha a rejoint le salon 14:57 progfou 03/09/2013 14:57:19 normalement, si tout se passe bien, ça se finit par : Finished running lintian. doan.manh.ha a quitté la salle 14:57 doan.manh.ha a rejoint le salon 14:57 progfou 03/09/2013 14:57:51 et un ls .. vous montrera : 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 doan.manh.ha a quitté la salle 14:57 doan.manh.ha a rejoint le salon 14:57 progfou 03/09/2013 14:58:11 (vous aurez des i386 au lieu de amd64 si vous êtes en 32 bits) doan.manh.ha a quitté la salle 14:58 progfou 03/09/2013 14:58:48 dans cette liste vous avez un .deb => c'est votre paquet prêt à être installé, manuellement au départ pour le tester 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 $ sudo debi Sélection du paquet hello précédemment désélectionné. Dépaquetage de hello (à partir de hello_2.4-3_amd64.deb) ... Paramétrage de hello (2.4-3) ... 03/09/2013 15:00:16 maintenant que votre paquet hello est installé, vérifiez en le contenu : dpkg -L hello 03/09/2013 15:01:13 (on pouvait aussi vérifier le contenu avant l'installation avec : dpkg -c ../hello*.deb) 03/09/2013 15:01:38 lancez la commande hello : $ hello Bonjour, le monde! 03/09/2013 15:01:55 (c'est presque en français ! la ponctuation étant à revoir) 03/09/2013 15:02:15 arnaud.amelina@auf.org 03/09/2013 15:02:25 Q:chez moi je reçois les message W: hello source: missing-debian-source-format W: hello source: ancient-standards-version 3.8.3 (current is 3.8.4) Finished running lintian. claudine.mosoz 03/09/2013 15:02:37 progfou 03/09/2013 15:03:00 R: ces avertissements sont normaux ici : le format de paquet Debian a évolué depuis la création des sources de ce paquet hello maintenant, on commence la partie fun : faisons une nouvelle version de notre paquet ! 03/09/2013 15:03:33 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 on édite le fichier src/hello.c à la ligne 128 : 03/09/2013 15:06:39 on remplace : else if (g == greet_gnu) puts (_("Hello, world!")); 03/09/2013 15:07:00 ado.abba-ari a quitté la salle 15:07 progfou 03/09/2013 15:07:03 par : else if (g == greet_gnu) puts (_("Hello, my world!")); (on ajoute "my" au milieu) 03/09/2013 15:07:13 ensuite il faut indiquer qu'on a fait une nouvelle version 03/09/2013 15:07:35 la gestion des versions se fait dans le fichier debian/changelog 03/09/2013 15:07:54 ado.abba-ari a rejoint le salon 15:08 progfou 03/09/2013 15:08:22 mais il n'est pas nécessaire de le gérer manuellement, là aussi on a un outil pour ça : dch si on était le développeur du paquet Debian, on utiliserait dch -i 03/09/2013 15:09:17 pour incrémenter automatiquement le numéro de version 03/09/2013 15:09:24 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 on va donc le déclarer comme tel, avec : dch -l auf 03/09/2013 15:10:02 on voit que cela nous lance un éditeur avec un fichier contenant ceci : hello (2.4-3auf1) precise; urgency=low * … -- Progfou Tue, 03 Sep 2013 11:11:12 -0400 hello (2.4-3) unstable; urgency=low * Modified doc/Makefile.in to avoid /usr/share/info/dir.gz. -- Santiago Vila Sun, 30 Aug 2009 13:05:52 +0200 03/09/2013 15:10:42 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 on voit que le numéro de version est passé de 2.4-3 à 2.4-3auf1 03/09/2013 15:11:36 ici une petite parenthèse sur la numérotation s'impose 03/09/2013 15:12:02 la partie avant le tiret, donc ici 2.4, est la version de l'auteur du logiciel "hello" 03/09/2013 15:12:22 c'est la version "upstream" (de l'auteur) 03/09/2013 15:12:37 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 donc c'est la troisième version du paquet pour le logiciel hello 03/09/2013 15:13:28 donc c'est la troisième version du paquet pour le logiciel hello 2.4 03/09/2013 15:13:41 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 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 dans ce fichier changelog, on indique les changements apportés 03/09/2013 15:14:52 chaque point commençant par une astérisque 03/09/2013 15:15:49 donc ici nous allons mettre par exemple : hello (2.4-3auf1) precise; urgency=low * Bonjour _mon_ monde ! -- Progfou Tue, 03 Sep 2013 11:11:12 -0400 03/09/2013 15:15:49 et on enregistre et quitte le fichier 03/09/2013 15:15:51 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 on s'assure que tout s'est bien passé (Finished running lintian.) et on vérifie le résultat : $ ls .. 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 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 on voit qu'on a maintenant des fichiers en 2.4-3auf1, dont un .deb 03/09/2013 15:17:32 on l'installe pour tester : sudo debi 03/09/2013 15:17:40 le gestionnaire de paquet voit bien la mise à jour : $ sudo debi Préparation du remplacement de hello 2.4-3 (en utilisant hello_2.4-3auf1_amd64.deb) ... Dépaquetage de la mise à jour de hello ... Paramétrage de hello (2.4-3auf1) ... 03/09/2013 15:18:09 et le résultat est bien là : $ hello Hello, my world! 03/09/2013 15:18:24 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 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 (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 le paquet hello est un bon exemple contenant vraiment le minimum pour construire un paquet : 03/09/2013 15:21:12 les fichiers debian/control, debian/rules, debian/changelog et debian/copyright 03/09/2013 15:21:36 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 arnaud.amelina@auf.org 03/09/2013 15:23:58 sekou.diall 03/09/2013 15:23:43 Question : le paquet hello est un bon exemple contenant vraiment le minimum pour construire un paquet ? progfou 03/09/2013 15:24:12 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) arnaud.amelina@auf.org 03/09/2013 15:24:29 sekou.diall 03/09/2013 15:24:14 Question : tu veux dire le tar.gz ? progfou 03/09/2013 15:24:44 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) david.violette a quitté la salle 15:26 progfou 03/09/2013 15:26:39 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) toto a quitté la salle 15:26 progfou 03/09/2013 15:27:28 on a déjà vu le fichier debian/changelog thomas.bierry a quitté la salle 15:27 progfou 03/09/2013 15:27:59 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 !) frumenceboroto07 a quitté la salle 15:28 progfou 03/09/2013 15:28:31 et enfin le fichier debian/rules contient les règles de construction du paquet, au format Makefile (vu qu'il est lancé par make) arnaud.amelina@auf.org 03/09/2013 15:28:36 mclaude 03/09/2013 15:28:25 Question : Où est publié ce nouveau paquet? progfou 03/09/2013 15:29:07 nous n'avons pas encore fait la publication, mais en fait cela se résume à lancer : debrelease --dput lucid-experimental (ou autre section) 03/09/2013 15:29:12 arnaud.amelina@auf.org 03/09/2013 15:29:16 ekou.diall 03/09/2013 15:28:45 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 ? progfou 03/09/2013 15:29:40 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 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 arnaud.amelina@auf.org 03/09/2013 15:31:02 Merci Grand Manitou pour cet atelier combien alléchant progfou 03/09/2013 15:31:11 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 ! arnaud.amelina@auf.org 03/09/2013 15:31:16 Merci à toutes et tous ceux qui y ont participé Merci RDV au Labo 03/09/2013 15:31:35 koye.dansaibo a quitté la salle 15:31 arnaud.amelina@auf.org 03/09/2013 15:32:15 ================================================= FIN ATELIER PACKAGING DEBIAN ================================================= }}}