Détails des étapes de l'atelier « Paquet Debian »

{i} Cette section présente le détail des étapes que nous verrons ensemble pendant l'atelier. Il n'est pas nécessaire de les faire avant. Seuls les pré-requis sont indispensables et doivent avoir été préparés avant l'atelier.

Chercher un paquet Debian existant se rapprochant le plus du besoin

Ici on veut créer un paquet pour déployer facilement des polices laotiennes sur des postes installés selon la norme AuF, donc sous Ubuntu “Jaunty Jackalope” 9.04.

Il est donc logique d'effectuer la recherche à partir de ce système :

apt-cache search font lao

On remarque alors 2 paquets intéressants : language-support-font-lo et ttf-lao. On examine leur description avec la commande suivante :

apt-cache show language-support-fonts-lo ttf-lao

On comprend alors que le premier sert à lister les paquets à installer automatiquement lorsqu'on demande à installer l'environnement de langue laotienne, tandis que le second contient effectivement des polices laotiennes, le premier paquet dépendant du second.

Récupérer les sources du paquet et les extraire

Ici notre choix va donc se porter sur le paquet ttf-lao qui correspond exactement au type de paquet que nous souhaitons faire.

Il y a 2 façons possibles d'en récupérer les sources :

La seconde méthode étant généralement préférable, c'est celle que nous allons utiliser.

Quand on fait un apt-cache policy ttf-lao on constate que ce paquet est dans la section main. Il faut donc tout d'abord s'assurer d'avoir au moins la ligne suivante dans son fichier /etc/apt/sources.list :

deb-src http://archive.ubuntu.com/ubuntu/ jaunty main

Note : ne pas oublier de lancer sudo aptitude update après chaque modification du sources.list.

On se placera ensuite dans un répertoire de travail pour y extraire les sources du paquet :

mkdir ~/atelier-tap
cd ~/atelier-tap
apt-get source ttf-lao

Pour toute la suite des travaux, on va se placer dans le répertoire du paquet extrait :

cd ttf-lao-*

Étudier les informations et le contenu du paquet extrait

En listant le contenu du dossier courant avec ls, on constate que ce paquet est relativement simple : juste un fichier de police et un sous-dossier debian.

Ce sous-dossier debian est celui qui contient toutes les informations nécessaires pour construire le paquet et il nous faut donc l'examiner, sans aller trop dans les détails (le guide d'empaquetage est là pour ça).

L'un des fichiers les plus importants est le fichier control qui contient des informations générales sur le paquet (nom, section, priorité, mainteneur, ... dans la section Source:) ainsi que celles nécessaires pour construire le paquet à partir de ses sources (le Build-Depends de la section Source: et toutes les sections Package: suivantes).

Le second fichier important est le fichier rules qui contient les « règles » de construction du paquets, généralement à la façon d'un Makefile (ce n'est pas grave si vous ne savez pas ce que c'est pour le moment).

Un fichier non moins important est le fichier changelog, qui sert bien sûr à mémoriser la liste des changements effectués sur le paquets, mais également à préciser certaines informations qui seront utilisées pour la construction du paquet telles que le nom, le numéro de version et la distribution (ici unstable car ce paquet est une reprise directe de Debian sans adaptation pour Ubuntu).

Et finalement un fichier très spécifique à ce type de paquet (concernant les polices) est le fichier ttf-lao.defoma-hints. Ce fichier contient des informations qui serviront au déploiement de cette police pour tous les logiciels les utilisant sur le système (Xwindow, pango, ghostscript, ...). Pour plus de détails à ce sujet voir les pages de manuels concernant defoma.

Adapter les informations pour le nouveau contenu

À présent nous allons commencer à nous occuper de notre propre paquet.

Nous avons 3 stratégies possibles :

La première méthode est certainement la meilleure, mais a plusieurs inconvénients dans notre cas précis :

La seconde méthode a l'inconvénient majeur de ne plus pouvoir profiter ensuite du système des mises à jour pour ce paquets précis, vu qu'une mise à jour supprimerait les polices supplémentaires pour revenir au contenu d'origine du paquet.

La troisième méthode est donc la plus approprié par rapport à notre besoin ici : créer un paquet totalement indépendant et le maintenir nous-même.

Je propose de l'appeler ttf-lao-auf.

Nous allons donc commencer par renommer tous les fichiers, y compris le répertoire courant, de ttf-lao vers ttf-lao-auf. On en profite également pour changer le numéro de version au passage :

cd ~/atelier-tap
mv ttf-lao-0.0.20060226 ttf-lao-auf-0.0.20100107
cd ttf-lao-auf-*
rename s/ttf-lao/ttf-lao-auf/ debian/*
sed -i s/ttf-lao/ttf-lao-auf/ debian/*

Il nous faut ensuite adapter le fichier debian/control par rapport à notre nouveau contenu :

Il nous faut également recréer un fichier debian/changelog adapté à notre paquet, en utilisant les commandes suivantes :

rm debian/changelog
dch --create

Cela lancera un éditeur dans lequel il faudra changer les valeurs suivantes :

Ensuite il nous faut copier la ou les nouvelles polices TrueType dans le dossier principal du paquet (au même niveau que le sous-dossier debian et la police existante). Ne pas oublier de supprimer la police d'origine du paquet ttf-lao sinon il y aura un conflit au moment de l'installation !

Et enfin il nous faut générer un fichier de description des polices pour le système defoma :

defoma-hints -c --no-question truetype *.ttf > debian/ttf-lao.defoma-hints

/!\ vu que defoma-hints ne fonctionne plus il nous faut faire sans en supprimant le fichier debian/ttf-lao-auf.defoma-hints et en créant un fichier debian/postinst avec le contenu suivant :

#!/bin/sh
set -e
fc-cache --system-only
exit 0

Construire le paquet

Avant de pouvoir construire un paquet, il faut vérifier que toutes les dépendances requises pour la construction sont disponibles. Cela se fait avec la commande dpkg-checkbuilddeps, dans le dossier du contenu du paquet :

cd ~/atelier-tap/ttf-lao-auf-*
dpkg-checkbuilddeps

Ici on constate qu'il nous faut installer les paquets additionnels build-essentials et cdbs :

sudo aptitude install build-essentials cdbs

Une fois que tout est prêt, construire un paquet est assez simple : on se place dans le dossier du contenu du paquet et on lance la commande debuild :

cd ~/atelier-tap/ttf-lao-auf-*
debuild -us -uc

Note : les options -us et -uc empêcheront la tentative de signer les paquets pour plus de sécurité, un sujet qui pourrait faire l'objet d'un autre atelier... ;-)

On notera qu'il n'est pas nécessaire d'avoir les droits administrateur (root) pour construire un paquet, cela grâce à l'outil fakeroot qui va simuler un environnement root le temps de la construction.


ZAP/Ateliers/PaquetDebian/Détails (dernière édition le 2010-01-07 04:59:39 par JeanChristopheAndré)