Table des matières

le PKGBUILD

Le PKGBUILD est la recette de cuisine permettant de créer un package. Le PKGBUILD est un fichier texte utilisé par makepkg pour compiler les sources d'une archive en binaire installable simplement par pacman.

Pré-requis

Pour réaliser un PKGBUILD, vous devrez connaître les rouages de la compilation et l'édition de fichier texte.

Qu'est ce qu'un PKGBUILD et que contient-il ?

Un PKGBUILD est un fichier qui contient les informations sur un package. C'est un fichier au format texte. En voici un exemple :

# $Id: PKGBUILD,v 1.12 2003/11/06 08:26:13 dorphell Exp $
# Maintainer: judd <jvinet@zeroflux.org>
# Contributor: Judd Vinet <jvinet@zeroflux.org>
pkgname=foo
pkgver=0.99 # note: if the pkgver had been '0.99-10' then use an underscore. like '0.99_10'
pkgrel=1
pkgdesc="short description of foo"
arch=(i686 x86_64)
url="http://www.foo.org"
license=('GPL')
groups=
provides=
depends=('qt' 'python')
makedepends=('guile')
conflicts=('yafoo')
replaces=('mffoo')
backup=('etc/foo/foo.conf')
install=('foo.install')
source=(http://www.foo.org/download/$pkgname-$pkgver.tar.gz)
md5sums=('2c0cca3ef6330a187c6ef4fe41ecaa4d35175bee593a7cc7d6205584a94d8625')
 
build() {
  cd $startdir/src/$pkgname-$pkgver
  ./configure --prefix=/usr
  make || return 1
  make prefix=$startdir/pkg/usr install
}

Analysons chaque champ :

Expliquons les fonctions contenus dans le PKGBUILD :

Avec tout cela, vous êtes déjà en mesure de créer vos propres paquets. Le PKGBUILD est la base de tout paquet. Il existe aussi des fichiers d'installation. En voici un exemple:

post_install() {
/bin/true
}
 
post_upgrade() {
/bin/true
}
 
pre_remove() {
/bin/true
}
 
op=$1
shift
 
$op "$@"


La fonction de construction : build

Si vous n'êtes pas familier avec la compilation d'un programme, sachez que la plus part d'entre eux se construisent de la façon suivante :

  1. Récupération des sources :
    wget http://www.foo.org/download/foo-0.99.tar.gz
  2. Décompression :
    tar zxf foo-0.99.tar.gz && cd foo-0.99
  3. Configuration :
    ./configure [options]

    Si vous ne connaissez pas les options, ou que vous avez un doute, n'hésitez pas à utiliser l'aide : ./configure –help.

  4. Compilation :
    make
  5. Installation :
    make install

Si vous avez le moindre doute, n'hésitez pas à lire le fichier INSTALL ou README.

Jettons donc un oeil à la fonction build

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

On a supposé que le répertoire des sources était src/$pkgname-$pkgver, ce qui n'est pas toujours le cas, cela peut-être src/$pkgname. ./configure –prefix=/usr permet d'indiquer que le répertoire d'installation devra être /usr.

make || return 1

permet de compiler le programme ou de sortir avec le code 1 en cas d'erreur. Et enfin,

 make prefix=$startdir/pkg/usr install

permet d'installer le programme. Il faut noter que cette partie ce déroule dans un environnement fakeroot, qui simule les droits de root dans une racine située dans $startdir. Ceci permet donc de copier les fichiers dans le répertoire $startdir/pkg. Le contenu de ce répertoire servira ensuite à créer le fichier foo-0.99-1.pkg.tar.gz Pour installer un tel paquet, il suffira de faire

pacman -U foo-0.99-1.pkg.tar.gz

1)

Je vous recommande vivement de créer un répertoire distinct pour chaque paquet que vous créez localement dans /var/abs/local

Que contient un package

Un package est un fichier (e.g. toto.pkg.tar.gz). Ce fichier n'est ni plus ni moins qu'une archive contenant


Page traduite depuis http://wiki.archlinux.org/index.php/ABS_-_The_Arch_Build_System

En savoir d'avantage

Crédit

vincentxavier 26/11/2006 19:02

1)
sed s/pacman/yaourt/