#ubuntu-tn-classroom 2011-08-16
<sarhan> rejoignez aussi #ubuntu-tn-classroom-chat pour laissez le log ici clair, les questions seront la bas 
<N00B_> le lien de tÃ©lechargement ne contient que la version  11.04 mais ils m'ont dit que c po stable donc ou je peu trouver les autres versions 
<sarhan> N00B_, posez les questions sur #ubuntu-tn-classroom-chat
#ubuntu-tn-classroom 2011-08-18
<tr0xan> ya 7asra
<sarhan> ya bou galb 7atta houni jey tfloodi
<tr0xan> j'ai assistÃ© au premier cours ici
<tr0xan> C++
<tr0xan> avec mawale et AliBB
<tr0xan> et nizar
<tr0xan> win ritni nefloodi?
<tr0xan> oO
<sarhan> fi launchpad
<tr0xan> tekdheb maritnich nefloodi
<tr0xan> floodit 9bal ma enty tji
<sarhan> nektheb? -.-
<sarhan> ena elghalet eli na7ki m3ak !
<tr0xan> miselech
<tr0xan> bon sarhan
<tr0xan> Ã  vrai dire hani jey
<tr0xan> taw nkalmek na3mlou 9ahwa
<sarhan_> ping adn 
<adn> pong
<sarhan> ici vous expliquez le cours
<adn> on m'a expliquÃ© qu'il y avait -classroom et -classroom-chat
<adn> tu peux me tutoyer :-)
<sarhan> personne n'aura le droit de parler sauf vous
<adn> j'ai mÃªme pas 30 ans :-)
<sarhan> moi j'ai 16 donc :D
<adn> tbarkallah !
<adn> l'avenir, c'est toi !
<sarhan> donc les autres seront sur #ubuntu-tn-classroom-chat
<sarhan> ils pourront discuter et poser les questions la bas
<adn> je reprends vite fait la charte graphique de ma prÃ©sentation histoire de plus y toucher demain
<sarhan> et les question seront retrensmise par une seule paersonne ici
<adn> sarhan: tu touches un peu sur ubuntu ?
<adn> je veux dire le packaging, tu y connais un peu ?
<sarhan> non
<adn> donc ici Ã§a va Ãªtre +m
<sarhan> j'ai suivi un tuto une fois
<adn> et moi je serai +v ?
<sarhan> adn, exactement
<adn> ok
<sarhan> les question seront de la forme Question:
<sarhan> test
<sarhan> test
#ubuntu-tn-classroom 2011-08-19
<ekko> bonsoir Ã  tous
<sarhan> bonsoir ekko 
<sarhan> pout les classroom il faudra utiliser le canal #ubuntu-tn-classroom-chat pour discuter
<Miro19> yeddkom
<Malek> bsr
<k3nz0> Malek cc
<Malek> bsr
<Malek> 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) ***||
<Neo31> test
<adn> test
<adn> bonsoir Ã  toutes
<adn> bonsoir Ã  tous
<adn> merci d'avoir rÃ©pondu prÃ©sents Ã  l'invitation de la Team Ubuntu Tunisie
<adn> Ubuntu Team qui a eu la gentillesse de me proposer d'animer un classroom sur le packaging
<adn> alors que je suis dÃ©veloppeur Debian et que je n'utilise pas Ubuntu
<adn> mais aprÃ¨s tout, Debian et Ubuntu sont de la mÃªme famille ;-)
<adn> et le systÃ¨me de packaging pour les deux fonctionne exactement de la mÃªme maniÃ¨re
<adn> c'est d'ailleurs ce qui fait la force de ces deux distributions !
<nizarus> on te remercie aussi d'avoir accepter d'animer ce classroom malgrÃ© que tu es en vacances 
<adn> le plaisir est pour moi
<adn> et j'espÃ¨re que la prÃ©sentation sera utile et intÃ©ressera les participants, qu'ils soient Tunisiens ou non
<adn> et que cela leur donnera l'envie de contribuer Ã  Debian et Ubuntu
<adn> en corrigeant des bugs, en ajoutant des nouveaux packages !
<adn> en somme, en participant Ã  ces formidables projets de logiciels libres
<adn> les infos utiles relatives Ã  cette prÃ©sentation sont dans le topic
<adn> vous pouvez poser toutes les questions que vous voulez sur #ubuntu-tn-classroom-chat
<adn> arrÃªtez-moi si je vais trop vite
<adn> ou si quelque chose n'est pas clair
<adn> pour vous aider Ã  suivre, la prÃ©sentation que prÃ©parÃ©e se trouve sur http://bit.ly/o8OX9Q
<adn> pour faire disparaÃ®tre les messages de join/part/quit, http://i.clintecker.com/disable-irc-msgs.html
<adn> ou encore http://wiki.xkcd.com/irc/Hide_join_part_messages (pour les utilisateurs de pidgin)
<nizarus> adn, concentre toi sur le classroom on s'occupe du reste :)
<adn> ok
<adn> faites-moi signe sur l'autre chan que vous avez la prÃ©sentation
<adn> et on passe Ã  la :
<adn> #### DIAPO nÂ° 2 ####
<adn> pour pouvoir tirer le meilleur de cette prÃ©sentation, il vaut mieux avoir une distribution Debian, Ubuntu ou dÃ©rivÃ©e
<adn> qui fonctionne avec des packages .deb :-)
<adn> sinon, c'est pas grave, mais vous devrez vous contenter de la thÃ©orie
<adn> pour ceux qui ont une distribution Debian, je vous recommande de suivre pas Ã  pas les commandes que je vous proposerai
<adn> ce sont des instructions de ligne de commande ("shell") basique
<adn> s
<adn> a priori, on ne va pas utiliser beaucoup plus que les commandes :
<adn> ls (lister le contenu d'un dossier, comme "dir" dans MS-DOS)
<adn> cd (aller dans un dossier)
<adn> et quelques programmes spÃ©cifiques faits pour crÃ©er un package
<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
<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
<adn> parfois il faut installer un autre programme avant pour que Ã§a fonctionne (par exemple Java, .net, etc.)
<adn> une distribution offre une commande qui installe le programme qu'on veut en s'occupant du reste
<adn> par exemple, je veux installer xchat
<adn> sous Debian, on utilise la commande apt-get (APT = Advanced Packaging Tool) et on dit :
<adn> apt-get install xchat
<adn> il se dÃ©brouille pour trouver la derniÃ¨re version xchat disponible, la tÃ©lÃ©charger, l'installer, la configurer
<nizarus> sous ubuntu il faut la prÃ©cÃ©der avec sudo 
<adn> et comme par miracle, l'icÃ´ne apparaÃ®t
<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
<adn> #### DES QUESTIONS ?
<nizarus> [QUESTION]Lequel des deux est meilleur apt ou aptitude et pourquoi?
<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
<adn> selon les Ã©poques, l'un ou l'autre Ã©tait Ã  la mode, en fonction de plusieurs critÃ¨res
<adn>  - la facilitÃ© d'utilisation (aptitude proposait une forme d'interface graphique)
<adn> propose, je veux dire, pas proposait (aptitude existe toujours)
<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)
<adn>  - la rapiditÃ© d'exÃ©cution (apt-get Ã©tait plus rapide)
<adn>  - la robustesse des mises Ã  jour et la rÃ©solution des conflits entre packages installÃ©s
<adn> pour lenny, aptitude Ã©tait recommandÃ©
<adn> (Debian Lenny, je veux dire)
<adn> depuis Debian Squeeze (la version sortie en fÃ©vrier 2011), on recommence Ã  recommander apt-get
<adn> en fait, c'est un dÃ©bat vieux comme le monde, un peu comme ViM vs Emacs
<adn> une question de mode
<adn> une question d'habitude
<adn> une question de communautÃ© qui dÃ©veloppe de nouvelles fonctionnalitÃ©s
<adn> mais les deux sont utilisables et utilisÃ©s
<adn> faites votre choix en fonction de ce que vous prÃ©fÃ©rez
<adn> une autre question ?
<nizarus> no
<adn> ok
<adn> #### DIAPO nÂ° 3 ####
<adn> je vais aller vite sur celle-lÃ  :-)
<adn> en gros, quand j'Ã©tais petit (16 ou 17 ans), l'Ã©tÃ©, y avait pas le climatiseur Ã  la maison Ã  La Mornaguia
<adn> je m'ennuyais en juillet et aoÃ»t, et j'ai voulu tester d'installer Linux
<adn> puis j'ai eu peur de perdre des donnÃ©es, donc j'ai laissÃ© tomber
<adn> (c'Ã©tait en 1999, je pense)
<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
<adn> dans cette association, tous les serveurs Ã©taient sous Linux et plus prÃ©cisÃ©ment sous Debian
<adn> Ã§a a Ã©tÃ© pour moi l'occasion de dÃ©couvrir Linux, de l'installer, de l'utiliser
<adn> pendant l'Ã©tÃ© 2004, en stage, je m'ennuyais un peu (normal, en stage...)
<adn> alors j'ai commencÃ© Ã  me renseigner sur la maniÃ¨re dont fonctionne un package Debian
<adn> je me suis arrÃªtÃ© trÃ¨s vite - Ã§a m'avait l'air compliquÃ© !
<adn> et je me suis mis Ã  la traduction ;-)
 * Neo31 rappel au participants qu'ils peuvent rejoindre le channel #ubuntu-tn-classroom-chat pour poser leurs questions
