[gpocentek ] voilà c'est mieux :)
[Chris` ] Commencez?
[Lutin ] oui, on va démarrer :)
[Lutin ] Bonsoir a tous, merci de votre présence :)
[Lutin ] le sujet de ce soir est donc "intro au bases du packaging debian/ubuntu"
[Lutin ] pour commencer, nous allons avoir besoin de plusieurs paquets tout au long de ce cours, que vous allez devoir installer:
[Lutin ] sudo apt-get install debhelper lintian build-essential fakeroot devscripts ubuntu-dev-tools dh-make
[Lutin ] pendant que tout ça s'installe, on va donc attaquer avec la description de ce qu'est un paquet
[Lutin ] Toutes les applications, bibliothèques... disponibles dans Ubuntu ne sont pas développés par Ubuntu. Ils sont développés à gauche à droite
[Lutin ] par des individus, des entreprises, etc qui mettent périodiquement des archives contenant les sources à disposition du public (on parle de release).
[Lutin ] Un paquet permet d'effectuer l'installation beaucoup plus facilement qu'à partir des sources, de gérer les mises à jours, les différentes version
[Lutin ] des paquets... Il permet aussi à l'utilisateur d'installer et de mettre à jour très rapidement puisqu'il n'a pas besoin de compiler les sources.
[Lutin ] Pour cela, le packager (celui qui crée le paquet) ajoute une surcouche à l'archive des sources qui permet de définir le paquet, son nom, ses
[Lutin ] dépendances (les paquets dont il a besoin pour fonctionner), sa description, les copyrights...
[Lutin ] globalement, tout le monde est OK avec ça ? :)
[pol_ ] Bonsoir à tous
[_Enchained ] yes
[Alpheb ] oui
[Chris` ] Oui :)
[Sylvio[ ] oui
[Newb`s ] Lutin: ça install chez moi encore :D
[_Enchained ] normal
[WAtt|_ ] oui
[Ev4r_Oz ] chez moi c'est installer
[sherkin ] yaisse
[Newb`s ] fini
[swop ] moi aussi : connexion vraiment lente ...
[Lutin ] ok, on va donc continuer un peu plus en détail
[Lutin ] * Il existe deux types de paquets :
[Lutin ] - les paquets binaires sont les fichiers .deb installables sur votre pc. Ces paquets peuvent
[Lutin ] être installés par apt grâce aux lignes 'deb http://...' de votre sources.list
[Lutin ] - les paquets sources contiennent le code source du logiciel, et les scripts/données nécessaires
[Lutin ] à la construction des paquets binaires. Pour pouvoir récupérer des paquets source en utilisant
[Lutin ] apt, vous devez avoir des lignes de la forme 'deb-src http://x.y.z'
[Lutin ] - Plusieurs paquets binaires peuvent être générés à partir d'un paquet source (par exemple le paquet
[Lutin ] source 'xmoto' génère 2 paquets binaires, 'xmoto' et 'xmoto-data')
[Lutin ] absolument tous les paquets présentes dans ubuntu sont compilés à partir d'un "paquet source"
[Zic ] (les dépôts Ubuntu sont vraiment lents aujourd'hui, il ne faut pas vraiment s'inquiéter, ou changer de miroir)
[Lutin ] toujours ok ?
[Sylvio[ ] ok
[Newb`s ] Vivant
[_Enchained ] ok
[WAtt|_ ] vivi
[Ev4r_Oz ] Zic, chez moi y'a pas de soucis ;)
[swop ] yepp
[Chris` ] Faut-il installer ces paquets?
[Alpheb ] ok
[Chris` ] xmoto et xmoto-data ?
[swop ] c bonn, c'est dl ...
[Lutin ] non, c'est juste pour l'exemple Chris` , ils sont inutiles pour la suite
[gpocentek ] Chris`: non non
[Chris` ] OK merci :)
[Lutin ] ok, continuons
[Lutin ] nous allons donc maintenant détailler la création d'un paquet source
[Lutin ] Commençons par une petite précision technique. Les paquets binaires sont les paquets (.deb) qui contiennent les fichiers nécessaires à l'application
[Lutin ] pour pouvoir fonctionner sur votre ordinateur.
[Lutin ] C'est ce que nous allons nous efforcer de créer. Tous les paquets binaires disponibles dans les dépôts
[Lutin ] Ubuntu ont été construits à partir de paquets sources. Un paquet source est un ensemble de fichiers
[Lutin ] (le terme "fichier" est une analogie, il n'y a pas de fichier "paquet source" dans le même sens que "paquet binaire" (.deb), nous allons le voir ensuite
[Lutin ] Ce paquet source contient les sources originelles de l'application, ainsi
[Lutin ] que les indications des modifications nécessaires à la création du paquet debian.
[Lutin ] bien sur, c'est la partie 'modifications nécessaires" que nous allons détailler
[Lutin ] Pour illustrer cela, nous allons examiner le contenu d'un paquet source. Pour cela il faut le télécharger d'un des dépôts source configuré pour apt.
[Lutin ] Commençons par créer le dossier dans lequel nous allons travailler: mkdir ~/packaging && cd ~/packaging
[Lutin ] Et téléchargeons un paquet source : Note: il faut avoir la ligne "deb-src http://archive.ubuntu.com/ubuntu universe" dans /etc/apt/sources.list
[Lutin ] apt-get source xfce4-xkb-plugin
[Lutin ] ls
[gpocentek ] (on attend tout le monde peut être ?)
[Lutin ] oui :)
[Newb`s ] gpg: Signature faite le lun 09 jun 2008 22:12:01 CEST avec la clé DSA ID 51795910
[Newb`s ] gpg: Impossible de vérifier la signature: clé publique non trouvée
[Lutin ] si vous avez des questions ou des remarques, profitez-en :)
[Newb`s ] Sinon je dois y aller
[Newb`s ] je relirai le cours plus tard
[Newb`s ] ça a l'air sympa :)
[Newb`s ] à +
[Lutin ] ok, je répond à la question implicite quand même :)
[Lutin ] le message apparait car gpg essaye de vérifier la signature de la personne ayant uploadé le paquet
[Lutin ] pour que ça puisse se faire, il faut avoir la clé GPG de la personne ayant uploadé. Ce n'est pas particulièrement important, mais c'est l'origine du warning
[philpep ] il y a un packages qui regroupe les clefs publiques des mainteneurs ?
[Lutin ] pas que je sache, non
[Lutin ] c'est le cas dans debian par contre
[philpep ] okay ;-)
[Lutin ] (pour les absents de la dernière fois et la intéressés, vous pouvez récupérer la clé avec "gpg --recv-keys 51795910")
[_Enchained ] oui?
[Lutin ] c'est bon ?
[_Enchained ] wé
[WAtt|_ ] ouep
[swop ] yep
[Lutin ] ok, poursuivons
[_Enchained ] (je me remet dans le bain depuis le temps...)
[Lutin ] La commande « ls » nous donne comme contenu :
[Lutin ] * un répertoire xfce4-xkb-plugin-0.4.3
[Lutin ] * et les fichiers suivants :
[Lutin ] o xfce4-xkb-plugin_0.4.3.orig.tar.gz
[Lutin ] o xfce4-xkb-plugin_0.4.3-1ubuntu2.dsc
[Lutin ] o xfce4-xkb-plugin_0.4.3-1ubuntu2.diff.gz
[Lutin ] Vous obtiendrez exactement ces fichiers si vous êtes sous Ubuntu Intrepid, peut-être une autre version sous d'autres versions de Debian ou d'Ubuntu.
[Lutin ] Le fichier xfce4-xkb-plugin_0.4.3.orig.tar.gz est en fait l'archive contenant les fichiers sources tels que l'on peut les obtenir sur le site du projet
[Lutin ] (typiquement ceux que l'on installe avec « ./configure && make && make install » quand on utilise directement les sources)
[Lutin ] Le répertoire est d'ailleurs issu de la décompression, de cette
[Lutin ] archive. Seul le nom du fichier a été changé pour des raisons que nous préciserons plus tard.
[Lutin ] Le fichier xfce4-xkb-plugin_0.4.3-1.dsc contient la description du paquet source (et des deux autres fichiers, avec leur taille et leur somme MD5).
[Lutin ] Le fichier xfce4-xkb-plugin_0.4.3-1.diff.gz contient toutes les modifications nécessaires pour construire le paquet Debian.
[Lutin ] Constituer un paquet source nécessite d'ajouter aux sources existantes un répertoire debian/ avec quelques fichiers. C'est ce répertoire que contient le fichier « .diff.gz ».
[Lutin ] On maintient ces modifications dans un fichier séparé pour créer une distinction claire entre les fichiers « upstream » et les informations de
[Lutin ] packaging debian proprement dites.
[Lutin ] faites moi signe quand vous êtes OK / si vous avez des questions
[_Enchained ] ok
[le_biloute ] roger that.
[bergalath ] copy
[Alpheb ] OK
[philpep ] Il peut arriver que les sources se desarchivent elles mêmes nan ?
[Sylvio[ ] ok
[Lutin ] les source ne sont pas autoextractibles, non :)
[WAtt|_ ] QUESTION: Que veut dire "fichier upstream" ?
[Lutin ] dans le cas de apt-get source, c'est apt qui s'occupe de décompresser l'orig.tar.gz et d'appliquer le diff.gz par dessus, pour tont reconstituer
[Lutin ] WAtt|_: ce sont les fichiers tels que fournis par les auteurs du logiciel
[WAtt|_ ] ok, merci pour l'info :)
[Lutin ] (les auteurs étant appelés « upstream » car leur travail est en amont de celui de la distribution)
[Lutin ] d'autres questions, ou j'attaque la suite
[_Enchained ] moi ok
[Alpheb ] le répertoire qu'on a c'est juste les sources uptream ou le patch en plus?
[WAtt|_ ] ok pour moi
[Sylvio[ ] pareil, ok pour moi
[Lutin ] Alpheb: cf 10 lignes au dessus :)
[Lutin ] 18:26 <@Lutin> dans le cas de apt-get source, c'est apt qui s'occupe de décompresser l'orig.tar.gz et d'appliquer le diff.gz par dessus, pour tont reconstituer
[Alpheb ] Lutin : "Le répertoire est d'ailleurs issu de la décompression, de cette archive"
[Lutin ] le répertoire est issu de la décompression, ce n'est pas le patch qui le crée
[Lutin ]
[Lutin ] (ok, le phrasé aurait pu être plus clair, mais continuons)
[Lutin ] Maintenant que l'on a une idée de ce que sont les paquets sources, nous allons créer notre premier paquet.
[Lutin ] Pour notre exemple nous allons construire le paquet de l'application "u-classroom", créée pour l'occasion.
[Lutin ] Après avoir supprimé le contenu de notre dossier « ~/packaging » pour repartir d'une situation propre, on télécharge les sources dudit logiciel.
[Lutin ] Donc dans ~/packaging : rm -rf * # on nettoie :-) mkdir classroom && cd classroom wget http://u-classroom.net/files/2009-01-29/packaging/classroom-fr-0.1.tar.gz
[Lutin ] oups, léger souci de saut de ligne
[Lutin ] rm -rf ~/packaging/*
[Lutin ] cd ~/packaging
[Lutin ] mkdir classroom && cd classroom
[Lutin ] wget http://u-classroom.net/files/2009-01-29/packaging/classroom-fr-0.1.tar.gz
[Lutin ] Une fois les sources récupérées, la *première* chose à faire est de renommer le tarball, afin de pouvoir créer un paquet source correct par la suite.
[Lutin ] Attention le format de ce nom est important. Une erreur ici n'est pas particulièrement désastreuse, mais pourrait être gênante par la suite
[Lutin ] La syntaxe est paquet_version.orig.tar.gz (notez le « _ » à la place du « - » d'origine). Il faut donc exécuter dans le terminal :
[Lutin ] mv classroom-fr-0.1.tar.gz classroom-fr_0.1.orig.tar.gz
[Lutin ] Puis on décompresse cette archive et on entre dans le répertoire contenant les sources : tar zxvf classroom-fr_0.1.orig.tar.gz cd classroom-fr-0.1
[Lutin ] j'ai décidément un problème avec les fins de ligne, les commandes sont donc:
[Lutin ] tar zxvf classroom-fr_0.1.orig.tar.gz
[Lutin ] cd classroom-fr-0.1
[Lutin ] vous suivez toujours ?
[WAtt|_ ] toujours
[bergalath ] oui
[le_biloute ] impeccable
[Alpheb ] nickel
[Lutin ] ok
[Lutin ] Une règle d'or dans la création de paquets est de ne pas toucher au tarball d'origine. La seule chose autorisée est de le renommer
[Lutin ] (c'est même nécessaire). Ne pas modifier le tarball permet de bien distinguer le travail de l'auteur de celui du packageur.
[Lutin ] Maintenant que les sources
[Lutin ] sont là, ainsi que le « .orig.tar.gz », on va pouvoir créer le paquet. Pour cela il faut créer le dossier « debian/ » dans le dossier des sources.
[Lutin ] Pour créer un squelette de dossier « debian/ », le plus pratique est d'utiliser dh_make, disponible dans le paquet dh-make.
[Lutin ] cet utilitaire crée des temmplates pour la plupart des fichiers nécessaires à la création d'un paquet source
[Lutin ] La commande : dh_make -e votreaddresse@email.tld (en remplaçant par votre vraie adresse mail)
[Lutin ] doit normalement vous retourner ceci :
[Lutin ] Type of package: single binary, multiple binary, library, kernel module or cdbs?
[Lutin ] [s/m/l/k/b]
[Lutin ] Ceci vous permet de préciser quel type de package vous construisez. Ici, choisissez le type de paquet "single" : répondez donc *s* à la question.
[Lutin ] Pour les curieux, quelques commentaires sur les autres choix :
[Lutin ] * multiple binary permet de créer plusieurs paquets binaires à partir d'un unique paquet source
[Lutin ] * library permet de créer un paquet pour une bibliothèque (lib quelque chose)
[Lutin ] * kernel module : un module pour le noyau (qui nécessite un système particulier)
[Lutin ] * cdbs est un outil permettant d'automatiser certains aspects (pour le paquets simples, il permet un gain de temps par rapport à l'utilisation
[Lutin ] de debhelper, mais est peu intéressant pour comprendre ce qui se passe réellement)
[Lutin ] dh_make affiche ensuite la ligne suivante: Hit to confirm :
[Lutin ] On confirme avec la touche « Entrée ».
[Lutin ] On doit maintenant avoir un dossier « debian/ » dans le dossier contenant les sources de notre application.
[Kywhod ] goood
[Lutin ] ça roule toujours ?
[Alpheb ] ok
[bergalath ] chrome
[le_biloute ] roger
[Lutin ] toujours pas de questions ?
[Sylvio[ ] ok
[Chris` ] bravo :)
[_Enchained ] le -c pour la licence non ?
[WAtt|_ ] QUESTION: il est possible de changer les information avant le confirm ?
[Kywhod ] QUESTION: C'est quoi dpatch?
[Lutin ] WAtt|_: non, c'est impossible
[WAtt|_ ] Lutin, ok
[Lutin ] tu peux annuler si elles ne te conviennent pas, et recommencer en passant les bonnes options ou en exportant les bonnes variables d'environnement
[Lutin ] (par exemple il utilise $DEBFULLNAME ou $LOGNAME pour déterminer le contenu du champ 'nom'
[WAtt|_ ] Lutin, ok :)
[Lutin ] Kywhod: dpatch est ce qu'on appelle un 'patchsystem', c'est à dire un système permettant de simplifier la gestion des patches
[Lutin ] puisque durant la phase de packaging, on peut être amené à modifier le logiciel (par exemple si il cherche un fichier de configuration au mauvais endroit)
[Lutin ] mais comme il est de mauvais gout de modifier les source directement, on utilise ce genre de choses
[Kywhod ] ouais ok je vois
[Lutin ] bien :). je continue, alors
[Kywhod ] ty
[Lutin ] On entre dans ce dossier « debian/ » : cd debian && ls
[Lutin ] Là, on se rend compte qu'il y a grand nombre de fichiers à éditer!
[Lutin ] Certains éléments de ce squelette ne nous sont pas utiles ici. On va supprimer le fichier « README.Debian » et les fichiers « *.ex » et « *.EX »
[Lutin ] (qui sont des fichiers exemples correspondant à des cas particuliers, comme les initscripts, les fichiers relatifs à cron, ou les fichiers .menu,
[Lutin ] non nécessaires dans le cas d'un paquet simple comme dans cet exemple) avec la commande suivante :
[Lutin ] rm -f *ex *EX README* && ls
[Lutin ] Il ne nous reste plus que 7 fichiers :
[Lutin ] * changelog * compat * control * copyright * docs * rules * dirs [Lutin ] Les fichiers « docs » et « dirs » ne sont pas indispensables mais les 5 autres sont absolument essentiels et il va falloir les éditer avec votre
[Lutin ] éditeur de texte préféré.
[Lutin ]
[Lutin ] ton d'abord, nous allons nous intéresser au fichier « changelog »
[Lutin ] tout d'abord*
[Lutin ] Il contient le détail de toute l'évolution du paquet. Pour chaque entrée on a :
[Lutin ] nom_du_paquet_source (version_du_paquet) distro; urgency=low
[Lutin ]
[Lutin ] * descriptif des changements
[Lutin ]
[Lutin ] -- prénom nom jour, date heure timezone
[Lutin ] Attention à la syntaxe, les espaces et ponctuations ne sont pas anodins. La compilation du paquet source étant très automatisée, les scripts doivent
[Lutin ] avoir des points de repère solides, et le format des fichiers est donc défini de façon stricte
[Lutin ] Nous allons nous arrêter un instant sur les versions des paquets
[Lutin ] Quelques mots sur les versions de paquets… Une même version d'un logiciel peut être empaquetée plusieurs fois. De même, Ubuntu étant basée sur Debian,
[Lutin ] il peut exister plusieurs modifications faites dans Ubuntu à partir du même paquet venant de chez Debian. Les versions sont donc de la forme
[Lutin ] -ubuntu. Ce qui donne pour nous :
[Lutin ] - si vous packagez pour Debian => 0.1-1
[Lutin ] - si vous packagez pour Ubuntu => 0.1-0ubuntu1 (puisque le paquet n'est pas dans Debian)
[Lutin ] Debian est « upstream » pour Ubuntu, de même que les sources du logiciel sont « upstream » pour Debian et Ubuntu.
[Lutin ] c'est toujours bon ?
[_Enchained ] yep
[le_biloute ] oui
[Kywhod ] pk on a 0.1-1 nous?
[Sylvio[ ] ok
[WAtt|_ ] Kywhod, upsteam 0.1 et debian 1
[Kywhod ] comment loutil sait quon package pour debian ou ubuntu?
[_Enchained ] on met : (0.1-0ubuntu1)
[Kywhod ] ah ok on le change nous meme
[Lutin ] Kywhod: il ne le sait pas, et par défaut dh_make génère un template pour debian unstable
[Lutin ] d'ou l'importance d'éditer ce template
[Kywhod ] oki
[Alpheb ] Question: quand on package pour ubuntu à partir de debian, on modifie le paquet debian ou on rajoute une couche de patch par rapport à au paquet debian? (toujours dans l'esprit de pas modifier l'upstream)
[Lutin ] par la suite, debchange (l'outil permettant de modifier le changelog) est capable de déterminer tout seul pour quelle distribution on travaille et agit en conséquence
[Kywhod ] ah yes
[Lutin ] Alpheb: non, on modifie directement le paquet debian
[Kywhod ] me souviens ^^
[Lutin ] Alpheb: ubuntu dispose d'outils qui génèrent automatiquement un diff entre le paquet debian et le paquet dans ubuntu, et mail ces modifications au mainteneur debian
[_Enchained ] si un paquet est dans debian et ubuntu, les 2 évoluent seuls ou on repart toujours du paquet debian pour les nouvelles versions ?
[Lutin ] ça dépend des paquets
[Lutin ] pour la vaste majorité, au début de chaque cycle de developpement, les paquets ayant des modifications ubuntu sont "mergés" depuis debian unstable
[Lutin ] (c'est un processus manuel, même si on dispose d'outils pour nous aider). il faut ré-intégrer les changements spécifiques à ubuntu sur la version récente du paquet debian
[Chris` ] La version augment 0ubuntu1, 0ubuntu2 etc ou 1ubuntu1, 2ubuntu1?
[Lutin ] cependant dans certains cas, les paquets sont maintenus totalement a part dans ubuntu, entre autres firefox, openoffice ou encore gajim ou le kernel
[_Enchained ] ok
[Lutin ] Chris`: ça dépend de ce que tu fais. les versions ubuntu augmentant quand tu upload dans ubuntu sur la base d'une même révision debian
[Lutin ] donc si tu as -1 dans debian et que tu fais des modifs, tu vas avoir -1ubuntu1, -1ubuntu2, etc. si -2 arrive dans debian, les modifications suivantes seront -2ubuntu1, -2ubuntu2, etc
[Lutin ] ça répond à ta question ?
[Chris` ] Oui oui merci
[Alpheb ] il y des retour ubuntu vers debian?
[Lutin ] oui, les modifs ubuntu sont systématiquement mailées aux mainteneurs debian
[swop ] on doit tout de suite faire les modifs ou c'est expliqué un peu plus tard dans la leçon ?
[sherkin ] que veut dire ITP ("bug number of your ITP") ?
[Lutin ] après, le niveau de retour ubuntu->debian dépend fortement de la volonté des personnes qui font les modifications, donc c'est dur de donner une réponse gloabale
[Lutin ] sherkin: Intent To Package
[Lutin ] utilisé pour annoncer
[Lutin ] qu'on a l'intention de packager un logiciel particulier dans Debian
[sherkin ] merci Lutin
[Lutin ] swop: ça viendra plus tard
[Lutin ] donc, vous avez tous mis a jour le changelog avec le bon nom de paquet source, date, distribution, description ?
[_Enchained ] oui
[_Enchained ] classroom-fr (0.1-0ubuntu1) intrepid; urgency=low
[Lutin ] sherkin: je n'ai pas précisé, mais c'est inutile dans ubuntu, il n'y a pas de système d'ITP. les intentions de packager sont ouvertes comme bugs dans Launchpad, et dans ce cas il faudrait utiliser (LP: #xxxxx) pour clore le bug
[sherkin ] ITP serait donc specifique de debian ?
[_Enchained ] oui
[sherkin ] ok
[Lutin ] un petit truc en passant, pour les gens qui préfèrent écrire les changelog à la main, le format de la date est le même que celui donné par la commande "date -R"
[_Enchained ] tu met : * Initial release
[illovae ] (et pour l'insérer automatiquemnt dans vim, il suffit de faire :r! date -R en mode commande)
[Lutin ] illovae: \o/
[Alpheb ] illovae: \o/ pareil
[Kywhod ] nice
[illovae ] ACTION se cache
[_Enchained ] ^^
[Lutin ] ou alors d'utiliser un truc du genre « iab xdate =strftime("%a, %d %b %Y %H:%M:%S %z") » dans ~/.vimrc, mais le cours « tips vim » sera pour un autre jour
[Lutin ] encore des questions, ou on peut enchainer ?
[WAtt|_ ] c'est ok
[Alpheb ] ok
[Lutin ] bien, la suite alors
[sherkin ] on change toujours 'unstable' pour sa version ubuntu ?
[Sylvio[ ] ok
[_Enchained ] on peut /me
[_Enchained ] ...
[Lutin ] sherkin: on le change par le nom de la distrib pour laquelle on package
[sherkin ] ok
[Lutin ] rien ne t'empeche de préparer un upload pour debian tout en utilisant ubuntu, auquel cas il faut laisser unstable
[Lutin ] maintenant que nous avons le changelog, attaquons nous au fichier copyright
[Lutin ] Le squelette de ce fichier est plutôt clair, pas vraiment besoin de s'étendre dessus. Mais le contenu n'est pas toujours évident à déterminer. Il y a
[Lutin ] un fichier « COPYING » dans le répertoire source, qui contient dans notre exemple la GPL en entier. Notez que ce n'est pas ce fichier qui sert de
[Lutin ] référence pour définir la licence, mais les fichiers source (qui contiennent le code, souvent présents dans un dossier « src/ »).
[Lutin ] En effet, COPYING est en quelque sorte global au projet, mais des licences/copyrights plus ou moins restrictifs que ceux trouvés dans COPYING peuvent d'appliquer sur certains fichiers
[Lutin ] Regardez le fichier « main.c » dans les sources :
[Lutin ] less ../src/main.c
[Lutin ] Les quatres premiers paragraphes sont ceux à recopier bêtement (et oui) dans « debian/copyright ». Ce sont ces paragraphes qui désignent le nom et
[Lutin ] l'année du Copyright, ainsi que la licence
[Lutin ] Il faut être très attentif et vérifier tous les fichiers source
[Lutin ] et pas seulement, les choses se compliquent parfois avec l'utilisation d'images ou de polices sous licences particulières
[Lutin ] d'autre part, des licences différentes peuvent être utilisées pour différents fichiers (rien n'empeche d'avoir un fichier sous licence BSD er l'autre GPL, par exemple)
[Lutin ] Dans notre cas, le fichier « debian/copyright » ressemblera à : http://u-classroom.net/files/2009-01-29/packaging/debian/copyright
[Lutin ] Il est important de faire attention à ce fichier car s'il est mal renseigné, le détenteur du copyright peut très bien aller jusqu'à vous intenter un procès
[Lutin ] Sans aller jusqu'à de tels extrèmes, celà peut vous poser quelques soucis
[Lutin ] en effet, les fichiers debian/copyright incomplets causeront systématiquement la non-acceptation de votre paquet dans l'archive
[Lutin ] particulièrement dans debian
[Lutin ] Mais soyez prudent(e)
[Lutin ] malgré tout, certains deviennent susceptibles dès que l'on écorne leur copyright.
[Lutin ] tout le monde suit toujours ?
[Chris` ] Quel format doit-on choisir? https://wiki.ubuntu.com/PackagingGuide/Complete#copyright
[WAtt|_ ] Lutin, as-tu un exemple de fichier copyright où le soft utilise différentes licences ?
[Lutin ] pour le moment, le format donné par dh_make est correct. Il y a en effet des discussions en cours par rapport a un nouveau format de copyright, mais rien n'a encore été décié
[Lutin ] (ceci dit, utiliser le nouveau format n'est absolument pas une erreur)
[Chris` ] OK merci :)
[Lutin ] juste que convertir les copyrights existants trop tôts (dans le cas d'un paquet deja existant) demanderait du boulot parfois inutile, si le format final est différent
[_Enchained ] ok
[Lutin ] WAtt|_: ça doit pouvoir se trouver
[WAtt|_ ] Lutin, on verra apres le cours alors :p
[Lutin ] http://packages.debian.org/changelogs/pool/main/e/embryo/embryo_0.9.9.050-1/copyright
[gpocentek ] les paquets qui donnent une lib, un soft et de la doc ont en général plusieurs licenses
[WAtt|_ ] merci monsieur
[Lutin ] (celui-là a été douloureux à écrire)
[Lutin ] bien, plus de questions ?
[WAtt|_ ] ca peut vite virer a quelque chose d'horrible ....
[WAtt|_ ] nop
[Lutin ] WAtt|_: oui. mais sans ça le paquet n'est pas accepté
[WAtt|_ ] je note
[_Enchained ] c ok
[Lutin ] dernière chose avant d'attaquer debian/control: lors de la réalisation d'un package n'hésitez à contacter l'auteur. C'est en général assez apprécié et cela peut vous permettre de faire
[Lutin ] valider ce fichier directement auprès de la personne concernée.
[Lutin ] jamais trop prudent ;)
[Lutin ] nous allons donc maintenant détailler un des deux fichiers les plus importants du paquet source: debian/control
[Lutin ] C'est le fichier de description du paquet source et de son paquet binaire résultant.
[Lutin ] Le premier paragraphe décrit le paquet source. Le(s) paragraphe(s) suivant(s) décrit(décrivent) le(s) paquet(s) binaire(s), car il peut y avoir
[Lutin ] plusieurs paquets binaires générés pour un seul paquet source. Les champs présents dans ce fichier squelette doivent être présents.
[Lutin ] Jetons d'abord un coup d'oeil aux champs concernant le paquet source :
[Lutin ]
[Lutin ] * Source: le nom du logiciel que vous packagez (nom limité aux caractères minuscules alphanumériques et pouvant contenir des tirets '-')
[Lutin ] * Section: la catégorie dans laquelle pourra se trouver le paquet source (voir http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections
[Lutin ] pour la liste des sections)
[Lutin ] * Priority: l'importance du paquet. Le kernel a en général une importance plus grande qu'un applet pour le panel KDE ;)
[Lutin ] * Maintainer: le mainteneur du paquet, en l'occurrence : Prénom Nom
[Lutin ] * Build-Depends: la liste des paquets nécessaires à la compilation des sources (/!\, les paquets nécessaires à la compilation sont en général
[Lutin ] différents de ceux nécessaires à l'exécution du programme compilé)
[Lutin ] * Standards-Version: la version de la "debian policy" actuelle, à laquelle vous devez vous référer (http://www.debian.org/doc/debian-policy/)
[Lutin ] * Homepage: l'URL du site de l'application
[Lutin ] La debian policy peut faire peur… mais c'est le document de référence pour l'empaquetage debian/ubuntu, et des bugs peuvent être ouverts sur votre paquet si vous ne la respectez pas
[Lutin ] ça va ?
[Sylvio[ ] oui tjrs
[_Enchained ] yep
[Alpheb ] oui
[WAtt|_ ] oui
[Lutin ] bien, attaquons maintenant la parti de debian/control décrivant les paquets binaires
[Lutin ] * Package: le nom du paquet binaire (qui peut différer du nom du paquet source, surtout quand il y a plusieurs paquets binaires)
[Lutin ] * Architecture: l'architecture pour laquelle sera valable le paquet binaire. Ça peut être une architecture unique (i386, powerpc…), une liste, "all"
[Lutin ] (un seul et même paquet binaire sera utilisable sur toutes les architectures, comme dans le cas d'une application python ou d'un script bash), ou
[Lutin ] encore "any" (dans ce cas le paquet source doit être compilé sur chacune des architectures disponibles)
[Lutin ] * Depends: les dépendances du paquet (${shlibs:Depends} sera remplacé plus tard lors de la construction du paquet grâce à un outil fort pratique)
[Lutin ] * Description: une description courte (d'une ligne), suivie d'une description plus longue (dont chaque ligne commence par un espace). C'est cette
[Lutin ] description qui apparaît dans les propriétés du paquet dans synaptic (la description courte apparait également dans le résultat de "apt-cache search",
[Lutin ] et la description longue dans "apt-cache show")
[Lutin ] Le plus simple est d'aller chercher un texte dans un fichier readme des
[Lutin ] sources (s'il y en a un), ou sur le site de l'auteur (ou encore de demander directement à l'auteur, qui est dans mon cas systématiquement mieux inspiré que moi)
[Lutin ] Notez que l'on peut indiquer ici les paquets supplémentaires suggérés par l'application à l'aide d'une ligne "Suggests: foo1, foo2, foo3" ou
[Lutin ] "Recommends: bar1, bar2, bar3".
[Lutin ] (Notez que Recommends: est plus fort que suggests. en effet, dans les versions récentes d"ubuntu les paquets listés en Recommends sont installés par défaut)
[Lutin ]
[Lutin ] petite note spéciale par rapport au copyright: < smarter> Lutin: tu pourrais mentionner licensecheck pour vérifier la licence/copyright de tout les fichiers simplement (c'est dans devscripts)
[Lutin ] merci smarter :)
[Lutin ]
[Lutin ] retour a debian/control
[Lutin ] Voici le fichier « control » de notre exemple : http://u-classroom.net/files/2009-01-29/packaging/debian/control
[Lutin ] ça va toujours ?
[Alpheb ] dans quels cas on recommande/suggère un paquet?
[Lutin ] (je devrais compter le nombre d'occurences de "ça va" dans ce cours :})
[bergalath ] merci Lutin, dsl mais je dois partir
[Lutin ] Alpheb: dans le cas ou c'est une addition utile au logiciel, mais pas obligatoire
[Lutin ] dans le sens "le logiciel n'a pas *besoin* de ça pour fonctionner, mais ça peut être un ajout intéressant
[Adri2000 ] dans recommends on met les paquets qu'on trouve dans une installation "classique" mais qui sont pas absolument indispensables (ie. on doit pouvoir les enlever sans tout casser)
[Alpheb ] un exemple?
[Adri2000 ] ce qu'on met en suggests peut être utile dans certains cas
[sherkin ] "Suggests" et "Recommends" vont juste apres "Depends" ?
[smarter ] l'ordre n'est pas vraiment important
[_Enchained ] le autotools-dev vire ?
[_Enchained ] des deps
[smarter ] mais Depends/Recommends/Suggests est la convention
[Lutin ] sherkin: il n'y a pas vraiment d'ordre imposé, tant que ça commence par le champ package et que ça finit par le champ description, ça devrait être égal a tout le monde
[Lutin ] Alpheb: par exemple, dpkg-dev (plein d'outils de packaging) Recommends: gcc et build-essential
[Alpheb ] J'ai pas les bon build-depends.
[sherkin ] debian_h m'a genere une dependance sur autotools-dev, je la laisse ?
[smarter ] Les recommends sont installés par défaut, pas les suggets
[Alpheb ] Lutin: ok
[Lutin ] debian_h ?
[smarter ] *suggets
[smarter ] rah
[Lutin ] sherkin: pas sur de comprendre ta question
[Alpheb ] Lutin: je suppose qu'on a tout les deux "Build-Depends: debhelper (>= 7), autotools-dev"
[Lutin ] oui
[sherkin ] pardon je voulais dire dh_make
[Lutin ] le build-depend sur autotools-dev est inutile, vous pouvez l'enlever
[Alpheb ] dans le fichier que t'as donné, ya une dépendance sur libgtk que nous on a pas.
[Alpheb ] on a rajoute, c'est ajouté automatiquement?
[gpocentek ] Alpheb: on l'a ajoutée
[gpocentek ] c'est propre au paquet
[Lutin ] l'explication est pas immédiate, donc si vraiment ça intéresse des gens je préfère le détailler en fin de cours que m'y attarder maintenant
[Lutin ] (pour autotools-dev)
[Lutin ] La difficulté principale de cette étape est d'indiquer correctement les Build-Depends. Elles peuvent être déterminées en fouillant les sources ou en
[Lutin ] compilant à la main l'application (grâce aux messages d'erreurs du ./configure notamment, ou en lisant le fichier configure.in/configure.ac pour
[Lutin ] déterminer quels bibliothèques et programmes sont nécessaires pour compiler).
[Lutin ] Elles sont quelquefois indiquées sur le site du projet.
[Lutin ] Attention lors des tests sur votre machine. Il se peut qu'une dépendance nécessaire soit déjà installée et que la compilation fonctionne (à priori)
[Lutin ] parfaitement. Cependant tous les paquets ubuntu sont compilés dans un environnement vierge. Si la ligne "Build-Depends:" n'est pas exacte, la
[Lutin ] compilation risque alors d'échouer (pbuilder est un outil indispensable pour tester les Build Depends, nous en reparlerons plus tard).
[Lutin ] (pardonnez l'interruption, mais on en arrivait à "déterminer les build-depends")
[Lutin ] par exemple, si vous ouvrez configure.ac, vous allez voir la ligne suivante:
[Lutin ] PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.12.0])
[Lutin ] ceci indique qu'on essaye de détecter la présence de gtk+-2.0
[Lutin ] vous allez donc devoir ajouter un build-depends sur la bonne version du bon paquet
[Lutin ] ici, le paquet nécessaire est libgtk2.0-dev
[Lutin ] (ça peut être déterminé par recherche pifométrique, demande aux developpeurs, ou encore recherche du fichier gtk+-2.0.pc à l'aide de "apt-file")
[Lutin ] et comme on voit dans le check que la version requise est >= 2.12.0, vous allez donc avoir "libgtk2.0-dev (>= 2.12.0)" dans vos build-depends
[Lutin ] c'est à peu près clair pour tout le monde ?
[_Enchained ] yep
[Sylvio[ ] ol
[WAtt|_ ] vi
[Kywhod ] good
[Alpheb ] la version a donner à build-depends est la version upstream/debian/ubuntu?
[_Enchained ] la version requise par le soft
[Lutin ] juste une note comme ça, on est ici dans un cas simple ou la seule build-dep peut être déterminée à partir du configure.ac, ce n'est pas toujours le cas
[Lutin ] surtout quand le buildsystem du logiciel que vous packagez est mal écrit
[Lutin ] Alpheb: c'est la partie de la version ubuntu qui correspond à la version upstream
[Alpheb ] Lutin: ok
[Lutin ] dans notre cas ubuntu numérote comme upstream, donc aucun souci, 2.12.0 marche très bien
[Lutin ] l'utilisation de la version ubuntu/debian *avec la révision correspondant à la distribution* est en général non recommandé, sauf dans un cas
[Lutin ] celui d'un bugfix qui est requis pour que ton paquet compile
[Lutin ] par exemple si le mainteneur de la dépendance foo a foiré son upload foo_0.1-1 et que ça empêche ton paquet de compiler, il faudra avoir une build-dep sur foo >= 0.1-2
[Lutin ] (en réalité il y a d'autres cas, mais plus compliqués, que je ne détaillerais pas aujourd'hui)
[Alpheb ] Lutin: ok
[sherkin ] je n'ai pas l'habitude de apt-file, on peut avoir un example pour gtk+ ?
[smarter ] j'pense qu'utiliser http://packages.ubuntu.com serait plus simple qu'apt-file
[Lutin ] apt-file search gtk+-2.0.pc par exemple
[illovae ] hum smarter, ça dépend si tu vis en gui ou en cli j'imagine
[gpocentek ] on fera un cours sur la compilation
[smarter ] on peut faire une recherche par nom de fichier
[Lutin ] (ça suppose de savoir que pkg-config cherche des fichiers portant l'extension .pc, mais on le retient vite)
[gpocentek ] trouver les dépendances etc
[illovae ] gpocentek: +1
[Lutin ] yep. donc si tout le monde est OK pour la partie debian/control, on va passer à la suite
[smarter ] illovae: on peut vivre dans les deux en même temps aussi :]
[Lutin ] on va s'intéresser rapidement à un paquet particulier présent dans les build-depends: debhelper
[Lutin ] debhelper est un outil qui facilite la vie des empaqueteurs, avec tout un tas de petits scripts dont les noms commencent par 'dh_'. Chacun a un rôle
[Lutin ] particulier et fonctionne différemment. La commande `man dh_foo` vous apprendra tout ce qu'il faut savoir ;). On verra quelques exemples en regardant
[Lutin ] le fichier debian/rules. La version actuelle de debhelper est la version 7. Elle introduit de gros changements par rapport aux versions 5 et 6
[Lutin ] La version 5 étant encore énormément utilisée, nous avons fait le choix de l'utiliser.
[Lutin ] La "compatibilité debhelper" (le contenu du fichier debian/compat, c'est a dire juste un chiffre) correspond à la version majeure de debhelper (c'est donc 5 dans notre cas)
[Lutin ] cette compatibilité doit être inférieur ou égale à la version majeure de debhelper (il est difficile de se mettre nez compatibilité version 8 avec debhelper 5 ;)), mais peut être inférieure
[Lutin ] en effet dans notre cas, on veut forcer la compatibilité avec debhelper 5, mais pour les utilisateurs de debhelper (« dh ») 7
[Lutin ] donc "echo 5 > debian/compat"
[Lutin ] c'est bon pour ce passage ?
[_Enchained ] si on laisse 7 ?
[Lutin ] dans notre cas précis c'est peu important
[Lutin ] mais ça peut avoir des répercussions quand tu veux que le paquet soit backporté (pris dans une release récente et intégré dans une ancienne)
[Lutin ] puisque dh 7 ne sera pas forcément disponiblr
[_Enchained ] ok
[Lutin ] détaillons maintenant l'autre fichier vital de tout paquet source: debian/rules
[Lutin ] Le fichier « rules » est un fichier exécutable (plus précisément, c'est un Makefile, pour ceux à qui ça parle). C'est lui qui va servir à piloter
[Lutin ] la création du paquet binaire.
[Lutin ] C'est ce fichier qui contient les règles nécessaires à la compilation du paquet. Le principe est simple. Il s'agit tout simplement de compiler le
[Lutin ] logiciel exactement comme on compile avec `./configure && make` (c'est la règle "build"), et de l'installer (c'est la règle "install") non pas sur le
[Lutin ] système, mais dans un dossier ("$(CURDIR)/debian/", avec `make install`), avant de pouvoir en faire une archive .deb (c'est la règle
[Lutin ] "binary-install").
[Lutin ] Quel que soit le type de paquet, un certain nombre de ces règles doivent toujours être présentes:
[Lutin ] * build
[Lutin ] * clean
[Lutin ] * binary,binary-arch,binary-indep
[Lutin ] Vous pouvez trouver plus d'informations à ce propos dans la debian policy, section 4.9
[Lutin ] chaque cible de debian/rules est appelé à une étape particulière de la création du paquet
[Lutin ] Chaque partie correspond en fait à une certaine
[Lutin ] étape de la compilation :
[Lutin ] * config.status: correspond au `./configure` (avec un paquet d'options dans notre fichier rules)
[Lutin ] * build: correspond au `make` ($(MAKE))
[Lutin ] * install: correspond au `make install`
[Lutin ] Ici l'installation se fait dans "$(CURDIR)/debian/classroom-fr", donc dans le dossier « debian/ » créé tout à l'heure.
[Lutin ] Pour avoir des informations sur tous les outils dh_* que vous voyez listés dans ce fichier n'hésitez pas à consulter les pages man. Une bonne partie
[Lutin ] d'entre elles seront francisées (n'oubliez pas d'installer le paquet manpages-fr pour pouvoir les lire).
[Lutin ] je vous laisse respirer un peu
[Kywhod ] mal à la tete moi xD
[illovae ] allez la minute des exercices de respiration : flexion sur les parties postérieures, extension des bras, on inpiiiiire
[illovae ] pffffffff on expiiiiire
[Lutin ] des questions, ou je vous ai vraiment assomés ?
[_Enchained ] ça va
[Sylvio[ ] non c'est assez clair pr le moment
[swop ] ça sera moins clair quand on devra fouiner dedans pour changer des choses ... lol
[_Enchained ] ^^
[Sylvio[ ] swop: c'est sûr :-)
[Lutin ] pour le moment l'important c'est que vous compreniez bien la structure, il y aura probablement des cours plus approfondis par la suite
[Lutin ] (et de toutes manières on est toujours sur ce chan)
[swop ] ok
[Lutin ] bien, si vous n'avez plus de questions on va donc créer pour de bon notre paquet source
[swop ] go
[_Enchained ] \o/
[Lutin ] jusqu'a maintenant, nous avons travaillé dans le dossier debian/, mais pour produire un paquet source il va nous falloir en particulier re-générer le fichier .diff.gz (celui qui contient la différence entre les source upstream et le packaging)
[Lutin ] Pour construire ce paquet, on se place à la racine du dossier source : cd ~/packaging/classroom/classroom-fr
[Lutin ] on lance ensuite la commande permettant de créer ce paquet source : debuild -S -sa --lintian-opts -Ii
[Lutin ] Le '-S' permet de construire un paquet source, le '--lintian-opts -Ii' donne une information sur les messages d'erreur de lintian, le '-sa' permet
[Lutin ] d'inclure le .orig.tar.gz dans l'upload vers une archive (à retenir lorsque vous uploaderez votre premier paquet sur REVU, le système de QA d'Ubuntu,
[Lutin ] permettant aux contributeurs de faire rentrer des paquets et surtout, comme son nom l'indique, de les faire vérifier par des MOTUs)
[Lutin ] La commande utilise automatiquement fakeroot (commande simulant les privilèges super-utilisateur) si rien est précisé (voir le man de debuild).
[Lutin ] ATTENTION : le paquet source est à reconstruire avec cette commande à chaque fois que vous modifiez quelque chose dans le dossier sources.
[Lutin ] À ce stade, vous risquez d'être confronté à l'erreur suivante :
[Lutin ] debuild: fatal error at line 791: [Lutin ] running debsign failed
[Lutin ] Pas de panique, contrairement à ce qui est indiqué ce n'est pas une erreur si fatale que cela. Elle signifie simplement que debuild n'a pas pu signer
[Lutin ] le paquet avec une clef gpg.
[Lutin ] si vous avez une clé GPG, vous pouvez ajouter l'option -k, ou est l'ID de votre clé. vous pouvez l'obtenir en utilisant "gpg --list-keys adresse@mail.com"
[Lutin ] dans le cas ou vous n'avez pas de clé, vous pouvez utiliser les options "-us -uc" pour lui dire de ne pas essayer de signer le paquet source
[Lutin ] Une autre solution est d'ajouter dans votre fichier ~/.devscripts (le créer si besoin) "export DEBSIGN_KEYID="
[Lutin ] (si bien sur vous avez une clé)
[Lutin ] tout le monde est OK ?
[_Enchained ] exemple:
[_Enchained ] j'ai une clé
[_Enchained ] maispas sur ce PC
[_Enchained ] je peux la récup ?
[Lutin ] oui, mais ce n'est pas forcément conseillé (il faut transférer la clé privée)
[_Enchained ] sinon ok
[Alpheb ] hum je galère
[Kywhod ] heu prob moi
[Lutin ] ok ok, posez vos questions :)
[swop ] moi c ok
[Lutin ] on attaque la dernière ligne droite après
[Kywhod ] j'ai pas encore fait ma clé (faut que je me motive à le faire vite fait)
[Kywhod ] j'ai ajoutée les parm -us -uc mais il me sort la meme erreur quand meme
[Lutin ] Kywhod: tu peux utiliser -us -uc pour forcer à ne pas signer
[Alpheb ] Lutin: J'ai pareil que Kywhod
[swop ] il faut mettre les args un peu plus haut dans la commande ... Ca a marché pour moi
[Lutin ] c'est parceque vous l'avez mis après --lintian-opts probablement
[Kywhod ] okay je mate
[Lutin ] du coup les options sont passées a lintian au lieu de dpkg-buildpackage
[Kywhod ] ue logique ><
[swop ] ^^
[_Enchained ] debuild -S -us -uc --lintian-opts -Ii
[Alpheb ] ok
[Kywhod ] good
[_Enchained ] à la place du -sa
[Lutin ] euh -sa c'est pas relié
[Lutin ] ça force l'inclusion du .orig.tar.gz dans le fichier .changes, ça ne concerne pas la signature
[_Enchained ] oups ok
[Lutin ] (en français, c'est pour dire que lors de l'upload, vous allez également uploader le tarball)
[_Enchained ] debuild -S -sa -us -uc --lintian-opts -Ii < donc ?
[Lutin ] c'est nécessaire lors de nouvelles versions upstream (logique), mais pas lorsque vous faites des mises a jour de packaging
[Lutin ] puisque le orig.tar.gz est deja présent dans l'archive
[Lutin ] _Enchained: oui
[Lutin ] c'est bon ?
[_Enchained ] oui
[Alpheb ] ok
[Kywhod ] ok
[MTb_s ] merci pour ce tuto ! bonne soirée
[swop ] ok
[Lutin ] bien, donc dans les messages qui sont passés, vous avez du voir des warnings lintian
[Lutin ] plein de lignes commençant par W:
[Lutin ] ou N:
[Lutin ] ce sont des informations données par lintian, qui vérifie que votre paquet est bien conforme a la debian policy
[Lutin ] Lintian permet de vérifier de nombreux points de votre paquet. Par exemple ici, on voit « I: classroom-fr source: debian-watch-file-is-missing », qui
[Lutin ] indique que nous pourrions ajouter un fichier debian/watch à notre packaging (ce fichier permet de vérifier la présence de nouvelles versions
[Lutin ] upstream et de les télécharger automatiquement via l'utilitaire « uscan »).
[Lutin ] on voit également d'autres warnings, comme
[Lutin ] W: classroom-fr source: bad-homepage
[Lutin ] qui vous rappelle que vous avec oublié de renseigner le champ Homepage: dans debian/control
[_Enchained ] E: classroom-fr source: invalid-standards-version 3.8
[Lutin ] ça va pour ça ?
[swop ] vi
[Lutin ] _Enchained: 3.8.0
[Kywhod ] uep
[Sylvio[ ] vi
[Lutin ] ok, je vais donc vous laisser en compagnie de gpocentek pour la dernière partie, qui va rapidement vous montrer comment compiler votre paquet binaire
[Lutin ] gpocentek: à toi chef :)
[gpocentek ] merci pour le cours Lutin !
[gpocentek ] pour finir, on va produire un paquet .deb installable sur votre machine
[gpocentek ] on va de nouveau entrer dans le dossier source :
[gpocentek ] cd ~/packaging/classroom/classroom-fr-0.1
[gpocentek ] et on utilise la commande :
[gpocentek ] debuild -b
[gpocentek ] avec éventuellement -us -uc pour éviter les warnings gpg
[gpocentek ] on laisse mariner... une fois cette étape terminée, votre .deb est dans ~/packaging/classroom
[gpocentek ] est-ce que ça marche pour tout le monde ?
[_Enchained ] (il faut installer la dep avant)
[_Enchained ] non ?
[gpocentek ] oui
[_Enchained ] dpkg-checkbuilddeps : dépendances de construction non trouvées : libgtk2.0-dev
[gpocentek ] s'il manque une dépendance debuild va vous le dire
[gpocentek ] il suffit d'installer libgtk2.0-dev, et de relancer debuild
[Kywhod ] ca marche pour moi
[sherkin ] dpkg-shlibdeps: warning: debian/classroom-fr/usr/bin/classroom shouldn't be linked with libgdk-x11-2.0.so.0 (it uses none of its symbols). [gpocentek ] sherkin: oui, c'est un warning sur lequel on ne peut pas faire grand chose
[sherkin ] ok
[gpocentek ] c'est lié à la manière dont gtk force des liens sur des librairies inutilement
[gpocentek ] (pas gtk directement, mais ça dépasse les limites du cours ;) )
[_Enchained ] ok
[gpocentek ] pour terminer, quelques astuces pour vérifier votre paquet
[gpocentek ] * d'abord les dépendances
[gpocentek ] dpkg -f ~/packaging/classroom/classroom-fr*deb
[gpocentek ] Notez que la variable ${shlibs:Depends} du debian/control a été remplacée par une liste de bibliothèques (avec précision des versions pour certaines).
[gpocentek ] * la liste des fichiers contenus dans le .deb
[gpocentek ] dpkg -c ~/packaging/classroom/classroom-fr*deb
[gpocentek ] et enfin lintian, cette fois ci sur le .deb :
[gpocentek ] lintian -Iv ~/packaging/classroom/classroom-fr*deb
[gpocentek ] ok ?
[_Enchained ] oui
[swop ] lol, pas encore fini de télécharger libgtk \o/
[_Enchained ] des warning mais bon
[gpocentek ] _Enchained: c'est pour vous donner du boulot :p
[Sylvio[ ] pareil que swop :-(
[_Enchained ] ^^
[gpocentek ] une dernière note pendant que ça télécharge/compile
[gpocentek ] Une méthode plus recommandable pour compiler vos paquets est l'utilisation de pbuilder, qui permet de créer les paquets dans un environnement minimal,
[gpocentek ] ce qui limite le risque d'erreurs. Cepdendant nous ne l'avons pas détaillé ici, celà aurait été trop long. Le sujet sera évoqué dans un prochain cours
[gpocentek ] voilà pour ce soir !
[Sylvio[ ] c'est enfin pr moi
[swop ] ok !! (des warnig aussi ...)
[Lutin ] merci à tous pour votre attention et votre présence, ainsi que vos questions :)
[gpocentek ] j'ai eu l'honneur de finir, mais gros merci à Lutin pour ses 2 heures bien remplies :)
[Alpheb ] merci Lutin \o/
[Sylvio[ ] merci en tout cas à tous les 2 !
[Lutin ] merci gpocentek aussi \o
[Alpheb ] et merci gpocentek
[gpocentek ] est-ce qu'il y a des questions ?
[gpocentek ] (sur tout le cours... si vous voulez revenir sur certaines choses)
[swop ] merci bcp !!!
[swop ] pour ma part, c'est bon :-)
[sherkin ] Merci Lutin et gpocentek ! dense mais interessant !
[smeagk_ ] merci à tout les deux
[Kywhod ] yep Merci à vous
[gpocentek ] faut prendre ça comme base pour continuer
[WAtt|_ ] MErci a vous :)
[gpocentek ] n'hésitez pas à venir ici poser vos question, y'aura du monde pour répondre :)
[Kywhod ] jvais me lancer dans un truc que jaimerais empaqueter =p et puis trifouiller
[gpocentek ] et il y aura d'autres cours en complément
[Kywhod ] pi je reviendrais pour les questions :p
[gpocentek ] Kywhod: c'est le meilleur moyen d'apprendre ;)