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 Namepkgname=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 Dupinpkgname=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