PKGBUILD(5)                 Pacman Manual                    PKGBUILD(5)



NOM
       PKGBUILD - fichier descriptif de construction de paquetage ArchLinux

SYNOPSIS
       PKGBUILD


DESCRIPTION
       L'objectif de cette page de manuel est de décrire les règles concernant PKGBUILD. Une fois que le
       PKGBUILD est écrit, le paquetage est construit avec makepkg et installé avec pacman.


       Note :
       Si vous utilisez Arch Linux et que vous possédez une copie locale de l'arborescence Arch Build System
       (ABS), ou utilisez une autre distribution fournissant un arbre de compilation similaire, vous pouvez
       copier le fichier PKGBUILD.proto dans votre nouveau répertoire de compilation et l'éditer pour le
       personnaliser. Un fichier prototype à jour est disponible avec les sources de ce paquetage.


OPTIONS ET DIRECTIVES
       Cette page contient la liste des options et directives standards à utiliser dans un PKGBUILD. Elles
       sont toutes reconnues et interprétées par makepkg et un certain nombre sont transférés directement
       dans le paquetage final.

       Si vous avez besoin de créer vos propres variables pour la compilation, il est recommandé de les
       faire précéder du préfixe _ (underscore).  Pour prévenir de tous conflits éventuels avec les
       variables internes à makepkg.  Par exemple, pour stocker la version du noyau dans une variable,
       utilisez quelque chose comme ‘$_basekernver‘.

pkgname
    Le nom du paquetage. Celui ci doit être dans le style Unix pour être utilisé comme nom de paquetage.

pkgver
    C'est la version du logiciel selon l'auteur (ex : 2.7.1).

pkgrel
    C'est la version spécifique du paquetage de Arch Linux. Cela permet au mainteneur du paquetage de faire
    des mises à jour du paquetage. Un pkgrel est à 1 dans sa première diffusion et est augmenté à chaque
    mise à jour intermédiaire du PKGBUILD.

pkgdesc
    Ce doit être une courte description du paquetage et de ses fonctionnalités. Essayez de faire la
    description sur une seule ligne de texte.  (NdT : environ 100 caractères maximum)

url
    Ce champ contient l'URL optionnel qui peut être associé avec l'empaquetage. C'est simplement l'adresse
    internet officiel du projet.

license (variable)
    Ce champ précise la licence du paquetage. Les licences les plus utilisées sont dans
    /usr/share/licenses/common. Si vous voyez la licence du paquetage ici, faites en simplement référence
    dans le champ de la licence (ex: license=('GPL')). Si le paquetage est distribué avec une licence non
    trouvée dans /usr/share/licenses/common, vous devrez inclure la licence dans le paquetage et renseigner
    license=('custom') ou license=('custom:LicenseName'). La licence doit être placée dans
    $pkgdir/usr/share/licenses/$pkgname lors de la construction du paquetage. Si plusieurs licences sont
    applicables pour le paquetage, listez les toutes : license=('GPL' 'FDL').

install
    Précise le fichier spécial d'installation qui n'est pas inclus dans le paquetage. Celui ci est dans le
    même répertoire que le PKGBUILD et sera copié dans le paquetage par makepkg. Il n'est pas nécessaire de
    l'inclure dans la variable source. (ex : install=pkgname.install).

source (ligne)
    La ligne source contient les fichiers requis pour la construction du paquetage. Les fichiers sources
    doivent être dans le même répertoire que le PKGBUILD, sinon ils doivent avoir leur URL complète. Pour
    faire le PKGBUILD le plus utile possible, utilisez les variables $pkgname et $pkgver si possible lors
    que vous indiquez l'emplacement du téléchargement. Toutes archives compressés sera automatiquement
    décompacté, à moins que le champs noextract présenté ci-après soit présent.

noextract (ligne)
    La ligne des noms de fichiers correspond à la ligne source. Les fichiers listés ici ne seront pas
    extraits avec le reste des fichiers sources. Ceci est utile pour les paquetages utilisant des données
    compressées pour le téléchargement mais qui ne nécessitent pas d'être décompressées.

