[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 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és. 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 beaucoups 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 2.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 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 3.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 4.2.
Pour installer le paquet contruit 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 3.5.
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 4.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 contruire. 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
5), 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 simple 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 plys 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 contruit, 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 4.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éé 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 de celui 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 4.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, faisons mainenant ce qui est requis :
Section: misc Priority: optional Standards-Version: 3.0.1 Package: mta-local 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.
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 3.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 court à 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 ] [ suivant ]
Apt howto
1.9.3 - novembre 2004kov@debian.org
leonptitlouis@ifrance.com