=== MosquitoOo is now known as MaWaLe === MosquitoOo is now known as MaWaLe [20:14] bonsoir à tous [20:17] bonsoir ekko [20:17] pout les classroom il faudra utiliser le canal #ubuntu-tn-classroom-chat pour discuter [20:36] yeddkom [20:56] bsr [20:58] Malek cc [20:59] bsr [21:00] merci Neo31 pour votre aide === ChanServ changed the topic of #ubuntu-tn-classroom to: Salon classroom IRC de la LoCo Team approuvée ubuntu-tn : https://wiki.ubuntu.com/TunisianTeam | | Historique du Canal : http://logs.ubuntu-eu.org/freenode/ | |*** Prochain cours "Initiation au Packaging le 19/08/2011 à 23h00 (GMT+1) ***|| SEULEMENT L'ANIMATEUR DU CLASSROOM A DROIT DE PARLER SUR CE CHANNEL, merci de rejoindre #ubuntu-tn-classrrom-chat et de télécharger la présen === ChanServ changed the topic of #ubuntu-tn-classroom to: Salon classroom IRC de la LoCo Team approuvée ubuntu-tn : https://wiki.ubuntu.com/TunisianTeam | | Historique du Canal : http://logs.ubuntu-eu.org/freenode/ | |*** "Initiation au paquetage à 23h00 (GMT+1) ***|| SEUL L'ANIMATEUR DU CLASSROOM A DROIT DE PARLER SUR CE CHANNEL, merci de rejoindre #ubuntu-tn-classrrom-chat et de télécharger la présentation http://bit.ly/o8OX9Q === ChanServ changed the topic of #ubuntu-tn-classroom to: Salon classroom IRC de la LoCo Team approuvée ubuntu-tn : https://wiki.ubuntu.com/TunisianTeam | | Historique du Canal : http://logs.ubuntu-eu.org/freenode/ | |*** "Initiation au paquetage à 23h00 (GMT+1) ***|| SEUL L'ANIMATEUR DU CLASSROOM A DROIT DE PARLER SUR CE CHANNEL, merci de rejoindre #ubuntu-tn-classroom-chat et de télécharger la présentation http://bit.ly/o8OX9Q === ChanServ changed the topic of #ubuntu-tn-classroom to: SEUL L'ANIMATEUR DU CLASSROOM A DROIT DE PARLER SUR CE CHANNEL, merci de rejoindre #ubuntu-tn-classroom-chat et de télécharger la présentation http://bit.ly/o8OX9Q || Salon classroom IRC de la LoCo Team approuvée ubuntu-tn : https://wiki.ubuntu.com/TunisianTeam | | Historique du Canal : http://logs.ubuntu-eu.org/freenode/ | |*** "Initiation au paquetage à 23h00 (GMT+1) ***|| [21:36] test [21:37] test [22:02] bonsoir à toutes [22:02] bonsoir à tous [22:02] merci d'avoir répondu présents à l'invitation de la Team Ubuntu Tunisie [22:03] Ubuntu Team qui a eu la gentillesse de me proposer d'animer un classroom sur le packaging [22:03] alors que je suis développeur Debian et que je n'utilise pas Ubuntu [22:03] mais après tout, Debian et Ubuntu sont de la même famille ;-) [22:03] et le système de packaging pour les deux fonctionne exactement de la même manière [22:04] c'est d'ailleurs ce qui fait la force de ces deux distributions ! [22:04] on te remercie aussi d'avoir accepter d'animer ce classroom malgré que tu es en vacances [22:04] le plaisir est pour moi [22:04] et j'espère que la présentation sera utile et intéressera les participants, qu'ils soient Tunisiens ou non [22:04] et que cela leur donnera l'envie de contribuer à Debian et Ubuntu === asma is now known as Guest70845 [22:05] en corrigeant des bugs, en ajoutant des nouveaux packages ! [22:05] en somme, en participant à ces formidables projets de logiciels libres [22:05] les infos utiles relatives à cette présentation sont dans le topic [22:05] vous pouvez poser toutes les questions que vous voulez sur #ubuntu-tn-classroom-chat [22:05] arrêtez-moi si je vais trop vite [22:06] ou si quelque chose n'est pas clair [22:06] pour vous aider à suivre, la présentation que préparée se trouve sur http://bit.ly/o8OX9Q [22:07] pour faire disparaître les messages de join/part/quit, http://i.clintecker.com/disable-irc-msgs.html [22:08] ou encore http://wiki.xkcd.com/irc/Hide_join_part_messages (pour les utilisateurs de pidgin) [22:08] adn, concentre toi sur le classroom on s'occupe du reste :) [22:09] ok [22:09] faites-moi signe sur l'autre chan que vous avez la présentation [22:09] et on passe à la : [22:09] #### DIAPO n° 2 #### [22:11] pour pouvoir tirer le meilleur de cette présentation, il vaut mieux avoir une distribution Debian, Ubuntu ou dérivée [22:11] qui fonctionne avec des packages .deb :-) [22:11] sinon, c'est pas grave, mais vous devrez vous contenter de la théorie [22:11] pour ceux qui ont une distribution Debian, je vous recommande de suivre pas à pas les commandes que je vous proposerai [22:12] ce sont des instructions de ligne de commande ("shell") basique [22:12] s [22:12] a priori, on ne va pas utiliser beaucoup plus que les commandes : [22:13] ls (lister le contenu d'un dossier, comme "dir" dans MS-DOS) [22:13] cd (aller dans un dossier) [22:13] et quelques programmes spécifiques faits pour créer un package [22:14] très rapidement, une distribution Debian, c'est une série de logiciels libres qui ont été packagés d'une manière standardisée pour que l'utilisateur l'utilise le plus facilement possible [22:14] sous windows, quand on veut un programme, il faut aller sur google, chercher le programme, aller sur le site de son créateur, télécharger, installer [22:15] parfois il faut installer un autre programme avant pour que ça fonctionne (par exemple Java, .net, etc.) [22:15] une distribution offre une commande qui installe le programme qu'on veut en s'occupant du reste [22:15] par exemple, je veux installer xchat [22:16] sous Debian, on utilise la commande apt-get (APT = Advanced Packaging Tool) et on dit : [22:16] apt-get install xchat [22:16] il se débrouille pour trouver la dernière version xchat disponible, la télécharger, l'installer, la configurer [22:16] sous ubuntu il faut la précéder avec sudo === Guest55777 is now known as killman88 [22:16] et comme par miracle, l'icône apparaît [22:17] sous Ubuntu, en effet, soit on utilise directement "sudo apt-get install xchat", soit on utilise un programme comme Synaptic qui fait tout en arrière-plan de manière transparente [22:17] #### DES QUESTIONS ? [22:18] [QUESTION]Lequel des deux est meilleur apt ou aptitude et pourquoi? [22:18] en fait, les deux systèmes ont le même rôle, la même utilité : gérer l'installation, la configuration, la désinstallation des packages [22:18] selon les époques, l'un ou l'autre était à la mode, en fonction de plusieurs critères [22:19] - la facilité d'utilisation (aptitude proposait une forme d'interface graphique) [22:19] propose, je veux dire, pas proposait (aptitude existe toujours) [22:20] - la gestion des dépendances des programmes (aptitude permet d'installer des programmes complémentaires même si pas indispensables ; il permet égalemnt de supprimer facilement les packages inutiles) [22:20] - la rapidité d'exécution (apt-get était plus rapide) [22:21] - la robustesse des mises à jour et la résolution des conflits entre packages installés [22:21] pour lenny, aptitude était recommandé [22:21] (Debian Lenny, je veux dire) [22:21] depuis Debian Squeeze (la version sortie en février 2011), on recommence à recommander apt-get [22:22] en fait, c'est un débat vieux comme le monde, un peu comme ViM vs Emacs [22:22] une question de mode [22:22] une question d'habitude [22:22] une question de communauté qui développe de nouvelles fonctionnalités [22:23] mais les deux sont utilisables et utilisés [22:23] faites votre choix en fonction de ce que vous préférez [22:23] une autre question ? [22:23] no [22:24] ok [22:24] #### DIAPO n° 3 #### [22:24] je vais aller vite sur celle-là :-) [22:24] en gros, quand j'étais petit (16 ou 17 ans), l'été, y avait pas le climatiseur à la maison à La Mornaguia [22:25] je m'ennuyais en juillet et août, et j'ai voulu tester d'installer Linux [22:25] puis j'ai eu peur de perdre des données, donc j'ai laissé tomber [22:25] (c'était en 1999, je pense) [22:25] mais quand je suis entré en école d'ingénieur, en 2002, je me suis impliqué dans l'association qui gérait le réseau de la résidence des élèves [22:26] dans cette association, tous les serveurs étaient sous Linux et plus précisément sous Debian [22:26] ça a été pour moi l'occasion de découvrir Linux, de l'installer, de l'utiliser [22:26] pendant l'été 2004, en stage, je m'ennuyais un peu (normal, en stage...) [22:27] alors j'ai commencé à me renseigner sur la manière dont fonctionne un package Debian [22:27] je me suis arrêté très vite - ça m'avait l'air compliqué ! [22:27] et je me suis mis à la traduction ;-) [22:27] * Neo31 rappel au participants qu'ils peuvent rejoindre le channel #ubuntu-tn-classroom-chat pour poser leurs questions [22:28] de fil en aiguille, pour traduire, on a besoin de comprendre de plus en plus de trucs techniqués [22:28] donc quelques mois plus tard, j'ai packagé p7zip pour Debian [22:28] pour le reste, c'est sur la diapo, on en discutera après, si certains veulent :-) [22:29] à part "c'est bon, il a fini de raconter sa vie ?", est-ce qu'il y a des questions ? ;-) [22:29] no [22:30] #### DIAPO n° 4 #### [22:30] supposons qu'on ait trouvé un programme sympa [22:30] avant de le packager, y a plusieurs choses à se demander [22:31] 1) est-ce qu'il est libre ? s'il ne l'est pas, y a probablement un logiciel libre qui fait la même voire mieux [22:31] => trouver ce logiciel libre et l'utiliser à la place ! [22:32] 2) est-ce qu'il y a une communauté d'utilisateurs et de développeurs derrière ce programme ? si ce n'est pas le cas, essayez de comprendre pourquoi (peut-être que le logiciel est mort) et éventuellement s'impliquer pour réveiller le projet [22:33] 3) est-ce qu'un package existe déjà ? s'il y a déjà un package, ça ne sert à rien de refaire le travail une deuxième fois ! [22:33] 4) est-ce que quelqu'un a déjà prévu de créer le package ? (cf. http://bugs.debian.org/wnpp) si c'est le cas, on peut proposer de donner un coup de main [22:34] ce soir (et après on va accélérer un peu), je vous propose de travailler sur un programme innovant : un genre d'Hello World à la Tunisienne [22:34] Questions ? [22:34] [Question]Si le package existe déjà mais il n'est pas à jour, est ce que c'est possible de le mettre à jour ou il faut recommencer le travail à 0?! [22:35] de deux choses l'une : [22:36] 1) il n'est pas à jour mais il n'a pas de maintainer officiel : dans ce cas-là, n'hésitez pas, lancez-vous ! Essayez de le mettre à jour. S'il est trop vieux, il est parfois nécessaire de reprendre depuis 0 [22:36] 2) s'il n'est pas à jour, contactez le maintainer officiel et proposez-lui de l'aider [22:36] par exemple avec des patches de mise à jour de son package [22:37] ou avec un package mis à jour par vos soins [22:37] est-ce que la réponse est satisfaisante ? [22:37] si oui, question ou diapo suivante [22:37] adn, go [22:38] ok, je me rends compte que j'ai commenté la diapo 5 et non la 4 [22:38] pour la 4, c'est clair, tout est dedans [22:38] on rentre donc dans le vif du sujet [22:38] #### DIAPO n° 6 #### [22:39] alors, un package, en fait, ça peut faire référence à plusieurs choses [22:39] soit le package binaire (binary package), c'est le fichier .deb [22:40] soit le package source (source package), dont on parlera à la diapo suivante [22:40] le fichier .deb contient plusieurs choses [22:40] 1) les fichiers à installer [22:41] pour faire fonctionner le programme (fichiers de configuration, images, sons, programmes) [22:41] 2) des informations complémentaires mais néanmoins nécessaires [22:41] par exemple la liste des dépendances, c'est-à-dire les packages qu'il faut obligatoirement installer pour que ça fonctionne [22:42] par exemple, quand j'installe xchat ou pidgin, je suis obligé d'avoir une interface graphique [22:42] donc je dois avoir au préalable installé X.org [22:43] voire Gnome, KDE, XFCE ou autre... [22:43] je vous propose de télécharger le fichier suivant : [22:44] http://adn.diwi.org/debian/classroom/package/result/democratie_0.1-1_amd64.deb [22:44] enregistrez-le quelque part [22:44] lancez le terminal [22:44] [QUESTION] un paquet existe en version 1.1.1 dans toutes les versions d'ubuntu, et toutes les versions stables de debian. Une version 2 a été packagé sur une version instable debian. Comment en profiter sur ubuntu? [22:44] et lancez la commande "ar x democratie_0.1-1_amd64.deb" [22:44] (je répondrai à la question juste après la manip) [22:45] si vous faites "ls" ensuite, vous devez voir quelque chose comme ce qui suit : [22:45] 0:45 adn@wahe /tmp/DebPackaging% wget http://adn.diwi.org/debian/classroom/package/result/democratie_0.1-1_amd64.deb [22:45] --2011-08-20 00:45:17-- http://adn.diwi.org/debian/classroom/package/result/democratie_0.1-1_amd64.deb [22:45] 2011-08-20 00:45:17 (369 MB/s) - «democratie_0.1-1_amd64.deb» sauvegardé [4808/4808] [22:45] 0:45 adn@wahe /tmp/DebPackaging% ar x democratie_0.1-1_amd64.deb [22:46] 0:45 adn@wahe /tmp/DebPackaging% ls [22:46] control.tar.gz data.tar.gz debian-binary democratie_0.1-1_amd64.deb [22:46] tapez ensuite la commande "tar tvzf data.tar.gz" [22:46] vous verrez comment c'est organisé [22:47] l'archive data.tar.gz contient en effet les fichiers à installer, selon l'arborescence de destination prévue [22:47] drwxr-xr-x root/root 0 2011-08-12 21:54 ./ [22:47] drwxr-xr-x root/root 0 2011-08-12 21:54 ./usr/ [22:47] -rwxr-xr-x root/root 4904 2011-08-12 21:54 ./usr/bin/democratie [22:47] -rw-r--r-- root/root 161 2011-08-12 21:49 ./usr/share/doc/democratie/changelog.Debian.gz [22:47] etc. [22:48] vous pouvez lancer la commande "tar tvzf control.tar.gz" [22:48] vous verrez qu'il contient des informations sur le package [22:49] 0:48 adn@wahe /tmp/DebPackaging% tar tvzf control.tar.gz [22:49] drwxr-xr-x root/root 0 2011-08-12 21:54 ./ [22:49] -rw-r--r-- root/root 357 2011-08-12 21:54 ./control [22:49] -rw-r--r-- root/root 270 2011-08-12 21:54 ./md5sums [22:49] par exemple, le fichier control contient les éléments suivants [22:49] Package: democratie [22:49] Version: 0.1-1 [22:49] Architecture: amd64 [22:49] Maintainer: Mohammed Adnene Trojette [22:49] [QUESTION] un paquet existe en version 1.1.1 dans toutes les versions d'ubuntu, et toutes les versions stables de debian. Une version 2 a été packagé sur une version instable debian. Comment en profiter sur ubuntu? [22:50] en fait, y a deux catégories de packages, sous Ubuntu [22:51] 1) les packages maintenus séparément par les développeurs Ubuntu et par les dév Debian [22:51] 2) les packages simplement synchronisés par Ubuntu avec Debian instable [22:51] pour la catégorie 2), il faut attendre que la synchronisation soit lancée [22:52] ce qui est systématiquement peu avant les releases Ubuntu [22:52] pour la catégorie 1), il faut attendre que le dév Ubuntu se bouge les fesses ;-) [22:52] (pour info, j'ai fait wget depuis la machine où se trouve le fichier, d'où le débit, qui est limité surtout par la vitesse du disque dur) [22:53] si la réponse est suffisamment claire, question ou diapo suivante ? [22:53] [QUESTION] Un patch de mise à jour, c'est un script Shell qui intervient sur le fichier ou bien autre chose ? [22:53] le patch de mise à jour, c'est un fichier texte qu'on passe à la commande "patch" [22:54] qui se trouve dans le package du même nom [22:54] c'est le résultat de l'exécution de la commande "diff" entre deux fichiers ou deux répertoires [22:55] par exemple, je vais créer deux fichiers : fichier-A et fichier-B [22:55] fichier-A contient "A" et fichier-B contient "B" [22:55] 0:54 adn@wahe /tmp/DebPackaging% echo A > fichier-A && echo B > fichier-B [22:55] 0:55 adn@wahe /tmp/DebPackaging% diff -u fichier-A fichier-B [22:55] --- fichier-A 2011-08-20 00:55:23.000000000 +0200 [22:55] +++ fichier-B 2011-08-20 00:55:23.000000000 +0200 [22:55] @@ -1 +1 @@ [22:55] -A [22:55] +B [22:56] le patch, c'est le fichier texte qui contient les 5 dernières lignes [22:56] qui dit "entre le fichier-A et le fichier-B, à la ligne 1, on enlève A et on rajoute B" [22:57] on applique ce patch avec la commande /usr/bin/patch [22:57] 0:57 adn@wahe /tmp/DebPackaging% diff -u fichier-A fichier-B > fichier-patch [22:57] zsh: exit 1 diff -u fichier-A fichier-B > fichier-patch [22:58] 0:57 adn@wahe /tmp/DebPackaging% cat fichier-patch|patch [22:58] patching file fichier-A [22:58] B [22:58] 0:57 adn@wahe /tmp/DebPackaging% cat fichier-A [22:58] la suite ? [22:58] adn, quand tu termine la réponse tape "next" [22:58] ok :-) [22:58] [QUESTION] On peut essayer de créer une version x86 du package [22:58] next (comme dans l'émission du même nom) [22:58] en fait, vous verrez à la fin de la présentation [22:59] ceux qui ont une machine x86 auront créé une version x86 [22:59] et ceux qui ont une machine amd64 auront créé une version amd64 [22:59] cela dépend de votre architecture [22:59] next [22:59] [QUESTION] pourquoi le paquet est en arch amd64 (ou any) au lieu de all? [23:00] parce qu'il contient des fichiers qui ne peuvent être exécutés que sous une machine amd64 [23:00] dans le fichier control du paquet binaire, comme c'est un package amd64, c'est indiqué Architecture: amd64 [23:01] mais dans le package source, on dira Architecture: any [23:01] et c'est les serveurs de compilation automatique (autobuilders) qui, selon leur architecture, créeront les packages correspondants [23:01] avec le champ Architecture qui va bien [23:02] si mon package n'avait contenu que des fichiers dont le fonctionnement ne dépend pas de l'architecture (un son, une image, un PDF), j'aurais mis Architecture: all [23:02] et non any [23:02] next [23:02] [QUESTION] n'est il pas plus pratique de créer des packages ALL pour éviter la dépendace de l'architecture? [23:02] en fait, il suffit qu'un seul fichier du package dépende de l'architecture pour justifier un package "Architecture: any" [23:03] imaginons que mon programme en C, compilé avec un compilateur pour un processeur amd64, se retrouve dans un package "Architecture: all" [23:03] alors un utilisateur sous x86 va le télécharger [23:03] et, au moment de lancer la commande, il va y avoir une erreur [23:04] parce que son processeur x86 ne peut exécuter des programmes compilés pour amd64 [23:04] next [23:04] no [23:04] ok, diapo suivante alors ? [23:04] #### DIAPO n° 7 #### [23:04] go ahead adn (and faster) [23:05] le package source est constitué de trois fichiers [23:05] 1) le code source du programme original [23:05] (fichier .orig.tar.bz2 ou orig.tar.gz...) [23:05] 2) l'ensemble des patches à appliquer à ce code source pour en faire un package Debian [23:06] (fichier .debian.tar.gz ou .diff.gz dans les anciennes versions) [23:06] 3) le fichier de description du package [23:06] (fichier .dsc) [23:06] questions ? [23:06] [QUESTION] Que veut dire le terme description signée? [23:07] pour authentifier un package, on demande aux développeurs de signer le fichier description avec leur clé GPG [23:07] ce fichier .dsc contient en particulier les identifiants des fichiers qui constituent le package source [23:08] à savoir la somme md5 ou SHA du fichier .orig.tar.bz2 et du fichier .debian.tar.gz [23:08] si on regarde dans le fichier dispo sur http://adn.diwi.org/debian/classroom/package/result/democratie_0.1-1.dsc [23:08] 0:57 adn@wahe /tmp/DebPackaging% wget http://adn.diwi.org/debian/classroom/package/result/democratie_0.1-1.dsc [23:08] --2011-08-20 01:08:12-- http://adn.diwi.org/debian/classroom/package/result/democratie_0.1-1.dsc [23:08] 2011-08-20 01:08:12 (202 MB/s) - «democratie_0.1-1.dsc» sauvegardé [810/810] [23:08] 1:08 adn@wahe /tmp/DebPackaging% cat *dsc [23:08] Source: democratie [23:08] Binary: democratie [23:08] Architecture: any [23:08] Version: 0.1-1 [23:08] Maintainer: Mohammed Adnene Trojette [23:09] Checksums-Sha256: d8eb834371c367f2bcdb5282359f0d8b2fb1417011b79c4ad9229d9e8e642abf 58239 democratie_0.1.orig.tar.bz2 b166468099ceec9891ea08c6c72b0265676003c33596107842be0b2195f4799d 2522 democratie_0.1-1.debian.tar.gz [23:09] next [23:09] no [23:09] #### DIAPO n° 8 #### [23:10] je vous propose d'installer les packages indiqués [23:10] sudo apt-get install dpkg-dev dh-make devscripts build-essentials autotools-dev [23:10] questions ? [23:10] next [23:10] #### DIAPO n° 9 #### [23:11] créez un dossier de travail (par exemple dans votre home) [23:11] allez dedans [23:11] correction : [23:11] sudo apt-get install dpkg-dev dh-make devscripts build-essential autotools-dev [23:11] oui, merci ! [23:11] build-essential << sans S a la fin [23:11] et téléchargez le code source original de notre super programme http://adn.diwi.org/debian/classroom/package/upstream/democratie-0.1.tar.bz2 [23:12] que l'on souhaite packager [23:12] un ecran avec le titre "Postfix configuration va appraitre" [23:12] on garde le choix par defaut [23:12] Internet site [23:13] pour cela on appui sur la touche "fleche droit" pour selectionner le bouton OK [23:13] puis on appui sur la touche entree [23:13] (merci) [23:13] encore on appuis sur entree sur l'ecran suivant [23:13] installation en cours [23:14] (dis-moi quand je peux continuer) [23:14] go ahead adn [23:14] on décompresse l'archive contenant le code source [23:15] 1:12 adn@wahe /tmp/DebPackaging% tar xvjf democratie-0.1.tar.bz2 [23:15] democratie-0.1/ [23:15] democratie-0.1/Makefile.am [23:15] democratie-0.1/install-sh [23:15] democratie-0.1/configure [23:15] (etc.) [23:15] installation done [23:15] on va dans le dossier democratie-0.1/ [23:15] et on lance la commande dh_make pour créer le dossier debian/ [23:16] Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch? [23:16] [s/i/m/l/k/n] [23:16] 1:15 adn@wahe /tmp/DebPackaging/democratie-0.1% dh_make -f ../democratie-0.1.tar.bz2 [23:16] Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch or cdbs? [s/i/m/l/k/n/b] s [23:16] on choisit s, pour "single binary" [23:16] Maintainer name : Mohammed Adnène Trojette [23:16] Email-Address : adn+deb@diwi.org [23:16] Date : Sat, 20 Aug 2011 01:16:02 +0200 [23:16] Package Name : democratie [23:16] Version : 0.1 [23:16] License : blank [23:16] Using dpatch : no [23:16] Type of Package : Single [23:16] Hit to confirm: [23:16] et on valide avec la touche entrée [23:17] si on fait "ls" [23:17] on voit qu'un nouveau dossier debian/ est apparu [23:17] 1:17 adn@wahe /tmp/DebPackaging/democratie-0.1% ls [23:17] aclocal.m4 config.h.in configure* configure.ac debian/ depcomp* install-sh* Makefile.am Makefile.in missing* src/ [23:17] questions ? [23:17] [QUESTION] si un paquet est construit correctement, cela signifie t-il que l'on a toutes les dépendances de cette liste sur la machine? [23:18] en fait, la question est posée à l'envers [23:18] pour constuire correctement le paquet, on a besoin de build-essential [23:18] qui est un package qui dépend en particulier du package "make", dont on a besoin [23:19] 1:17 adn@wahe /tmp/DebPackaging/democratie-0.1% apt-cache show build-essential [23:19] Depends: libc6-dev | libc-dev, gcc (>= 4:4.4.3), g++ (>= 4:4.4.3), make, dpkg-dev (>= 1.13.5) [23:19] il dépend également de gcc [23:19] dont on a également besoin [23:19] dpkg-dev contient des outils également nécessaires [23:19] dh-make, on vient de l'utiliser ;-) [23:20] devscripts contient plein de programmes utiles [23:20] (j'ai mis entre parenthèses, sur la diapo 8, les programmes qui rendent nécessaire l'installation de ces dépendances) [23:20] est-ce que la réponse est claire ? [23:20] [QUESTION] Peux-tu expliciter la différence entre le "paquet .deb" produit par la commande "make checkinstall" et .deb classique ? [23:21] la commande make checkinstall dépend probablement du code source du programme [23:21] il faudrait lire le fichier Makefile pour savoir ce qu'elle fait [23:22] techniquement, ce sont deux packages Debian dont il ne devrait pas y avoir de différence [23:22] en pratique, rien ne garantit que l'auteur du Makefile ait respecté les standards des packages Debian [23:22] next [23:22] [QUESTION] La différence entre les [s/i/m/l/k/n] nous éclairer la chose ? [23:22] single package : on crée un unique package .deb [23:22] c'est le "s" [23:23] m = multiple package : parfois, on veut plusieurs packages [23:23] un avec la documentation [23:23] un avec la musique [23:23] un avec les programmes [23:24] un spécifique à Gnome [23:24] un autre spécifique à KDE [23:24] à partir du même code source [23:24] l = library : par exemple le package de libxml [23:24] k = kernel module [23:25] en fait, dh_make propose des modèles de dossiers debian/ adaptés au type de package souhaité [23:25] pour cette formation, on fait un package tout simple [23:25] next [23:25] next [23:26] #### DIAPO n° 10 #### [23:26] pour la formation, on va supprimer plusieurs fichiers inutiles [23:27] je vous recommande, si vous retravaillez cette formation plus tard, de lire le contenu de ces fichiers pour comprendre ce à quoi ils servent [23:27] on saute cette lecture, pour gagner du temps [23:27] rm -f debian/{democratie.cron.d.ex,democratie.default.ex,democratie.doc- base.EX,docs,emacsen-install.ex,emacsen-remove.ex,emacsen- startup.ex,init.d.ex,manpage.1.ex,manpage.sgml.ex,manpage.xml.ex,menu.ex,postins t.ex,postrm.ex,preinst.ex,prerm.ex,README.Debian,README.source,watch.ex} [23:28] pour gagner du temps également, j'ai préparé une page de manuel pour le programme [23:28] disponible sur http://adn.diwi.org/debian/classroom/package/upstream/democratie.1 [23:28] il faut la mettre dans le dossier debian/ [23:28] par exemple avec la commande "wget -O debian/democratie.1 [23:28] http://adn.diwi.org/debian/classroom/package/upstream/democratie.1" [23:28] sur la même ligne, pardon [23:28] 1:28 adn@wahe /tmp/DebPackaging/democratie-0.1% wget -O debian/democratie.1 http://adn.diwi.org/debian/classroom/package/upstream/democratie.1 [23:29] on a également besoin d'indiquer pour plus tard la liste des pages de manuel disponibles dans le fichier debian/democratie.manpages [23:30] je l'ai préparé en avance : récupérez-le sur http://adn.diwi.org/debian/classroom/package/upstream/democratie.manpages [23:30] 1:28 adn@wahe /tmp/DebPackaging/democratie-0.1% wget -O debian/democratie.manpages http://adn.diwi.org/debian/classroom/package/upstream/democratie.manpages [23:30] questions ? problèmes ? [23:31] adn, le fichier debian/democratie.manpages n'existe pas il faut le créer ? [23:31] tu peux le télécharger directement [23:31] ou sinon tu le crées, comme tu veux [23:31] 1:30 adn@wahe /tmp/DebPackaging/democratie-0.1% cat debian/democratie.manpages [23:31] debian/democratie.1 [23:32] il y a des personnes qui n'ont pas pu avoir le dossier debian quelles sont les sources d'erreurs possibles ? [23:32] peut-être qu'ils n'ont pas mis "s" quand dh_make a demandé [23:33] Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch or cdbs? [23:33] [s/i/m/l/k/n/b] s [23:33] comment on peut rattraper ça ? [23:34] lancer à nouveau la commande "dh_make -f ../democratie-0.1.tar.bz2" [23:34] mais avant, s'assurer qu'on est bien dans le dossier democratie-0.1/ [23:34] pour vérifier, on lance la comme "pwd" [23:34] et ça doit se terminer par "democratie-0.1/" [23:34] [QUESTION] Les man pages doivent avoir un format particulier ? [23:34] par "/democratie-0.1", je veux dire (pas "/" à la fin) [23:35] par exemple, chez moi : [23:35] 1:33 adn@wahe /tmp/DebPackaging/democratie-0.1% pwd [23:35] /tmp/DebPackaging/democratie-0.1 [23:35] oui, les man pages ont un format particulier [23:35] le format des fichiers .roff [23:36] next [23:36] next [23:37] (pour compléter la réponse précédente, ouvrez le fichier debian/democratie.1 et vous verrez le format) [23:37] adn on pe revenir a la commande rm ? [23:37] ca n'as pas marcher voila une commande alternative [23:37] cd debian; rm -f democratie.cron.d.ex democratie.default.ex democratie.doc-base.EX docs emacsen-install.ex emacsen-remove.ex emacsen-startup.ex init.d.ex manpage.1.ex manpage.sgml.ex manpage.xml.ex menu.ex postinst.ex postrm.ex preinst.ex prerm.ex README.Debian README.source watch.ex ; cd .. [23:37] Neo31: oui, ma commande est une commande bash et tu dois avoir dash d'installer [23:38] Neo31: que renvoie la commande "echo $SHELL" ? [23:38] bash [23:38] bon, étrange alors :-) [23:38] ca n'as pas marcher chez sarhan aussi [23:38] alors utilisez la commande de Neo31 [23:39] Neo31: je vois le problème, y a des espaces qui se sont rajoutées dans ma commande [23:39] ca a marcher avec Ubuntu 10.04 [23:40] les version plus recentes peuvent utiliser la commande alternative que j'ai donner [23:40] bref, à la fin, il ne reste plus grand chose dans le dossier debian/ [23:40] 1:40 adn@wahe /tmp/DebPackaging/democratie-0.1% ls debian [23:40] changelog compat control copyright democratie.1 democratie.manpages rules* source/ [23:41] #### DIAPO n° 11 #### [23:41] là, c'est un peu descriptif [23:41] adn plusieurs membres on rater la commande, tu peut ralentir un peu pour qu'il ratrappes? [23:41] oui, bien sûr ! [23:42] dites-moi quand vous êtes prêts [23:44] go adn [23:44] ok [23:44] #### DIAPO n° 11 #### [23:44] je ne vais pas décrire tous les fichiers du dossier debian/ [23:44] je vais me concentrer sur deux : debian/control et debian/changelog [23:44] le reste, vous avez une description dans la présentation ou alors c'est pas indispensable pour la formation [23:45] 1) le fichier debian/control [23:45] cf. http://paste.debian.net/126796/ [23:46] on voit qu'il est constitué de plus champs de la forme "Champ: valeur" [23:46] et qu'il y a deux blocs de texte [23:46] a) le premier bloc concerne le package source [23:47] Source: democratie <-- c'est le nom du package source [23:47] Maintainer: <-- il y a votre nom et votre adresse e-mail [23:47] Build-Depends: <-- c'est la liste des packages qu'il est nécessaire d'installer pour construire le package [23:48] b) le deuxième bloc concerne le package binaire [23:48] Package: <-- c'est le nom du package binaire [23:48] Architecture: <-- c'est le type d'architecture, ici "any" (au moment de construire le .deb, ce sera remplace par l'architecture de votre processeur) [23:49] Depends: <-- c'est la liste des packages qu'il est nécessaire d'installer pour que votre package s'installe et fonctionne correctement [23:49] le reste, c'est de la description [23:49] [QUESTION] quels sont les fichier utiliser pour générer le fichier control [23:49] soit on l'écrit soi-même, si on connaît la liste des champs à mentionner [23:49] soit, comme dans notre cas, on part d'un modèle (celui de dh_make par exemple) [23:50] et dans tous les cas, on complète soi-même [23:50] pour gagner du temps ce soir, on va laisser les fichiers tels quels [23:50] next [23:50] next [23:50] #### DIAPO n° 12 #### [23:51] 2) le fichier debian/changelog [23:52] voir http://paste.debian.net/126797/ [23:53] on met les changements apportés par le package [23:53] dans notre cas, "Initial release" et le bug que ça ferme, identifié par son numéro [23:53] qiestions ? [23:53] no [23:54] ok, pour gagner du temps, on ne touche pas aux différents fichiers [23:54] tu veux poser la question ? [23:54] [QUESTION] Concernant l'architecture, ça change quoi le fait de suivre la voie du CrossCompiling ? [23:54] la question est très large [23:55] on pourra en reparler dans le classroom pour utilisateurs avancés [23:55] parce qu'il faut installer les programmes nécessaires à la compilation pour d'autres architectures [23:55] next ? [23:55] no [23:56] #### DIAPO n° 13 #### [23:56] le moment tant attendu [23:56] on lance la commande "dpkg-buildpackage -uc -us" [23:56] et on laisse se faire la construction du package [23:57] ça se termine avec l'affichage suivant : [23:57] dh_builddeb [23:57] dpkg-deb : construction du paquet « democratie » dans « ../democratie_0.1-1_amd64.deb ». [23:57] dpkg-genchanges >../democratie_0.1-1_amd64.changes [23:57] dpkg-genchanges: inclusion du code source original dans l'envoi (« upload ») [23:57] dpkg-source --after-build democratie-0.1 [23:57] dpkg-buildpackage: envoi complet (inclusion du code source d'origine) [23:57] et le dossier parent contient ce qui suit : [23:57] 1:57 adn@wahe /tmp/DebPackaging/democratie-0.1% ls .. [23:57] democratie-0.1/ democratie_0.1-1_amd64.deb democratie_0.1-1.dsc democratie-0.1.tar.bz2 [23:57] democratie_0.1-1_amd64.changes democratie_0.1-1.debian.tar.gz democratie_0.1.orig.tar.bz2 [23:57] questions ? dépannage ? [23:58] pour les dépendances manquantes, c'est que vous n'avez pas installé autotools-dev et dpkg-dev [23:58] comme indiqué précédemment [23:59] sudo apt-get install autotools-dev dpkg-dev