md5sums (ligne)
    Ce champ contient le hash MD5 pour tous les fichiers indiqués à la ligne source (dans le même ordre).
    makepkg va l'utiliser pour vérifier l'intégrité des sources pendant la séquence de construction. Il est
    facile de générer le md5sums, "makepkg -g >> PKGBUILD". Puis vous éditez le PKGBUILD pour déplacer la
    variable md5sums située en fin de fichier à une place plus adaptée.

sha1sums, sha256sums, sha384sums, sha512sums (ligne)
    Validation d'intégrité alternatif que supporte makepkg, ils sont tous similaire à md5sums décrit ci-
    dessus. Pour utiliser et généré ces sommes de contrôle, vérifiez que vous avez activé l'option
	‘INTEGRITY_CHECK‘ dans makepkg.conf(5).

groups (ligne)
    C'est un champ pour un nom symbolique pour représenter un groupe de paquetages, permettant
    l'installation de nombreux paquetages juste avec un simple champ. Par exemple, vous pouvez installer
    tous les paquetages KDE en installant le groupe kde.

arch (ligne)
    Défini sur quelle architecture le paquetage est destiné (ex: arch=('i686' 'x86_64')).

backup (ligne)
    Un espace sépare les noms de fichiers, sans slash avant, cela permet de sauvegarder si le paquetage est
    supprimé ou mis à jour. C'est généralement utilisé pour les paquetages plaçant des fichiers de
	configuration dans /etc. Voir Handling Config Files dans la page man de pacman(8) pour de plus amples
    renseignements.

depends (ligne)
    Une liste de paquetages pour lesquels dépend le paquetage compilé et installé. Les paquetages dans cette
    liste doivent être entourer de simple guillemet et doivent contenir au moins le nom du paquetage. Vous
    pouvez aussi inclure la version requise sous cette forme : nom<>version, quand <> est un des trois
    comparateurs : >= (supérieur ou égal à), <= (inférieur ou égale à), ou = (égal à).

makedepends (ligne)
    Une liste de paquetages dont dépend le paquetage pour compiler, mais non utile au fonctionnement de
    celui-ci. Les paquetages répondent aux mêmes exigences que la variable depends.

conflicts (ligne)
    Une liste de paquetages qui entrent en conflit avec ce paquetage (qu'ils ne peuvent pas être installé en
    même temps). Cette variable répond aux mêmes exigences que la variable depends hormis que vous ne pouvez
    pas préciser les versions.

provides (ligne)
    Un choix de “solutions virtuelles” que fourni le paquetage. Cela permet de fournir un nom de dépendance
    autre que celui d'un paquetage au nom explicite. Par exemple, le paquetage dcron peut se nommer cron,
    tous les paquetages vont dépendre de cron au lieu de dcron OU fcron. Les version peuvent aussi être
    indiqués. Par exemple, drcon peut fournir cron 2.0 pour satisfaire la dépendance cron>=2.0 demandé par
    un autre paquetage.

replaces (ligne)
    C'est une liste de paquetages que le paquetage devrait remplacer, il peut être utilisé pour remplacer
    des paquetages renommés / retravaillés. Par exemple, si le paquetage nommé j2re est renommé en jre,
    cette directive permet aux futures mises à jour de continuer même si le paquetage est modifié.

