[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ suivant ]
Il est courant dans le monde des logiciels libre d'étudier le code source ou même de faire des corrections sur du code bogué. La construction à partir des sources peut être aussi utile si vous voulez activer des fonctionnalités qui sont désactivées dans le paquet officiel, ou en désactiver certaines qui étaient activées. Pour ce faire, vous aurez besoin de télécharger le code source du programme. Le système APT fournit une manière facile d'obtenir le code source de beaucoup de programmes contenus dans la distribution, y compris les fichiers nécessaires pour créer un .deb du programme.
Une autre utilisation courante des sources Debian est l'adaptation d'une version plus récente d'un programme de la distribution unstable pour l'utiliser avec la distribution stable. La compilation d'un paquet contre stable générera des .deb avec des dépendances ajustées pour correspondre aux paquets disponibles dans cette distribution.
Pour accomplir ceci, l'entrée deb-src de votre
/etc/apt/sources.list devrait pointer vers unstable. Il devrait
aussi être activé (décommenté). Regardez la section Le fichier /etc/apt/sources.list,
Section 3.1.
Le gestionnaire de paquets Aptitude est principalement axé sur les paquets
binaires. Pour utiliser les paquets source, nous aurons besoin d'utiliser à la
place apt-get. Pour télécharger un paquet source, vous devrez
utiliser la commande suivante :
$ apt-get source nomdupaquet
Cela téléchargera trois fichiers : un .orig.tar.gz, un .dsc et un .diff.gz. Dans le cas des paquets Debian natifs, le dernier fichier cité n'est pas téléchargé et le premier n'aura pas « orig » dans son nom.
Le fichier .dsc est utilisé par dpkg-source pour
déballer le paquet source dans le répertoire nomdupaquet-version.
Il y a un répertoire debian/ qui contient les fichiers nécessaires
pour la création du paquet .deb avec chaque paquet source téléchargé.
Pour construire automatiquement le paquet lorsqu'il est téléchargé, ajoutez simplement -b à la ligne de commande comme ceci :
$ apt-get -b source nomdupaquet
Si vous décidez de ne pas créer le .deb au moment du téléchargement, vous pouvez le créer plus tard en lançant la commande suivante dans le répertoire qui à été créé pour le paquet après le téléchargement :
$ dpkg-buildpackage -rfakeroot -uc -b
Remarquez que pour construire la plupart des paquets vous aurez au moins besoin
des paquets suivant : devscripts, dpkg-dev,
debhelper, fakeroot, jetez un oeil à la section Installation et réinstallation de paquets,
Section 4.4 et installez-les avant de continuer. La plupart des paquets
dépendront aussi d'outils de compilation, donc il pourrait être utile
d'installer le paquet build-essential. D'autres paquets peuvent
être nécessaires, pour plus d'informations regardez la section Paquets nécessaires pour la compilation d'un paquet source,
Section 5.2.
Pour installer le paquet construit par les commandes ci-dessus, il faut
utiliser directement le gestionnaire de paquets. Jetez un oeil à la section Installer des paquets Debian
téléchargés manuellement ou créés localement, Section 4.5. Il existe un
outil utile fournit par le paquet devscripts :
debi. Si vous exécutez debi dans le répertoire des
sources, il cherchera le fichier .changes dans le répertoire
parent pour découvrir quels paquets binaires le paquet source produit, il
lancera alors dpkg pour tous les installer. Cela peut ne pas être utile si
votre paquet source produit des paquets en conflit, ce qui n'est pas le cas la
plupart du temps. Vous devrez bien sûr avoir les droits superutilisateur pour
effectuer cette action.
Il y a une différence entre la méthode source
d'apt-get et ses autres méthodes. La méthode source
peut être utilisée par les utilisateurs normaux, sans avoir besoin des droits
d'administrateur. Les fichiers sont téléchargés dans le répertoire d'où est
appelé apt-get source paquet.
En temps normal, pour qu'un paquet puisse être compilé, il est nécessaire que des en-têtes spécifiques et des bibliothèques partagées soient présentes. Tous les paquets sources ont un champ dans leur fichier de contrôle appelé « Build-Depends: » qui indique quels paquets doivent être ajoutés pour que le paquet puisse être construit à partir des sources. Quelques paquets essentiels sont aussi nécessaires, vérifiez la section Téléchargement de paquets source, Section 5.1 avant de continuer.
APT possède une manière simple de télécharger ses paquets. Lancez simplement apt-get build-dep paquet, où « paquet » est le nom du paquet que vous voulez construire. Par exemple :
# apt-get build-dep gmc
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Les NOUVEAUX paquets suivants seront installés :
comerr-dev e2fslibs-dev gdk-imlib-dev imlib-progs libgnome-dev libgnorba-dev
libgpmg1-dev
0 mis à jour, 7 nouvellement installés, 0 à enlever et 1 non mis à jour.
Il est nécessaire de prendre 1069ko dans les archives.
Après dépaquetage, 3514ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n]
Les paquets installés sont ceux qui sont nécessaires afin que gmc
soit compilé correctement. Il est important de remarquer que cette commande ne
télécharge pas le paquet source du paquet à compiler. Par conséquent vous
aurez besoin de lancer apt-get source séparément pour l'obtenir.
Si vous voulez seulement vérifier quels paquets sont nécessaires pour
construire un paquet donné, il y a la méthode showsrc de la
commande apt-cache (voyez la section Obtenir des informations sur les paquets., Chapitre
6), qui affichera, parmi d'autres informations, la ligne
Build-Depends qui liste ces paquets.
# apt-cache showsrc paquet
Si vous voulez construire un paquet à des fins de débogage pour rapporter un bogue par exemple -- ou en corriger un, vous pouvez utiliser de simples variables d'environnement qui sont supportées par la plupart des paquets Debian.
Pour construire un paquet qui contient des binaires avec tous ses symboles de débogage[6], tout ce que vous aurez besoin de faire c'est de le préfixer par DEB_BUILD_OPTIONS=nostrip. Les optimisations peuvent aussi rendre le débogage plus difficile, vous pouvez les désactiver en ajoutant la chaîne noopt à la variable DEB_BUILD_OPTIONS. Par exemple :
$ DEB_BUILD_OPTIONS="nostrip noopt" dpkg-buildpackage -rfakeroot -uc -b
Si vous voulez modifier la manière dont le paquet est construit, vous aurez
besoin d'éditer le fichier debian/rules. Cela signifie qu'à
l'intérieur du répertoire créé lorsque le paquet source est extrait, il y a un
répertoire debian qui contient beaucoup de fichiers. L'un d'eux
est spécial : le fichier rules.
Ce fichier est habituellement un Makefile qui a des cibles pour la
configuration, la construction, l'installation et la création du paquet. Par
exemple si je veux construire le paquet luola[7] sans son je peux, après le
téléchargement et l'extraction de ses sources, éditer le fichier
debian/rules qui ressemble à ceci :
[...]
configure: configure-stamp
configure-stamp:
dh_testdir
# Ajoutez ici des commandes pour configurer le paquet
./configure $(confflags) \
--prefix=/usr \
--mandir=share/man \
--infodir=share/info \
--datadir=share/games \
--bindir=games \
--enable-sound
# --enable-sdl-gfx
touch configure-stamp
[...]
Voyez-vous l'option --enable-sound ? Si je la supprime ou la
remplace par --disable-sound puis reconstruit le paquet en
utilisant la technique décrite dans la section Téléchargement de paquets source, Section 5.1, le paquet
luola sera construit sans le support du son.
Si vous voulez réellement travailler avec des paquets sources quotidiennement,
je vous suggérerais principalement la lecture du Guide des nouveaux responsables
Debian et de la Charte Debian. Les
autres documentations disponibles depuis le coin des développeurs peuvent
être aussi utiles.
Parfois, des personnes veulent utiliser une version spécifique d'un programme pour lequel seul le code source est disponible, sans paquet Debian. Mais le système de paquets peut en être perturbé. Supposez que vous voulez compiler une nouvelle version de votre serveur de courriels. C'est parfait, mais beaucoup de paquets Debian dépendent d'un MTA (Mail Transport Agent, NdT : Agent de transport de courriels). Étant donné que vous avez installé quelque chose que vous avez compilé vous-même, le système de paquets n'en est pas informé.
C'est à ce moment là que le paquet equivs entre en scène. Pour
l'utiliser, installez le paquet portant ce nom. equivs crée un paquet vide qui
satisfait les dépendances en faisant croire au système de paquets que les
dépendances sont satisfaites.
Avant que nous commencions, il est bon de vous rappeler qu'il y a des façons
plus sûres de compiler avec des options différentes un programme qui est déjà
empaqueté pour Debian et qu'on ne devrait pas utiliser equivs pour
remplacer les dépendances si on ne sait pas ce qu'on fait. Pour plus
d'informations, regardez la section Téléchargement de
paquets source, Section 5.1.
Continuons avec l'exemple du MTA, vous venez juste d'installer votre
postfix fraîchement compilé et vous voulez continuer en installant
mutt. Soudain, vous découvrez que mutt veut
installer un autre MTA. Mais vous avez déjà le votre.
Allez dans un répertoire (/tmp par exemple) et lancez :
# equivs-control nom
Remplacez nom par le nom du fichier de contrôle que vous voulez créer. Le fichier sera créé comme le suivant :
Section: misc
Priority: optional
Standards-Version: 3.5.10
Package: <entrer le nom du paquet; par défaut equivs-dummy>
Version: <entrer la version; par défaut 1.0>
Maintainer: Votre Nom <votrenom@toto.com>
Pre-Depends: <paquets>
Depends: <paquets>
Recommends: <paquets>
Suggests: <paquet>
Provides: <paquet(virtuel)>
Architecture: all
Copyright: <fichier copyright; par défaut GPL2>
Changelog: <fichier changelog; par défaut un changelog générique>
Readme: <fichier README.Debian; par défaut un générique>
Extra-Files: <fichiers supplémentaires pour le répertoire doc, séparés par des virgules>
Description: <description courte; par défaut quelques mots pour en savoir plus>
description longue et informations
.
second paragraphe
Nous avons seulement besoin de modifier ce que nous voulons. Jetez un oeil au format des champs et à leur description, il n'y a pas besoin de tous les expliquer ici, jetons plutôt un oeil sur un exemple :
Section: misc
Priority: optional
Standards-Version: 3.0.1
Package: mta-local
Conflicts: mail-transport-agent
Replaces: mail-transport-agent
Provides: mail-transport-agent
Oui, c'est tout. mutt dépend de
mail-transport-agent, c'est un paquet virtuel fournit par tous les
MTA, mta-local « se déclare » lui-même comme un
« mail-transport-agent » en utilisant le champ Provides.
Les champs Conflicts et Replaces sont aussi
nécessaires pour qu'APT et dpkg comprennent qu'ils
devraient supprimer le paquet MTA actuellement installé en faveur du nouveau
que vous êtes en train d'installer.
Maintenant, il ne vous reste plus qu'à construire le paquet :
# equivs-build nom
dh_testdir
touch build-stamp
dh_testdir
dh_testroot
dh_clean -k
# Ajouter ici des commandes pour installer le paquet dans debian/tmp.
touch install-stamp
dh_testdir
dh_testroot
dh_installdocs
dh_installchangelogs
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb: building package `nom' in `../nom_1.0_all.deb'.
Le paquet est créé.
Attention, le paquet est créé dans le répertoire courant.
Et installez le .deb résultant. Regardez la section Installer des paquets Debian téléchargés manuellement ou créés localement, Section 4.5.
Comme nous pouvons le voir, il y a plusieurs utilisations
d'equivs. L'une d'entre elles peut même être la création d'un
paquet mes-favoris qui dépend des programmes que vous installez
habituellement. Laissez libre cours à votre imagination, mais restez prudent.
Il est important de remarquer qu'il y a des exemples de fichiers control dans
/usr/share/doc/equivs/examples. Regardez-les.
[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ suivant ]
Apt howto
2.0.2 - October 2006kov@debian.orgdebian-l10n-french@lists.debian.org