<adn> de fil en aiguille, pour traduire, on a besoin de comprendre de plus en plus de trucs techniquÃ©s
<adn> donc quelques mois plus tard, j'ai packagÃ© p7zip pour Debian
<adn> pour le reste, c'est sur la diapo, on en discutera aprÃ¨s, si certains veulent :-)
<adn> Ã  part "c'est bon, il a fini de raconter sa vie ?", est-ce qu'il y a des questions ? ;-)
<nizarus> no
<adn> #### DIAPO nÂ° 4 ####
<adn> supposons qu'on ait trouvÃ© un programme sympa
<adn> avant de le packager, y a plusieurs choses Ã  se demander
<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
<adn> => trouver ce logiciel libre et l'utiliser Ã  la place !
<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
<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 !
<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
<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
<adn> Questions ?
<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?!
<adn> de deux choses l'une :
<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
<adn> 2) s'il n'est pas Ã  jour, contactez le maintainer officiel et proposez-lui de l'aider
<adn> par exemple avec des patches de mise Ã  jour de son package
<adn> ou avec un package mis Ã  jour par vos soins
<adn> est-ce que la rÃ©ponse est satisfaisante ?
<adn> si oui, question ou diapo suivante
<nizarus> adn, go
<adn> ok, je me rends compte que j'ai commentÃ© la diapo 5 et non la 4
<adn> pour la 4, c'est clair, tout est dedans
<adn> on rentre donc dans le vif du sujet
<adn> #### DIAPO nÂ° 6 ####
<adn> alors, un package, en fait, Ã§a peut faire rÃ©fÃ©rence Ã  plusieurs choses
<adn> soit le package binaire (binary package), c'est le fichier .deb
<adn> soit le package source (source package), dont on parlera Ã  la diapo suivante
<adn> le fichier .deb contient plusieurs choses
<adn> 1) les fichiers Ã  installer
<adn> pour faire fonctionner le programme (fichiers de configuration, images, sons, programmes)
<adn> 2) des informations complÃ©mentaires mais nÃ©anmoins nÃ©cessaires
<adn> par exemple la liste des dÃ©pendances, c'est-Ã -dire les packages qu'il faut obligatoirement installer pour que Ã§a fonctionne
<adn> par exemple, quand j'installe xchat ou pidgin, je suis obligÃ© d'avoir une interface graphique
<adn> donc je dois avoir au prÃ©alable installÃ© X.org
<adn> voire Gnome, KDE, XFCE ou autre...
<adn> je vous propose de tÃ©lÃ©charger le fichier suivant :
<adn> http://adn.diwi.org/debian/classroom/package/result/democratie_0.1-1_amd64.deb
<adn> enregistrez-le quelque part
<adn> lancez le terminal
<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?
<adn> et lancez la commande "ar x democratie_0.1-1_amd64.deb"
<adn> (je rÃ©pondrai Ã  la question juste aprÃ¨s la manip)
<adn> si vous faites "ls" ensuite, vous devez voir quelque chose comme ce qui suit :
<adn> 0:45 adn@wahe /tmp/DebPackaging% wget http://adn.diwi.org/debian/classroom/package/result/democratie_0.1-1_amd64.deb
<adn> --2011-08-20 00:45:17--  http://adn.diwi.org/debian/classroom/package/result/democratie_0.1-1_amd64.deb
<adn> 2011-08-20 00:45:17 (369 MB/s) - Â«democratie_0.1-1_amd64.debÂ» sauvegardÃ© [4808/4808]
<adn> 0:45 adn@wahe /tmp/DebPackaging% ar x democratie_0.1-1_amd64.deb 
<adn> 0:45 adn@wahe /tmp/DebPackaging% ls
<adn> control.tar.gz  data.tar.gz  debian-binary  democratie_0.1-1_amd64.deb
<adn> tapez ensuite la commande "tar tvzf data.tar.gz"
<adn> vous verrez comment c'est organisÃ©
<adn> l'archive data.tar.gz contient en effet les fichiers Ã  installer, selon l'arborescence de destination prÃ©vue
<adn> drwxr-xr-x root/root         0 2011-08-12 21:54 ./
<adn> drwxr-xr-x root/root         0 2011-08-12 21:54 ./usr/
<adn> -rwxr-xr-x root/root      4904 2011-08-12 21:54 ./usr/bin/democratie
<adn> -rw-r--r-- root/root       161 2011-08-12 21:49 ./usr/share/doc/democratie/changelog.Debian.gz
<adn> etc.
<adn> vous pouvez lancer la commande "tar tvzf control.tar.gz"
<adn> vous verrez qu'il contient des informations sur le package
<adn> 0:48 adn@wahe /tmp/DebPackaging% tar tvzf control.tar.gz
<adn> drwxr-xr-x root/root         0 2011-08-12 21:54 ./
<adn> -rw-r--r-- root/root       357 2011-08-12 21:54 ./control
<adn> -rw-r--r-- root/root       270 2011-08-12 21:54 ./md5sums
<adn> par exemple, le fichier control contient les Ã©lÃ©ments suivants
<adn> Package: democratie
<adn> Version: 0.1-1
<adn> Architecture: amd64
<adn> Maintainer: Mohammed Adnene Trojette <adn+deb@diwi.org>
<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?
<adn> en fait, y a deux catÃ©gories de packages, sous Ubuntu
<adn> 1) les packages maintenus sÃ©parÃ©ment par les dÃ©veloppeurs Ubuntu et par les dÃ©v Debian
<adn> 2) les packages simplement synchronisÃ©s par Ubuntu avec Debian instable
<adn> pour la catÃ©gorie 2), il faut attendre que la synchronisation soit lancÃ©e
<adn> ce qui est systÃ©matiquement peu avant les releases Ubuntu
<adn> pour la catÃ©gorie 1), il faut attendre que le dÃ©v Ubuntu se bouge les fesses ;-)
<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)
<adn> si la rÃ©ponse est suffisamment claire, question ou diapo suivante ?
<nizarus> [QUESTION] Un patch de mise Ã  jour, c'est un script Shell qui intervient sur le fichier ou bien autre chose ?
<adn> le patch de mise Ã  jour, c'est un fichier texte qu'on passe Ã  la commande "patch"
<adn> qui se trouve dans le package du mÃªme nom
<adn> c'est le rÃ©sultat de l'exÃ©cution de la commande "diff" entre deux fichiers ou deux rÃ©pertoires
<adn> par exemple, je vais crÃ©er deux fichiers : fichier-A et fichier-B
<adn> fichier-A contient "A" et fichier-B contient "B"
<adn> 0:54 adn@wahe /tmp/DebPackaging% echo A > fichier-A && echo B > fichier-B
<adn> 0:55 adn@wahe /tmp/DebPackaging% diff -u fichier-A fichier-B
<adn> --- fichier-A   2011-08-20 00:55:23.000000000 +0200
<adn> +++ fichier-B   2011-08-20 00:55:23.000000000 +0200
<adn> @@ -1 +1 @@
<adn> -A
<adn> +B
<adn> le patch, c'est le fichier texte qui contient les 5 derniÃ¨res lignes
<adn> qui dit "entre le fichier-A et le fichier-B, Ã  la ligne 1, on enlÃ¨ve A et on rajoute B"
<adn> on applique ce patch avec la commande /usr/bin/patch
<adn> 0:57 adn@wahe /tmp/DebPackaging% diff -u fichier-A fichier-B > fichier-patch
<adn> zsh: exit 1     diff -u fichier-A fichier-B > fichier-patch
<adn> 0:57 adn@wahe /tmp/DebPackaging% cat fichier-patch|patch
<adn> patching file fichier-A
<adn> B
<adn> 0:57 adn@wahe /tmp/DebPackaging% cat fichier-A 
<adn> la suite ?
<nizarus> adn, quand tu termine la rÃ©ponse tape "next"
<adn> ok :-)
<nizarus> [QUESTION] On peut essayer de crÃ©er une version x86 du package
<adn> next (comme dans l'Ã©mission du mÃªme nom)
<adn> en fait, vous verrez Ã  la fin de la prÃ©sentation
<adn> ceux qui ont une machine x86 auront crÃ©Ã© une version x86
<adn> et ceux qui ont une machine amd64 auront crÃ©Ã© une version amd64
<adn> cela dÃ©pend de votre architecture
<adn> next
<nizarus> [QUESTION] pourquoi le paquet est en arch amd64 (ou any) au lieu de all?
<adn> parce qu'il contient des fichiers qui ne peuvent Ãªtre exÃ©cutÃ©s que sous une machine amd64
<adn> dans le fichier control du paquet binaire, comme c'est un package amd64, c'est indiquÃ© Architecture: amd64
<adn> mais dans le package source, on dira Architecture: any
<adn> et c'est les serveurs de compilation automatique (autobuilders) qui, selon leur architecture, crÃ©eront les packages correspondants
<adn> avec le champ Architecture qui va bien
<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
<adn> et non any
<adn> next
<nizarus> [QUESTION] n'est il pas plus pratique de crÃ©er des packages ALL pour Ã©viter la dÃ©pendace de l'architecture?
<adn> en fait, il suffit qu'un seul fichier du package dÃ©pende de l'architecture pour justifier un package "Architecture: any"
<adn> imaginons que mon programme en C, compilÃ© avec un compilateur pour un processeur amd64, se retrouve dans un package "Architecture: all"
<adn> alors un utilisateur sous x86 va le tÃ©lÃ©charger
<adn> et, au moment de lancer la commande, il va y avoir une erreur
<adn> parce que son processeur x86 ne peut exÃ©cuter des programmes compilÃ©s pour amd64
<adn> next
<nizarus> no
<adn> ok, diapo suivante alors ?
<adn> #### DIAPO nÂ° 7 ####
<nizarus> go ahead adn (and faster)
<adn> le package source est constituÃ© de trois fichiers
<adn> 1) le code source du programme original
<adn> (fichier .orig.tar.bz2 ou orig.tar.gz...)
<adn> 2) l'ensemble des patches Ã  appliquer Ã  ce code source pour en faire un package Debian
<adn> (fichier .debian.tar.gz ou .diff.gz dans les anciennes versions)
<adn> 3) le fichier de description du package
<adn> (fichier .dsc)
<adn> questions ?
<nizarus> [QUESTION] Que veut dire le terme description signÃ©e?
<adn> pour authentifier un package, on demande aux dÃ©veloppeurs de signer le fichier description avec leur clÃ© GPG
<adn> ce fichier .dsc contient en particulier les identifiants des fichiers qui constituent le package source
<adn> Ã  savoir la somme md5 ou SHA du fichier .orig.tar.bz2 et du fichier .debian.tar.gz
<adn> si on regarde dans le fichier dispo sur http://adn.diwi.org/debian/classroom/package/result/democratie_0.1-1.dsc
<adn> 0:57 adn@wahe /tmp/DebPackaging% wget http://adn.diwi.org/debian/classroom/package/result/democratie_0.1-1.dsc      
<adn> --2011-08-20 01:08:12--  http://adn.diwi.org/debian/classroom/package/result/democratie_0.1-1.dsc
<adn> 2011-08-20 01:08:12 (202 MB/s) - Â«democratie_0.1-1.dscÂ» sauvegardÃ© [810/810]
<adn> 1:08 adn@wahe /tmp/DebPackaging% cat *dsc
<adn> Source: democratie
<adn> Binary: democratie
<adn> Architecture: any
<adn> Version: 0.1-1
<adn> Maintainer: Mohammed Adnene Trojette <adn+deb@diwi.org>
<adn> Checksums-Sha256:  d8eb834371c367f2bcdb5282359f0d8b2fb1417011b79c4ad9229d9e8e642abf 58239 democratie_0.1.orig.tar.bz2 b166468099ceec9891ea08c6c72b0265676003c33596107842be0b2195f4799d 2522 democratie_0.1-1.debian.tar.gz
<adn> next
<nizarus> no
<adn> #### DIAPO nÂ° 8 ####
<adn> je vous propose d'installer les packages indiquÃ©s
<adn> sudo apt-get install dpkg-dev dh-make devscripts build-essentials autotools-dev
<adn> questions ?
<nizarus> next
<adn> #### DIAPO nÂ° 9 ####
<adn> crÃ©ez un dossier de travail (par exemple dans votre home)
<adn> allez dedans
<Neo31> correction :
<Neo31> sudo apt-get install dpkg-dev dh-make devscripts build-essential autotools-dev
<adn> oui, merci !
<Neo31> build-essential << sans S a la fin
<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
<adn> que l'on souhaite packager
<Neo31> un ecran avec le titre "Postfix configuration va appraitre"
<Neo31> on garde le choix par defaut
<Neo31> Internet site 
<Neo31> pour cela on appui sur la touche "fleche droit" pour selectionner le bouton OK
<Neo31> puis on appui sur la touche entree
<adn> (merci)
<Neo31> encore on appuis sur entree sur l'ecran suivant
<Neo31> installation en cours
<adn> (dis-moi quand je peux continuer)
<nizarus> go ahead adn 
<adn> on dÃ©compresse l'archive contenant le code source 
<adn> 1:12 adn@wahe /tmp/DebPackaging% tar xvjf democratie-0.1.tar.bz2 
<adn> democratie-0.1/
<adn> democratie-0.1/Makefile.am
<adn> democratie-0.1/install-sh
<adn> democratie-0.1/configure
<adn> (etc.)
<Neo31> installation done
<adn> on va dans le dossier democratie-0.1/
<adn> et on lance la commande dh_make pour crÃ©er le dossier debian/
<nizarus> Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch?
<nizarus>  [s/i/m/l/k/n] 
<adn> 1:15 adn@wahe /tmp/DebPackaging/democratie-0.1% dh_make -f ../democratie-0.1.tar.bz2
<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
<adn> on choisit s, pour "single binary"
<adn> Maintainer name : Mohammed AdnÃ¨ne Trojette
<adn> Email-Address   : adn+deb@diwi.org 
<adn> Date                            : Sat, 20 Aug 2011 01:16:02 +0200
<adn> Package Name     : democratie
<adn> Version                 : 0.1
<adn> License                 : blank
<adn> Using dpatch     : no
<adn> Type of Package : Single
<adn> Hit <enter> to confirm: 
<adn> et on valide avec la touche entrÃ©e
<adn> si on fait "ls"
<adn> on voit qu'un nouveau dossier debian/ est apparu
<adn> 1:17 adn@wahe /tmp/DebPackaging/democratie-0.1% ls
<adn> aclocal.m4  config.h.in  configure*  configure.ac  debian/  depcomp*  install-sh*  Makefile.am  Makefile.in  missing*  src/
<adn> questions ?
<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?
<adn> en fait, la question est posÃ©e Ã  l'envers
<adn> pour constuire correctement le paquet, on a besoin de build-essential
<adn> qui est un package qui dÃ©pend en particulier du package "make", dont on a besoin
<adn> 1:17 adn@wahe /tmp/DebPackaging/democratie-0.1% apt-cache show build-essential
<adn> Depends: libc6-dev | libc-dev, gcc (>= 4:4.4.3), g++ (>= 4:4.4.3), make, dpkg-dev (>= 1.13.5)
<adn> il dÃ©pend Ã©galement de gcc
<adn> dont on a Ã©galement besoin
<adn> dpkg-dev contient des outils Ã©galement nÃ©cessaires
<adn> dh-make, on vient de l'utiliser ;-)
<adn> devscripts contient plein de programmes utiles
<adn> (j'ai mis entre parenthÃ¨ses, sur la diapo 8, les programmes qui rendent nÃ©cessaire l'installation de ces dÃ©pendances)
<adn> est-ce que la rÃ©ponse est claire ?
<nizarus> [QUESTION] Peux-tu expliciter la diffÃ©rence entre le "paquet .deb" produit par la commande "make checkinstall" et .deb classique ?
<adn> la commande make checkinstall dÃ©pend probablement du code source du programme
<adn> il faudrait lire le fichier Makefile pour savoir ce qu'elle fait
<adn> techniquement, ce sont deux packages Debian dont il ne devrait pas y avoir de diffÃ©rence
<adn> en pratique, rien ne garantit que l'auteur du Makefile ait respectÃ© les standards des packages Debian
<adn> next
<nizarus> [QUESTION] La diffÃ©rence entre les [s/i/m/l/k/n] nous Ã©clairer la chose ?
<adn> single package : on crÃ©e un unique package .deb
<adn> c'est le "s"
<adn> m = multiple package : parfois, on veut plusieurs packages
<adn> un avec la documentation
<adn> un avec la musique
<adn> un avec les programmes
<adn> un spÃ©cifique Ã  Gnome
<adn> un autre spÃ©cifique Ã  KDE
<adn> Ã  partir du mÃªme code source
<adn> l = library : par exemple le package de libxml
<adn> k = kernel module
<adn> en fait, dh_make propose des modÃ¨les de dossiers debian/ adaptÃ©s au type de package souhaitÃ©
<adn> pour cette formation, on fait un package tout simple
<adn> next
<nizarus> next
<adn> #### DIAPO nÂ° 10 ####
<adn> pour la formation, on va supprimer plusieurs fichiers inutiles
<adn> je vous recommande, si vous retravaillez cette formation plus tard, de lire le contenu de ces fichiers pour comprendre ce Ã  quoi ils servent
<adn> on saute cette lecture, pour gagner du temps
<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}
<adn> pour gagner du temps Ã©galement, j'ai prÃ©parÃ© une page de manuel pour le programme
<adn> disponible sur http://adn.diwi.org/debian/classroom/package/upstream/democratie.1
<adn> il faut la mettre dans le dossier debian/
<adn> par exemple avec la commande "wget -O debian/democratie.1
<adn> http://adn.diwi.org/debian/classroom/package/upstream/democratie.1"
<adn> sur la mÃªme ligne, pardon
<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
<adn> on a Ã©galement besoin d'indiquer pour plus tard la liste des pages de manuel disponibles dans le fichier debian/democratie.manpages
<adn> je l'ai prÃ©parÃ© en avance : rÃ©cupÃ©rez-le sur http://adn.diwi.org/debian/classroom/package/upstream/democratie.manpages
<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
<adn> questions ? problÃ¨mes ?
<nizarus> adn, le fichier debian/democratie.manpages n'existe pas il faut le crÃ©er ?
<adn> tu peux le tÃ©lÃ©charger directement
<adn> ou sinon tu le crÃ©es, comme tu veux
<adn> 1:30 adn@wahe /tmp/DebPackaging/democratie-0.1% cat debian/democratie.manpages 
<adn> debian/democratie.1
<nizarus> il y a des personnes qui n'ont pas pu avoir le dossier debian quelles sont les sources d'erreurs possibles ?
<adn> peut-Ãªtre qu'ils n'ont pas mis "s" quand dh_make a demandÃ©
<adn> Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch or cdbs?
<adn> [s/i/m/l/k/n/b] s
<nizarus> comment on peut rattraper Ã§a ?
<adn> lancer Ã  nouveau la commande "dh_make -f ../democratie-0.1.tar.bz2"
<adn> mais avant, s'assurer qu'on est bien dans le dossier democratie-0.1/
<adn> pour vÃ©rifier, on lance la comme "pwd"
<adn> et Ã§a doit se terminer par "democratie-0.1/"
<nizarus> [QUESTION] Les man pages doivent avoir un format particulier ?
<adn> par "/democratie-0.1", je veux dire (pas "/" Ã  la fin)
<adn> par exemple, chez moi :
<adn> 1:33 adn@wahe /tmp/DebPackaging/democratie-0.1% pwd
<adn> /tmp/DebPackaging/democratie-0.1
<adn> oui, les man pages ont un format particulier
<adn> le format des fichiers .roff
<adn> next
<nizarus> next
<adn> (pour complÃ©ter la rÃ©ponse prÃ©cÃ©dente, ouvrez le fichier debian/democratie.1 et vous verrez le format)
<Neo31> adn on pe revenir a la commande rm ?
<Neo31> ca n'as pas marcher voila une commande alternative
<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 ..
<adn> Neo31: oui, ma commande est une commande bash et tu dois avoir dash d'installer
<adn> Neo31: que renvoie la commande "echo $SHELL" ?
<Neo31> bash
<adn> bon, Ã©trange alors :-)
<Neo31> ca n'as pas marcher chez sarhan aussi
<adn> alors utilisez la commande de Neo31 
<adn> Neo31: je vois le problÃ¨me, y a des espaces qui se sont rajoutÃ©es dans ma commande
<Neo31> ca a marcher avec Ubuntu 10.04
<Neo31> les version plus recentes peuvent utiliser la commande alternative que j'ai donner
<adn> bref, Ã  la fin, il ne reste plus grand chose dans le dossier debian/
<adn> 1:40 adn@wahe /tmp/DebPackaging/democratie-0.1% ls debian 
<adn> changelog  compat  control  copyright  democratie.1  democratie.manpages  rules*  source/
<adn> #### DIAPO nÂ° 11 ####
<adn> lÃ , c'est un peu descriptif
<Neo31> adn plusieurs membres on rater la commande, tu peut ralentir un peu pour qu'il ratrappes?
<adn> oui, bien sÃ»r !
<adn> dites-moi quand vous Ãªtes prÃªts
<nizarus> go adn 
<adn> ok
<adn> #### DIAPO nÂ° 11 ####
<adn> je ne vais pas dÃ©crire tous les fichiers du dossier debian/
<adn> je vais me concentrer sur deux : debian/control et debian/changelog
<adn> le reste, vous avez une description dans la prÃ©sentation ou alors c'est pas indispensable pour la formation
<adn> 1) le fichier debian/control
<adn> cf. http://paste.debian.net/126796/
<adn> on voit qu'il est constituÃ© de plus champs de la forme "Champ: valeur"
<adn> et qu'il y a deux blocs de texte
<adn> a) le premier bloc concerne le package source
<adn> Source: democratie <-- c'est le nom du package source
<adn> Maintainer: <-- il y a votre nom et votre adresse e-mail
<adn> Build-Depends: <-- c'est la liste des packages qu'il est nÃ©cessaire d'installer pour construire le package
<adn> b) le deuxiÃ¨me bloc concerne le package binaire
<adn> Package: <-- c'est le nom du package binaire
<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)
<adn> Depends: <-- c'est la liste des packages qu'il est nÃ©cessaire d'installer pour que votre package s'installe et fonctionne correctement
<adn> le reste, c'est de la description
<nizarus> [QUESTION] quels sont les fichier utiliser pour gÃ©nÃ©rer le fichier control
<adn> soit on l'Ã©crit soi-mÃªme, si on connaÃ®t la liste des champs Ã  mentionner
<adn> soit, comme dans notre cas, on part d'un modÃ¨le (celui de dh_make par exemple)
<adn> et dans tous les cas, on complÃ¨te soi-mÃªme
<adn> pour gagner du temps ce soir, on va laisser les fichiers tels quels
<adn> next
<nizarus> next
<adn> #### DIAPO nÂ° 12 ####
<adn> 2) le fichier debian/changelog
<adn> voir http://paste.debian.net/126797/
<adn> on met les changements apportÃ©s par le package
<adn> dans notre cas, "Initial release" et le bug que Ã§a ferme, identifiÃ© par son numÃ©ro
<adn> qiestions ?
<nizarus> no
<adn> ok, pour gagner du temps, on ne touche pas aux diffÃ©rents fichiers
<adn> tu veux poser la question ?
<nizarus> [QUESTION] Concernant l'architecture, Ã§a change quoi le fait de suivre la voie du CrossCompiling ?
<adn> la question est trÃ¨s large
<adn> on pourra en reparler dans le classroom pour utilisateurs avancÃ©s
<adn> parce qu'il faut installer les programmes nÃ©cessaires Ã  la compilation pour d'autres architectures
<adn> next ?
<nizarus> no
<adn> #### DIAPO nÂ° 13 ####
<adn> le moment tant attendu
<adn> on lance la commande "dpkg-buildpackage -uc -us"
<adn> et on laisse se faire la construction du package
<adn> Ã§a se termine avec l'affichage suivant :
<adn>    dh_builddeb
<adn> dpkg-debÂ : construction du paquet Â«Â democratieÂ Â» dans Â«Â ../democratie_0.1-1_amd64.debÂ Â».
<adn>  dpkg-genchanges  >../democratie_0.1-1_amd64.changes
<adn> dpkg-genchanges: inclusion du code source original dans l'envoi (Â«Â uploadÂ Â»)
<adn>  dpkg-source --after-build democratie-0.1
<adn> dpkg-buildpackage: envoi complet (inclusion du code source d'origine)
<adn> et le dossier parent contient ce qui suit :
<adn> 1:57 adn@wahe /tmp/DebPackaging/democratie-0.1% ls ..
<adn> democratie-0.1/                 democratie_0.1-1_amd64.deb      democratie_0.1-1.dsc         democratie-0.1.tar.bz2
<adn> democratie_0.1-1_amd64.changes  democratie_0.1-1.debian.tar.gz  democratie_0.1.orig.tar.bz2
<adn> questions ? dÃ©pannage ?
<adn> pour les dÃ©pendances manquantes, c'est que vous n'avez pas installÃ© autotools-dev et dpkg-dev
<adn> comme indiquÃ© prÃ©cÃ©demment
<adn> sudo apt-get install autotools-dev dpkg-dev
#ubuntu-tn-classroom 2011-08-20
<adn> si c'est bon, on peut vÃ©rifier que le package contient ce qu'il faut avec la commande suivante :
<adn> dpkg --contents ../*deb
<adn> 1:57 adn@wahe /tmp/DebPackaging/democratie-0.1% dpkg --contents ../*deb
<adn> drwxr-xr-x root/root         0 2011-08-20 01:57 ./
<adn> drwxr-xr-x root/root         0 2011-08-20 01:57 ./usr/
<adn> (...)
<adn> -rw-r--r-- root/root       765 2011-08-20 01:57 ./usr/share/man/man1/democratie.1.gz
<adn> drwxr-xr-x root/root         0 2011-08-20 01:57 ./usr/bin/
<adn> -rwxr-xr-x root/root      4904 2011-08-20 01:57 ./usr/bin/democratie
<nizarus> dpkg-deb: error: --contents prend exactement un paramÃ¨tre
<nizarus> dpkg --contents ../democratie_0.1-1_amd64.deb
<adn> ah, c'est parce que tu es sous x86 et que tu as gardÃ© mon package amd64 ;-)
<adn> vÃ©rifie le contenu de ton package Ã  toi
<adn> dpkg --contents ../democratie_0.1-1_i386.deb
<adn> `- nizarus 
<nizarus> non je suis en amd64 adn 
<adn> ah, Ã©trange
<adn> ls ../*deb
<adn> pour ceux qui ont d'autres erreurs, donnez les deux ou trois lignes avant le message d'erreur
<adn> qu'on comprenne d'oÃ¹ vient le problÃ¨me
<nizarus> [erreur] dpkg-buildpackage: erreur: debian/rules build a produit une erreur de sortie de type 2
<adn> oui, les lignes avant
<nizarus> ode --disable-dependency-tracking returned exit code 1 make: *** [build] Erreur 9 dpkg-buildpackage: erreur: debian/rules build a produit une erreur de sortie de type 2
<adn> on saute l'Ã©tape "lintian" (fin de la diapo nÂ° 13) qu'on verra plus en dÃ©tail lors de la formation avanÃ©e
<nizarus> [Question] Ã  l'installation du paquet la logithÃ©que me dit que mon paquet ne respecte pas les standards de qualitÃ©, quels sont ces standards?
<adn> lintian permet de vÃ©rifier que le package respecte les standards Debian Ã©noncÃ©s dans la charte Debian
<adn> on en reparlera soit plus tard, soit pendant la formation avancÃ©e
<adn> next
<nizarus> next
<adn> #### DIAPO nÂ° 14 ####
<adn> installez le package
<adn> avec la commande
<adn> si vous Ãªtes sur x86 : sudo dpkg -i ../*86*deb
<adn> si vous Ãªtes sur amd64 : sudo dpkg -i ../*64*deb
<adn> aprÃ¨s l'installation, relancez un nouveau terminal (ou lancez la commande "$SHELL")
<adn> et lancez la commande "democratie -h"
<adn> RÃSULTAT : vous avez fait un premier pas dans le packaging ET vers la dÃ©mocratie ;-)
<nizarus> [QUESTION] Comment rendre mon packet "indexÃ©" dans la logithÃ©que ?
<adn> en fait, il faut crÃ©er un "dÃ©pÃ´t" de packages
<adn> et indiquer Ã  votre logithÃ¨que l'endroit oÃ¹ se trouve ce dÃ©pÃ´t
<adn> je vous propose qu'on en reparle Ã©galement lors de la formation avancÃ©e
<adn> next
<nizarus> nothing 
<adn> bon, on s'approche de la fin !
<adn> #### DIAPO nÂ° 15 ####
<adn> vous trouverez un rÃ©sumÃ© des commandes qu'on a utilisÃ©es dans ce TP sur la page http://adn.diwi.org/debian/classroom/package/classroom.txt
<adn> Neo31 a fait une excellente synthÃ¨se sur http://paste.ubuntu.com/670473/
<adn> #### DIAPO nÂ° 16 ####
<adn> voici les rÃ©fÃ©rences incontournables pour savoir :
<adn> 1) comment remplir les fichiers du dossier debian/
<adn> 2) comment respecter les standards du packaging selon Debian
<adn> c'est aussi une mine d'infos pour rÃ©soudre les problÃ¨mes que vous rencontrez
<adn> pour la formation avancÃ©e, je vous demanderai d'avoir rÃ©ussi au moins Ã  suivre le mode d'emploi du guide du nouveau maintainer de package
<adn> #### CONCLUSION ####
<adn> j'espÃ¨re que la formation vous a paru utile
<adn> je vous recommande de refaire la formation seuls Ã  votre aise
<adn> en essayant de remplir par vous-mÃªmes les fichiers du dossier debian/
<adn> en particulier debian/control, debian/changelog, debian/copyright
<nizarus> merci adn pour ce classroom consistant 
<adn> si vous avez des questions, je suis en permanence connectÃ© Ã  ce serveur (nickname : adn)
<Neo31> Un grand merci a Mr Adnen qui nous a assurer ce classroom :)
<adn> mon mail est adn -at- debian (point) org
<adn> il me reste Ã  vous remercier d'avoir participÃ© aussi nombreux
<nizarus> adn, ajoute #ubuntu-tn Ã  tes favoris 
<adn> d'avoir posÃ© des questions trÃ¨s intÃ©ressantes
<adn> nizarus: surtout #cullt ;-)
<adn> mais pourquoi pas, oui
<adn> et il me reste Ã©videmment Ã  remercier la Team Ubuntu Tunisie qui a fait un super boulot
<adn> de communication, de prÃ©paration de la classroom
<adn> d'animation de la classroom
<adn> je vous dis Ã  bientÃ´t pour une autre classroom et je reste Ã  votre disposition tout de suite pour continuer Ã  Ã©changer
<nizarus> Merci Ã  tous fin du classroom, discussion ouverte sur #ubuntu-tn
<adn> je suis Ã©galement preneur de vos commentaires pour amÃ©liorer la formation
<adn> bonne soirÃ©e et inchallah aÃ¯dkom mabrouk !
<nizarus> test
<sarhan> test
* Neo31 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 le --/--/-- Ã  --h-- (GMT+1) ***|| merci de rejoindre #ubuntu-tn-classroom-chat
<Neo31> la presentation "Packaging classroom 11.08.1" faite par Monsieur Mohammed AdnÃ¨ne Trojette, dÃ©veloppeur Debian, est disponible sur https://wiki.ubuntu.com/TunisianTeam/Presentations
* 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://irclogs.ubuntu.com/  | |*** Prochain cours le --/--/-- Ã  --h-- (GMT+1) ***|| merci de rejoindre #ubuntu-tn-classroom-chat