options (ligne)
    Ce champ permet d'outrepasser les fonctionnalités par défaut de makepkg lors de la création du
    paquetage. Pour ajouter une option, vous devez ajouter une des options suivantes dans la variable
    options. Pour inverser le comportement par défaut, mettez un "!" devant l'option. Précisez les options
	uniquement si vous souhaitez outrepasser les options de makepkg.conf(5).  NOTE : force est une option
	spéciale utilisé pour le PKGBUILD(5), à n'utiliser seulement si vous savez ce que vous faites.

    strip
    Permet de faire le stripping du binaire et des bibliothèques. Si vous utilisez fréquemment un
    débuggeur pour les programmes ou les bibliothèques, il peut vous être utile de désactiver cette
    option.

    docs
    Conserver les répertoires doc et info. Si vous souhaitez supprimer les répertoires doc et info,
    précisez le dans le champs !docs.

    libtool
    Conserver les fichiers libtool (.la) dans le paquetage. Précisez !libtool pour les supprimer.

    emptydirs
    Conserve les répertoires vides dans le paquetage.

    zipman
    Compresse les pages de man avec gunzip.

    ccache
    Permet d'utiliser ccache pour la compilation. Plus pratique dans sa forme négative !ccache avec les
    paquetages qui ont des problèmes de compilation avec ccache.

    distcc
    Permet d'utiliser distcc pour la compilation. Plus pratique dans sa forme négative !distcc avec les
    paquetages qui ont des problèmes de compilation avec distcc.

    makeflags
	Permet d'utiliser un makeflags particulier indiqué dans makepkg.conf(5). pendant la compilation.
    Plus pratique dans sa forme négative !makeflags avec les paquetages qui ont des problèmes de
    compilation avec les makeflags personnalisés comme -j2 (ou supérieur).

    force
    Force le paquetage à être mis à jour par l'opération de mise à jour de pacman, même si le numéro de
    version ne nécessite pas de mise à jour.  Ceci est pratique quand le type de numéro de version d'un
	paquetage change (ou est alphanumérique). Voir pacman(8) pour plus d'information concernant la
    comparaison de version.

Fonction build()
       En complément des directives précédentes, le fonction bash build() comprend le reste du PKGBUILD.
       C'est directement lu et exécuté par makepkg, donc tous ce que bash ou le système peut interpréter est
       utilisable ici.  Vérifier que toutes les commandes exotiques sont prises à charge par un des éléments
       de ‘makedepends‘.

       Toutes les variables précédentes comme ‘pkgname‘ et ‘pkgver‘ sont utilisables dans la fonction build.
       En complément, makepkg défini trois variables à utiliser pendant la compilation et l'installation.

       Ces trois variables sont :

       startdir
       Il contient le chemin absolu d'où PKGBUILD est situé, lequel correspond le plus souvent à la
       sortie de ‘$(pwd)‘ quand makepkg est lancé. $startdir est souvent utilisé en combinaison avec
       les suffixes ‘/src‘ et ‘/pkg‘ mais utiliser les variables ‘srcdir‘ et ‘pkgdir‘ est recommandé.

       srcdir
       Cela pointe sur le répertoire où makepkg extrait ou copie les sources.  Autrement dit, c'est un
       alias à ‘$startdir/src‘, cette solution ne sera peut être pas reconnue par toutes les futures
       versions de makepkg.

       pkgdir
       Cela pointe sur le répertoire où makepkg empaquete les paquetages (ce répertoire va devenir le
       répertoire racine dans le paquetage), cette solution ne sera peut être pas reconnue par toutes
       les futures versions de makepkg.
       Si vous créez vos propres variables dans la fonction build, il est recommandé d'utiliser un mot-clé
       bash ‘local‘ limité à la fonction build.

SCRIPT D'INSTALLATION / MISE A JOUR / SUPPRESSION
       Pacman a la faculté de conserver et d'exécuter des scripts spécifiques par paquetage quand il
       installe, désinstalle ou met à jour un paquetage. Cela permet au paquetage de se configurer tout seul
       après l'installation et de faire exactement le contraire lors de sa désinstallation.

       La manière dont s'exécute chaque opération dépends de chaque opération :

       pre_install
       script lancé avant l'extraction des fichiers. Un argument est passé : nouvelle version du
       paquetage.

       post_install
       script lancé après l'extraction des fichiers. Un argument est passé : nouvelle version du
       paquetage.

       pre_upgrade
       script lancé avant l'extraction des fichiers. Deux arguments sont passé : nouvelle version du
       paquetage, version ancienne du paquetage.

       post_upgrade
       script lancé après l'extraction des fichiers. Un argument est passé : ancienne version du
       paquetage.

       pre_remove
       script lancé avant la suppression des fichiers. Un argument est passé : ancienne version du
       paquetage.

       post_remove
       script lancé après la suppression des fichiers. Un argument est passé : ancienne version du
       paquetage.
       Pour utiliser cette option, vous devez créer un fichier pkgname.install et mettez le dans le même
       répertoire que le script PKGBUILD. Utilisez la variable install :


       install=pkgname.install
       Le script install n'a pas besoin d'être spécifié dans le champ source. Un modèle de fichier install
       est disponible dans l'arborescence ABS (/var/abs/install.proto).


