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