SLKBUILD, le SlackBuild pour les nuls
[Slkbuild] est un outil dont le but est de simplifier la construction d'un paquet destiné aux systèmes d'exploitation [Slackware] et dérivés.
La manière habituelle de réaliser un paquet Slackware est d'écrire un script shell, plus communément appelé [slackbuild] (monbopaquet.SlackBuild).
Le contenu de ce slackbuild est très répétitif, il doit se charger de :
- déterminer l'architecture sur laquelle pourra s'installer le paquet
- la mise en place de la documentation au bon endroit (/usr/doc/)
- la mise en place des pages man ou info au bon endroit (/usr/man....)
- la compression de ces pages man/info
- le nettoyage des fichiers/dossiers dans le répertoire de compilation
- garder une trace (log) du processus
- la gestions des droits et permissions des fichiers et répertoires
- la gestion des fichiers de configuration pour les mises à jour (.new)
- la gestion des icônes/fichiers .desktop...
- le stripping des binaires
- et ... la fabrication du dit paquet
L'utilisation d'un squelette, d'un slackbuild modèle peut également se faire, mais il est vrai qu'à la fin toutes ces tâches redondantes sont un peu parasites et font perdre du temps. Car, ce qui nous intéresse n'est autre que ce qui est nécessaire à la compilation, à la fabrication du programme. Le tout a donc été automatisé un peu (beaucoup) à la manière d' [ArchLinux], Slkbuild est d'ailleurs très fortement inspiré de *makepkg* utilisé par cette dernière.
Les avantages à utiliser *slkbuild* sont nombreux, on peut citer :
- la conformité du paquet est assurée (vérification slack-desc, .desktop,...))
- copie des sources de fabrication (slkbuild, patchs, ...) dans/usr/src/monbopaquet-1.0
- gestion des flags de compilation automatique en fonction de l'architecture
- l'édition du script est très aisée
- le processus de fabrication du paquet est plus rapide
Typiquement, pour créer facilement un paquet :
,----
| $ mkdir monbopaquet-1.0
| $ cd monbopaquet
| $ slkbuild -g # vous obtenez un SLKBUILD modèle pour compilation standard (existe aussi en gpython/gperl ...)
| $ vim SLKBUILD
`----
,----
| #Packager: fredg
| pkgname=monbopaquet
| pkgver=1.0
| pkgrel=1fg
| #arch=noarch
| source=(http://ou/se/trouve/$pkgname-$pkgver.tar.gz)
| sourcetemplate=http://people.salixos.org/fredg/packages/$pkgname/$pkgver/
| docs=("readme" "install" "copying" "changelog" "authors" "news" "todo")
| url=http://maisondupaquet.fr
| #dotnew=() # pour gestion des fichiers de configuration .new, laisser tel que si gestion classique
| #CFLAGS= # si vous souhaitez autre chose que les options standard de Slackware
| #CXXFLAGS= # idem
| #doinst() {
| # écriture du doinst.sh si nécessaire (à décommenter)
| #}
| slackdesc=\
| (
| #|-----handy-ruler------------------------------------------------------|
| "écriture de votre slack-desc"
| )
| build() {
| cd $startdir/src/$pkgname-$pkgver
| ./configure --prefix=/usr --libdir=/usr/lib${LIBDIRSUFFIX} --localstatedir=/var --sysconfdir=/etc --build=$arch-slackware-linux
| make -j $numjobs || return 1
| make install DESTDIR=$startdir/pkg
| #
| # si paquet traditionnel, rien à faire
| }
| :wq # quitte vim ;)
| --
| $ fakeroot slkbuild -X
| $ ls
| $ SLKBUILD monbopaquet-0.1.tar.gz monbopaquet-0.1-x86_64-1fg.txz
| monbopaquet-0.1-x86_64-1fg.md5 monbopaquet-0.1-x86_64-1fg.src
| build-monbopaquet-0.1-x86_64-1fg.log
| $ su # on passe root
| # installpkg monbopaquet-0.1-x86_64-1fg.txz # et voilà
`----
Slkbuild est utilisé activement par Salix OS qui est, je le rappelle, totalement compatible avec Slackware, les dépôts sont les mêmes. Vous pouvez voir ceux de Salix comme un [extra]. De nombreux exemples de SLKBUILD sont disponibles, par exemple sur le [répertoire des sources de la version -current].
répertoire des sources de la version -current
Quelques liens
http://slkbuild.sourceforge.net/