From Mageia wiki
Jump to: navigation, search


Résumé :
Empaqueter consiste à créer un RPM à partir des sources d'un logiciel. Ainsi, le RPM est directement installable sur un système Mageia 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.

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 à Mageia et qui permettent de simplifier un fichier SPEC en remplaçant plusieurs commandes par une seule. Ces macros devront aussi être installées.

Mageia et l'empaquetage

Mageia dispose d'une version de développement baptisée « Cauldron » 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 cauldron 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 cauldron : 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 Mageia 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.

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 cauldron 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 Mageialinux %_gpg_path ~/.gnupg
%distribution Mageia Linux %vendor Mageia

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'informations

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 à Mageia 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 à Mageia avant de passer dans update.
  • Les backports sont des paquets qui ont été testés sur « cauldron » 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.

Pour aller plus loin

Wiki - Didacticiel sur la construction des RPMs
Youtube - Séminaire de Malo du 07/06/2013