Empaqueter

De Wiki de la communauté Mandriva.

Empaqueter consiste à créer un RPM à partir des sources d'un logiciel. Ainsi, le RPM est directement installable sur un système Mandriva Linux sans avoir besoin de compiler les sources. Attention : même si le format RPM est utilisé par plusieurs distributions, un RPM est conçu pour une distribution particulière et une version particulière de cette distribution.

Sommaire

Contenu d'un RPM

Pour simplifier, un RPM contient l'ensemble des fichiers binaires (c'est-à-dire qu'il ne contient pas les sources) et indique les dépendances du logiciel.

Ce qu'on appelle « dépendance », c'est l'ensemble des librairies et des autres logiciels nécessaires au bon fonctionnement du logiciel que l'on souhaite empaqueter.

Fonctionnement du logiciel qui créée les paquets

Pour empaqueter, le logiciel rpm (car c'est lui qu'on utilise) a besoin des sources du logiciel et d'un fichier qui décrit comment compiler ces sources. Ce fichier est appelé fichier "SPEC". De manière optionnelle, on peut rajouter aussi un certain nombre de patchs et inclure dans le SPEC des scripts qui seront exécutés avant ou après l'installation.

Le logiciel rpm utilisera aussi des "macros" qui sont spécifiques à Mandriva et qui permettent de simplifier un fichier SPEC en remplaçant plusieurs commandes par une seule. Ces macros devront aussi être installées.

Mandriva et l'empaquetage

Mandriva dispose d'une version de développement baptisée "cooker" dans laquelle tous les nouveaux paquets vont. Cela permet de tester que le paquet se conforme à quelques exigences de base et la base des utilisateurs cooker sera en mesure de tester le paquet et de faire des rapports de bugs. Á une date prédéfinie à l'avance, on décide de geler cooker : cela signifie qu'à partir de ce moment là, seuls les corrections de bug sont acceptés. Cette date précède de quelques jours la sortie d'une nouvelle version de Mandriva Linux.

Chaque paquet dispose d'un "mainteneur" qui est en charge de mettre le paquet à jour (mais pas forcément de le tester et de l'utiliser). Il peut parfois être différent de "l'empaqueteur", c'est à dire que ce dernier réalise le paquet mais ne le maintient pas à jour et délègue ce rôle au mainteneur.

Quelques paquets peuvent aussi aller vers la distribution stable mais les règles sont plus strictes et les types de paquets bien définis :

  • Les mises à jour officielles vont dans le répertoire "update". Pour qu'un paquet aille dans ce dépôt, il doit résoudre un bug précis et uniquement ce bug. La résolution du bug doit avoir été confirmée par une personne externe à Mandriva et par l'équipe interne "QA". De plus un "advisory" qui indique précisément ce qui a été mis à jour doit être rédigé par le mainteneur du paquet.
  • Les paquets de "test" sont des paquets qui sont en attente d'être testé par quelqu'un d'externe à Mandriva avant de passer dans "update".
  • Les "backports" sont des paquets qui ont été testés sur cooker et compilés sur la version stable. Ils apportent généralement des améliorations intéressantes. Néanmoins, ces paquets n'ont pas été testés sur la version stable, donc il existe un risque (même si assez faible) que ce paquet introduise un bug. Généralement, cette source n'est pas conseillée pour les serveurs, mais est acceptable pour les ordinateurs de bureau.

Mise en place de l'environnement pour empaqueter

C'est décidé, vous voulez vous lancer et construire votre propre paquet ? Entraînez-vous d'abord à construire et utiliser vos paquets, puis quand vous serez suffisamment à l'aise, vous pourrez les soumettre sur la liste de diffusion "cooker" afin que vos paquets soient inclus dans la version de développement (et donc dans la future version stable).

Pour construire des paquets, vous avez besoin des logiciels suivant :

  • rpm (qui est installé par défaut)
  • rpm-build qui contient les scripts utilisé pour construire les paquetages

Pour construire des paquets, rpm a besoin d'une arborescence particulière dans votre répertoire de travail. Vous pouvez créer cette arborescence avec la commande suivante (remplacer $ARCH par l'architecture pour laquelle vous voulez construire des paquets ce qui est généralement i586, mais peut aussi être x86_64/sparc/alpha/ppc) :

mkdir -p ~/rpm/{BUILD,RPMS/$ARCH,RPMS/noarch,SOURCES,SRPMS,SPECS,tmp}

Attention! Construire des RPM en tant que root est dangereux car les fichiers binaires sont installés sur le système avant d'être empaquetés et vous devez donc empaqueter en tant qu'utilisateur normal pour éviter de polluer votre système.

Vous aurez aussi besoin d'ajouter deux fichiers de configuration dans votre répertoire de travail :

.rpmrc

buildarchtranslate: i386: i586
buildarchtranslate: i486: i586
buildarchtranslate: i586: i586
buildarchtranslate: i686: i586

.rpmmacros

%_topdir                $HOME/rpm
%_tmppath               $HOME/rpm/tmp
%_signature             gpg
%_gpg_name              Mandrivalinux
%_gpg_path              ~/.gnupg
%distribution           Mandriva Linux
%vendor                 Mandriva

Ne laissez pas $HOME ci-dessus : remplacez avec le chemin vers votre répertoire de travail. Ne pas ajouter la variable %packager, afin qu'il soit possible d'avoir une différence entre mainteneur et empaqueteur.

Plus d'information

Il existe un didacticiel sur la construction des RPMs. Vous trouverez aussi d'autres informations sur le wiki anglais : en:Development/Packaging

Autres langues