DIRECTIVES DE DEVELOPPEMENT
       makepkg supporte la compilation des versions de développement des paquetages sans avoir à modifier
       manuellement le PKGBUILD. Cela est utilisé avec un utilitaire du nom de versionpkg. Pour utiliser ces
       fonctionnalités, votre PKGBUILD doit avoir les noms de variables correct selon le 'SCM' présenté ci-
       dessous.

       CVS
       Le pkgver devra être la date de compilation du paquetage.

       _cvsroot
           La racine du dépôt CVS.

       _cvsmod
           Le module CVS à chercher.

       SVN
       Le pkgver sera le dernier numéro de révision de SVN.

       _svntrunk
           Le tronc du dépôt SVN.

       _svnmod
           Le module SVN à chercher.

       Git
       Le pkgver sera celui formatté par la commande git-describe avec la conversion du caractère - en _

       _gitroot
           L'URL du dépôt GIT (tout les protocoles sont supportés.

       _gitname
           Branche ou Tag de GIT à utiliser.

       Mercurial
       Le pkgver sera le numéro de révision de hg tip.

       _hgroot
           L'URL du dépôt mercurial.

       _hgrepo
           Le dépôt à suivre.

       Darcs
       Le pkgver sera la date du compilation du paquetage.

       _darcstrunk
           URL du dépôt du tronc.

       _darcsmod
           Module Darcs a utiliser.

       Bazaar
       Le pkgver sera le dernier numéro de version de révision de Bazaar (revno).

       _bzrtrunk
           URL du dépôt bazaar.

       _bzrmod
           Module bazaar à utiliser.

EXEMPLE
       L'exemple suivant de PKGBUILD pour le paquetage patch. Pour plus d'exemple, regardez les fichiers de
       compilation de votre distribution. Pour les utilisateurs de Arch linux, regardez dans l'arborescence
       ABS.



       # Maintainer: Joe User <joe.user@example.com>

       pkgname=patch
       pkgver=2.5.4
       pkgrel=3
       pkgdesc="A utility to apply patch files to original sources"
       arch=(i686 x86_64)
       url="http://www.gnu.org/software/patch/patch.html"
       license=(´GPL´)
       groups=(´base-devel´)
       depends=(´glibc´ ´ed´)
       source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz)
       md5sums=(´ee5ae84d115f051d87fcaaef3b4ae782´)

       build() {
         cd $startdir/src/$pkgname-$pkgver
         ./configure --prefix=/usr
         make || return 1
         make prefix=$startdir/pkg/usr install
       }


VOIR AUSSI
	   makepkg(8), pacman(8), makepkg.conf(5)

       Voir le site de pacman http://www.archlinux.org/pacman pour les informations récentes sur pacman et
       des outils annexes.


AUTEURS
       Mainteneurs actuels :

       ·   Dan McGee <dan@archlinux.org>

       ·   Xavier Chantry <shiningxc@gmail.org>

       ·   Aaron Griffin <aaron@archlinux.org>

       Anciens contributeurs :

       ·   Judd Vinet <jvinet@zeroflux.org>

       ·   Aurelien Foret <aurelien@archlinux.org>
       Voir le fichier AUTHORS pour les autres contributeurs.

TRADUCTION
       L'équipe de Archlinux.fr : http://www.archlinux.fr
       Marc Poiroud <marci1@archlinux.fr>, 2008-03-28

AVERTISSEMENT SUR LA TRADUCTION
       Il est possible que cette traduction soit imparfaite ou périmée. En cas de doute, veuillez vous
       reporter au document original en langue anglaise fourni avec le programme.



Pacman 3.2.0                     2008-08-09                  PKGBUILD(5)