Créer un package pour Archlinux

Alors avant-hier j'ai participé à un atelier sur Jabber concernant la production de paquet pour la distribution linux Archlinux. J'ai pu ainsi me rendre compte que pour quiconque comprend tout ce qui est dépendance et compilation, peut générer facilement un paquet pour Archlinux. Je vais effectuer un résumé/Howto de ce qui a été dit et montrer un exemple simple de création de paquet. En effet avec un unique fichier on peut générer un paquet Archlinux, il s'agit du fichier PKGBUILD, parfois associé a un fichier secondaire "nom_paquet.install" pour affiner les installations (post ou pré traitement par exemple).

Voici ce que contient le prototype d'un fichier PKGBUILD :

# Contributor: Your Name 
pkgname=NAME                        => nom du logiciel qu'on va packager
pkgver=VERSION                       => la version du logiciel
pkgrel=1                                   => la release du paquet 
pkgdesc=""                                => description sur la fonction du logiciel
arch=()                                     => architecture pour laquelle est destinée le paquet (i686 ou x86_64)
url=""                                        => permet d'indiquet la page officielle du logiciel
license=('GPL')                           => la license sous laquelle est distribuée le logiciel (ou lesquelles)
depends=()                               => les dépendances, par exemple gtk2
makedepends=()                       => ici ce sont les dépendances pour générer le paquet, autoconf, automake par exemple
provides=()                               => optionnel : le service que fournit le paquet, ex : fcron, dcron fournisse le service cron
conflicts=()                               => indique un paquet avec lequel celui entre en conflit, et interdit du coup son installation
replaces=()                               => principalement utilisé lorsqu'un paquet change de nom, ex : gaim devenu pidgin
backup=()
install=                                     => indique si on utilise un fichier .install, pour permettre des traitements pre/post install/upgrade (sauvegarde de fichier de configuration par ex)
source=($pkgname-$pkgver.tar.gz)        => ou récupérer le logiciel, http://toto.com/monlogiciel/$pkgname-$pkgversion.tar.gz par ex
noextract=()
md5sums=(generate with makepkg -g)  => checksum md5 du paquet téléchargé à la source citée ci dessus

build() {
  cd $startdir/src/$pkgname-$pkgver
  ./configure --prefix=/usr
  make || return 1
  make DESTDIR=$startdir/pkg install
}                                            => enfin indique comment installer le logiciel et les options de compilation, dans 90% des cas il s'agit du célèbre trio ./configure && make && make install

La plupart des termes sont explicites et était compréhensif sans avoir besoin d'ajouter un commentaire. On va prendre pour exemple le logiciel homebank et créer le fameux fichier PKGBUILD. En suivant le prototype ci-dessus notre fichier PKGBUILD ressemble à ca :

# Contributor: David Dupin 
pkgname=homebank
pkgver=3.3
pkgrel=1
pkgdesc="Help to manager personal accounts"
arch=('i686')
url="http://homebank.free.fr"
license=('GPL')
depends=('gtk2>=2.10')
makedepends=()
provides=()
conflicts=()
replaces=()
backup=()
install=
#source=($pkgname-$pkgver.tar.gz)
source=(http://homebank.free.fr/public/$pkgname-$pkgver.tar.gz)
noextract=()
md5sums=('b22bbf72837663f2d1181929043c3f0c')

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

Voila j'ai supprimé les lignes inutiles afin de simplifier la compréhension, on retrouve le minimum vital pour générer un paquet pour Archlinux. Créer un répertoire d'accueil (par ex : /home/<monuser>/pkgbuild/) et ajouter le PKGBUILD ci-dessus. Placer vous dans ce répertoire et taper "makepkg -o", vous aller voir que makepkg télécharge les sources de notre logiciel homebank, et décompresse ces sources dans le sous répertoire "src". Si on exécute maintenant makepkg, on génère notre paquet Archlinux. Et voila un paquet valide pour le logiciel homebank et prêt à tester.

Je ferais peut être un jour un article sur l'utilisation du fichier <nom_package>.install quand j'aurais expérimenté son utilisation.

Quelques liens intéressant concernant cet article :

Site officiel de la distribution Archlinux

Communauté francophone sur la distribution Archlinux

Règles concernant le dépôt de paquet sur AUR

Règles à respecter lors de la génération d'un paquet

Site répertoriant plein de logiciel packager par la communauté Archlinux

Vus : 573
Publié par David Dup : 20