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)