Atelier d’apprentissage 1
Devil505 a eu récemment l’idée de créer un salon d’apprentissage pour Frugalware.
Le thème pour ce premier atelier était les bases d’un FrugalBuild et la compilation d’un paquet en utilisant makepkg.
J’ai donc assisté au salon et je vais essayer de transmettre pour les personnes qui ne pouvaient pas être présente et qui souhaite s’essayer à la compilation de paquets.
Pour commencer, on va simplement apprendre à packager (en français, empaqueteur) un paquet, histoire de voir comment ça fonctionne.
Pour packager un paquet, on part d’un script de construction, c’est le fameux FrugalBuild ou plus souvent appelé FB.
Ensuite, on va utiliser l’outil makepkg, ainsi on va pouvoir obtenir un paquet grâce aux infos inscrite sur le FrugalBuild.
Commençons par installer les prés-requis :
Makepkg est dans le paquet pacman-tools, on va donc installer ce paquet. Nous allons donc ouvrir un terminal et se connecter en root. Si vous le souhaiter vous pouvez utiliser sudo. Nous en parlerons un peu plus loin.
pacman -S pacman-tools
Pour continuer, nous allons télécharger une copie du dépôt git de Frugalware aussi appelé FST.
Pour cela, nous allons utiliser repoman, il se trouve dans le paquet pacman-tools, il est donc, déjà installé étant donné que nous avons installer ce paquet pour avoir makepkg. Donc toujours en root :
repoman upd
A noter que pour que cette dernière commande fonctionne, il faut avoir installer au préalable git. Si ce n’est pas fait, installer le paquet git.
On va maintenant analyser un FrugalBuild, nous allons commencer par créer un dossier « exemple » sur notre bureau.
Dans ce dossier, nous allons créer un fichier, on nomme se fichier FrugalBuild, avec les majuscules et sans extension.
Vous allez maintenant l’éditer avec votre éditeur favoris.
Nous allons prendre l’exemple suivant pour analyser un FrugalBuild.
Grsync est une interface graphique à Rsync, rsync est un outil de synchronisation en ligne de commande.
A présent, copiez le contenu du pastebien dans votre fichier FrugalBuild.
Passons à l’analyse de chaque ligne de ce FrugalBuild :
# Compiling Time: 0.03 SBU : Le SBU est une sorte d’unité de temps pour la compilation, il est valable quelque soit la machine.
1 SBU est le temps de compilation du paquet binutils.
# Maintainer: Devil505 : Cette ligne indique tout simplement le mainteneur du paquet, pour notre cas Devil505. Entre « <>« , il faut indiquer l’adresse email du mainteneur.
pkgname=grsync : On indique le nom du paquet, par la suite à la place de réécrire le nom du paquet, on pourra écrire $pkgname. On reprend dans la plupart des cas le nom du fichier source (tarball).
pkgver=1.1.1 : pkgver indique la version du logiciel. Il peut contenir des lettres et des mots. Par contre, il faut éviter de mettre des tirets, il n’aime pas ça.
pkgrel=1 : pkgrel indique la version du paquet. Si on fait une modification pour la même version du logiciel on incrémente le nombre de pkgrel. Cela permet de repérer les bugs d’un paquet rapidement.
pkgdesc= »GTK GUI for rsync » : Pas très compliquer à comprendre, il s’agit de la description du programme du paquet. Il faut essayer de garder une longueur inférieur à 80 caractères.
url= »http://www.opbyte.it/$pkgname » : Il s’agit de l’adresse du projet, à noter que $pkgname à été utiliser afin d’éviter d’écrire grsync.
depends=(…) : Il s’agit des dépendances du paquet. La plupart du temps, elles sont indiqué dans les fichiers README. Les signes supérieurs ou inférieurs seront utilisées pour forcer l’installation d’une dépendance inférieur ou supérieur (en fonction du signe).
makedepends=(‘gettext’ ‘intltool’) : Les makedepends c’est des dépendances qui sont seulement nécessaire à la compilation du logiciel.
options=(‘scriptlet’) : Pour cette ligne obscure, il n’y a pas vraiment d’explication claire. Il faut la mettre lorsqu’il y a du gtk, cairo ou qt3 en dépendance.
groups=(‘xapps-extra’) : groups permet d’indiquer le groupe de paquets. Grsync est une application graphique donc nous la mettrons dans la catégorie « xapps-extra ». En règle générale nous prennons toujours -extra. Pour résumé grossièrement, le groupe extra regroupe ceux qui sont pas sur le premier cd d’installation.
Les groupes principaux c’est vraiment les applications essentiels selon les catégories. Par exemple si on avait libgnome en dépendance, nous aurions mis gnome-extra.
archs=(‘i686′ ‘x86_64′) : archs regroupe les architectures sur lesquels grsync sera compilé. Pour notre cas, 32 bits (i686) et 64 bits (x86_64).
up2date= »Flasttar $url » : up2date c’est une ligne qui sera évaluée par makepkg pour savoir si le programme est à sa dernière version.
Donc on peut mettre une commande qui sera exécutée pour déterminer la dernière version du paquet.
Flasttar c’est un petit script « bonus » qui permet de regarder tous les liens d’un page web et de nous dire si il y a une archive plus récente. Le mainteneur est alors averti par mail si le logiciel qu’il a packager n’est plus à jour.
source=(http://www.opbyte.it/release/$pkgname-$pkgver.tar.gz) : C’est l’adresse de la source. Une fois que makepkg aura passé la vérification de up2date, les sources du paquet seront téléchargés.
sha1sums=(‘aae1be1e609f64a9aebc417f6035495d196faa91′) : C’est tout simplement sha1sum de la source.
# optimization : C’est ajouté automatiquement à la fin de la compilation, elle indique que le tout est optimisé.
Voilà, nous avons fini de décrire le fichier, on va maintenant l’enregistrer et ouvrir un terminal.
Installer sudo si vous ne l’avez pas fait et éditer le fichier /etc/sudoers.
Rajouter la ligne suivant à la fin du fichier en remplaçant « login » par votre nom d’utilisateur.
Cela va nous permettre d’éviter d’avoir à rentrer notre mot de passe à chaque fois que on se servira de makepkg.
login ALL=NOPASSWD:/usr/bin/makepkg
Une fois fait, aller dans le dossier que nous avons créer au début, taper dans un terminal :
sudo makepkg
makepkg va compiler votre paquet dans un environnement chroot. Après la compilation le chroot sera nettoyé. Il peut mettre plus ou moins longtemps en fonction de votre ordinateur.
Une fois que makepkg a fini, vous devriez trouver un fichier .fpm dans le dossier.
Par exemple, pour mon cas, j’ai le fichier « grsync-1.1.1-1-x86_64.fpm ».
Félicitation, vous avez donc réussit à créer votre premier FrugalBuild !
Si jamais vous souhaitez installer votre paquet, il vous suffit de faire en root :
pacman -U nom.fpm
Voilà rendez vous pour le prochain atelier. Si vous avez des questions, n’hésitez pas.