Modifications entre les versions 1 et 7 (s'étendant sur 6 versions)
Version 1 à la date du 2010-01-04 22:43:58
Taille: 304
Commentaire:
Version 7 à la date du 2010-01-07 04:50:21
Taille: 8802
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 4: Ligne 4:

== 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 :
 * soit manuellement via le web : http://packages.ubuntu.com/source/jaunty/ttf-lao
 * soit automatiquement via un gestionnaire de paquets APT

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 :
 * soit nous envoyons les nouvelles polices au mainteneur [[Debian]] pour qu'il les intègre dans le paquet `ttf-lao`
 * soit nous enrichissons le paquet actuel `ttf-lao` pour en produire une nouvelle version contenant des polices supplémentaires
 * soit nous créons un nouveau paquet sur le modèle de `ttf-lao` ne contenant que les polices supplémentaires

La première méthode est certainement la meilleure, mais a plusieurs inconvénients dans notre cas précis :
 * nous dépendons alors de l'empaquetage au niveau de [[Debian]] : des délais du mainteneur, de l'entrée dans le dépôt officiel [[Debian]], puis de l'arrivée dans celui de [[Ubuntu]], qui ne sera dans tous les cas pas utilisable avant la prochaine version
 * les polices dont la licence n'est pas libre seront refusées

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.

[[Progfou|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 :
 * le nom `ttf-lao` a déjà été remplacé partout par `ttf-lao-auf` grâce au `sed` précédent
 * remplacer le mainteneur après `Maintainer:` par votre propre nom et adél
 * adapter éventuellement la description pour être plus précise

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 :
 * remplacer `PACKAGE` par `ttf-lao-auf`
 * remplacer `VERSION` par `0.0.20100107`
 * remplacer `UNRELEASED` par `unstable`
 * effacer la partie ` Closes: #XXXXXX)` (qui concerne une demande de création de paquet chez [[Debian]])
 * remplacer l'adél par la vôtre (une adél correcte)

Ensuite il nous faut copier [[http://www.laoscript.net/downloads/fonts/saysettha_ot.ttf|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` [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=285653|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.

----

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 :

  • soit nous envoyons les nouvelles polices au mainteneur Debian pour qu'il les intègre dans le paquet ttf-lao

  • soit nous enrichissons le paquet actuel ttf-lao pour en produire une nouvelle version contenant des polices supplémentaires

  • soit nous créons un nouveau paquet sur le modèle de ttf-lao ne contenant que les polices supplémentaires

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

  • nous dépendons alors de l'empaquetage au niveau de Debian : des délais du mainteneur, de l'entrée dans le dépôt officiel Debian, puis de l'arrivée dans celui de Ubuntu, qui ne sera dans tous les cas pas utilisable avant la prochaine version

  • les polices dont la licence n'est pas libre seront refusées

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 :

  • le nom ttf-lao a déjà été remplacé partout par ttf-lao-auf grâce au sed précédent

  • remplacer le mainteneur après Maintainer: par votre propre nom et adél

  • adapter éventuellement la description pour être plus précise

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 :

  • remplacer PACKAGE par ttf-lao-auf

  • remplacer VERSION par 0.0.20100107

  • remplacer UNRELEASED par unstable

  • effacer la partie  Closes: #XXXXXX) (qui concerne une demande de création de paquet chez Debian)

  • remplacer l'adél par la vôtre (une adél correcte)

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 :

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é)