Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
projets:paquets:creer_un_paquet_avec_cdbs [Le 26/11/2008, 00:51] – lien interne Id2ndR | projets:paquets:creer_un_paquet_avec_cdbs [Le 21/02/2010, 16:43] (Version actuelle) – lien mort draco31.fr | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | Article mis en forme par DvP suite à la séance de formation organisée par Gloubiboulga sur le canal IRC # | ||
+ | Merci à Gloubiboulga pour la relecture et corrections. | ||
+ | |||
+ | ====== CDBS, un outil de création de paquets debian ====== | ||
+ | |||
+ | ===== Présentation ===== | ||
+ | CDBS, pour Common Debian Build System, est un outil qui permet de simplifier votre debian/ | ||
+ | |||
+ | |||
+ | ==== Pré requis ==== | ||
+ | Pour pouvoir suivre cette documentation un certain nombre de pré-requis sont nécessaires : | ||
+ | * Avoir suivi (ou lu) les cours précédents sur la [[tutoriel: | ||
+ | * Installer sur votre ordinateur les paquets suivants : | ||
+ | * devscripts | ||
+ | * build-essential | ||
+ | * cdbs | ||
+ | * debhelper | ||
+ | * lintian | ||
+ | * fakeroot | ||
+ | |||
+ | Afin d' | ||
+ | |||
+ | [[apt:// | ||
+ | < | ||
+ | |||
+ | |||
+ | ===== Initiation à CDBS ===== | ||
+ | Une fois les paquets nécessaires à la création de paquets avec CDBS installés, regardez ensuite dans / | ||
+ | |||
+ | Regardons le fichier / | ||
+ | |||
+ | Tous les fichiers .mk livrés avec CDBS ont ce profil (debhelper.mk est un exemple assez complexe, gnome.mk est beaucoup plus simple). | ||
+ | |||
+ | La " | ||
+ | |||
+ | == Comparaison CDBS / Debhelper == | ||
+ | |||
+ | Quand vous téléchargez un logiciel, 3 commandes suffisent souvent à le compiler/ | ||
+ | C'est ce que font les 3 commandes, mais pour vous c'est beaucoup plus simple. | ||
+ | C'est le même principe avec debhelper et cdbs, vous pouvez tout faire manuellement avec debhelper mais vous pouvez aussi utiliser cdbs qui fera le même boulot avec 2 lignes de code (en utilisant debhelper 99 fois sur 100). | ||
+ | |||
+ | **Attention** : Notez que seul le debian/ | ||
+ | |||
+ | ===== Création d'un paquet avec CDBS ===== | ||
+ | ==== Préparation ==== | ||
+ | On va aujourd' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== 1 - Création du paquet « pas beau » ==== | ||
+ | Pour aller vite, Gloubiboulga a préparé un petit script qui va vous permettre de récupérer tous les fichiers nécessaires sur son site. Placez vous dans un dossier (le dossier ~/packaging de la première session fera très bien l' | ||
+ | <code bash> | ||
+ | wget http:// | ||
+ | chmod a+x get_files.sh | ||
+ | ./ | ||
+ | </ | ||
+ | <note important> | ||
+ | BASE_URL=" | ||
+ | </ | ||
+ | Ceci va vous permettre de récupérer le paquet source orig.tar.gz de libtextcat et un dossier debian/ contenant les fichiers nécessaires à la création d'un paquet tout moche ;) | ||
+ | |||
+ | **Note** : Pour les besoins du cours, ces fichiers ont été téléchargés pour ne pas perdre trop de temps, mais le dossier debian/ et tous les fichiers auraient pu être créés par la commande : | ||
+ | <code bash> | ||
+ | dh_make -e votre.adresse@mail.ip | ||
+ | </ | ||
+ | Puis choisir « b » pour la création d'un paquet en utilisant cdbs. Ceci générera le dossier debian/ ainsi que les fichiers au « format » cdbs. | ||
+ | |||
+ | Pour le détail sur les fichiers contenus dans le dossier debian/ rapporter vous au précédent tutoriel : [[tutoriel: | ||
+ | |||
+ | === Contenu du dossier debian/ === | ||
+ | Allons voir ce qu'il y a dans ce dossier debian. Le fichier qui nous intéresse est bien entendu le debian/ | ||
+ | <code bash> | ||
+ | cat textcat/ | ||
+ | </ | ||
+ | Vous voyez que les Build-Depends contiennent cdbs ET debhelper. Il est rare d' | ||
+ | |||
+ | Maintenant, éditons le fichier debian/ | ||
+ | <code bash> | ||
+ | cat textcat/ | ||
+ | </ | ||
+ | 6 lignes suffisent... | ||
+ | |||
+ | === Détail du fichier debian/ | ||
+ | Les deux premières lignes permettent d' | ||
+ | |||
+ | Ces deux lignes pourraient suffire à faire le paquet, mais essayons d' | ||
+ | |||
+ | Première chose : installer une page man. On a vu tout à l' | ||
+ | |||
+ | Pour assigner une valeur à la variable, on utilise le symbole ": | ||
+ | |||
+ | CDBS saura qu'une page man existe, et dans quel paquet l' | ||
+ | |||
+ | Il n'y a pas d' | ||
+ | <code bash> | ||
+ | $ grep -Ri manpage / | ||
+ | </ | ||
+ | Ce qui vous donnera en retour : | ||
+ | <code bash> | ||
+ | / | ||
+ | </ | ||
+ | **Note sur grep** : -R permet de chercher dans tous les fichiers, -i de ne pas tenir compte de la casse. Cela donne une indication sur les variables à utiliser. Les noms des variables sont généralement suffisamment explicites pour permettre une recherche avec grep. | ||
+ | |||
+ | La documentation sur CDBS n'est pas très riche. La meilleure pour le moment est : [[http:// | ||
+ | |||
+ | === Customisation du paquet === | ||
+ | Il se peut également que vous ayez des actions particulières à exécuter à certains moments de la construction du paquet. Dans notre exemple, nous allons installer l' | ||
+ | |||
+ | Suivront les instructions que nous voulons exécuter. Il faut systématiquement préciser le paquet concerné lors de l' | ||
+ | |||
+ | Voyez http:// | ||
+ | |||
+ | __Petit rappel__ : Quand on lance le make install en construisant un paquet, l' | ||
+ | |||
+ | === Compilation du paquet === | ||
+ | On va maintenant compiler le paquet sur le système | ||
+ | <code bash> | ||
+ | cp -R textcat /tmp | ||
+ | cd / | ||
+ | tar zxvf *gz | ||
+ | mv debian libtextcat-* | ||
+ | cd libtextcat-* | ||
+ | debuild -us -uc | ||
+ | </ | ||
+ | Ce script utilise les fichiers téléchargés tout à l' | ||
+ | Contrairement à ce que nous avons fait lors de la première session, on ne passe pas par l' | ||
+ | |||
+ | Après le ' | ||
+ | <code bash> | ||
+ | ls ../ | ||
+ | </ | ||
+ | Vous avez bien votre paquet .deb mais vous avez vu que Lintian n'est pas spécialement content après la compilation : | ||
+ | <code bash> | ||
+ | W: textcat: non-dev-pkg-with-shlib-symlink usr/ | ||
+ | W: textcat: package-name-doesnt-match-sonames libtextcat0 | ||
+ | </ | ||
+ | Faites un 'dpkg -c' sur le .deb, ceci va lister le contenu du paquet. Vous verrez que vous avez un dossier sbin, et pas de bin ainsi qu'une manpage. | ||
+ | |||
+ | On va maintenant construire un paquet multiple, pour satisfaire la debian policy en changeant le debian/ | ||
+ | |||
+ | |||
+ | ==== 2 - Création du paquet en respectant la « debian policy » ==== | ||
+ | Retournez dans votre dossier initial (~/ | ||
+ | <code bash> | ||
+ | ./ | ||
+ | ls textcat/ | ||
+ | </ | ||
+ | Quelques fichiers .install sont ajoutés. Jetons un oeil au debian/ | ||
+ | <code bash> | ||
+ | less textcat/ | ||
+ | </ | ||
+ | Cette fois-ci trois paquets sont décrits, qui vont donner 3 .debs lors de la compilation. | ||
+ | Il reste maintenant à installer les fichiers voulus dans les dossiers debian/ | ||
+ | |||
+ | Le scripts d' | ||
+ | |||
+ | C'est là que debhelper revient sur le devant de la scène avec son merveilleux dh_install. ce script permet de déplacer les fichiers listés dans debian/< | ||
+ | |||
+ | Regardez par exemple createfp.install : | ||
+ | <code bash> | ||
+ | cat textcat/ | ||
+ | </ | ||
+ | Tous les fichiers installés dans debian/ | ||
+ | |||
+ | Regardez maintenant libtextcat-dev.install : | ||
+ | <code bash> | ||
+ | cat textcat/ | ||
+ | </ | ||
+ | La ligne src/ | ||
+ | |||
+ | Le debian/ | ||
+ | |||
+ | === Compilation du paquet === | ||
+ | Nous allons maintenant compiler les paquets : | ||
+ | <code bash> | ||
+ | rm -rf / | ||
+ | cp -R textcat /tmp | ||
+ | cd / | ||
+ | tar zxvf *gz | ||
+ | mv debian libtextcat-* | ||
+ | cd libtextcat-* | ||
+ | debuild -us -uc | ||
+ | </ | ||
+ | Et après ' | ||
+ | <code bash> | ||
+ | for i in ../*deb; do echo " | ||
+ | </ | ||
+ | Vous obtenez bien vos trois paquets binaires tous propres : | ||
+ | * createfp_2.2-0ubuntu2_i386.deb | ||
+ | * libtextcat0_2.2-0ubuntu2_i386.deb | ||
+ | * libtextcat-dev_2.2-0ubuntu2_i386.deb |