Construire et Modifier un Rpm avec La SME Server

Rien d’un tuto officiel, juste un aide mémoire : toutes les opérations suivantes ont été faites sur une smeserver-8.0-i386

Le paquet e-smith-devtools va nous servir à donner un environnement de construction de rpm à la sme, il est normalement installé de base ainsi que le paquet rpm-build qui va construire l’arborescence des dossiers dans /usr/src/redhat/

mais pour des solution de facilités, nous allons changer l’environnement de build dans le répertoire de root, mais vous pouvez aussi créer un autre utilisateur (penser à lui donner les droits de sudo pour installer les sources et construire les paquets.)

[root@sme8]$ yum install rpm-build
[root@sme8]$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
[root@sme8]$ echo '%_topdir %(echo $HOME)/rpmbuild' >> .rpmmacros
[root@sme8rpm ~]# ls ~/rpmbuild/
BUILD  RPMS  SOURCES  SPECS  SRPMS

pour installer les sources faites en root (normalement cela n’est pas bien de le faire en root, à voir plus tard) remarquez bien que ce n’est un paquet rpm mais un src.rpm

rpm -ivh smeserver-phpbb-2.0.22-2.el5.sme.src.rpm

en faisant cela, les sources vont dans /root/rpmbuild/SOURCES et le fichier .spec dans /root/rpmbuild/SPECS. Tous les patch vont dans le dossier SOURCES

Des liens intéressants concernant la création des Rpm, des patch et leur intégration.

http://paiiou.free.fr/Tuto/Creation/creer_rpm.php#A1

http://eric.gerbier.free.fr/fabrication-rpm-avance.html

Une fois que vous avez installé les sources, vous allez pouvoir travailler et faire des modifications. Mais sur un rpm nous n’intervenons jamais directement sur les sources installées, mais par le biais de patch qui permettent de tracer les modifications faites par chacun. Du coup si vous regardez certains fichiers vous avez une multitude de patchs qui nécessitent d’être raboutés un à un pour pouvoir « diff »er le fichier.

rpmbuild -bp /root/rpmbuild/SPECS/smeserver-phpbb.spec

Après cela vous aurez dans le repertoire BUILD un dossier smeserver-phpbb qui aura tous les patch d’appliqués. il vous faut le copier pour le garder intact afin de « diff »er les différences.

cp -rp smeserver-phpbb smeserver-phpbb.original

à partir de là c’est à vous de jouer et de faire des modifications dans le dossier smeserver-phpbb…(modification et remplacement de fichier, ajout de répertoire….etc)

Une fois que votre modification est faite on va utiliser la commande diff ou le logiciel nautilus-compare (basé sur meld en mode graphique)

diff -Nur smeserver-phpbb.original smeserver-phpbb > /root/rpmbuild/SOURCES/smeserver-phpbb.patch

créer une nouvelle version du rpm, pour cela nous devons modifier fichier .spec

nano /root/rpmbuild/SPECS/smeserver-phpbb.spec
    • incrémenter la version pour éviter les confusions dans %define release
    • rajouter le patch : après les lignes Source:, ajouter une ligne

Patch0: smeserver-phpbb.patch

    • puis rajouter dans la section %prep la ligne

%patch0 -p1

Maintenant que tout ceci est fais, vous avez à construire le nouveau RPM (qui doit être implémenté d’un nouveau numéro de version) par la commande « rpmbuild -ba »

du coup pour construire le rpm faite

rpmbuild -ba /root/rpmbuild/SPECS/smeserver-phpbb.spec

le rpm ira dans l’architecture pour laquelle il doit être construit (information donné dans le .spec) et l’archive smeserver-php.src.rpm nouvellement crée se retrouve dans le dossier SRPMS.

[root@sme8rpm ~]# ls /root/rpmbuild/RPMS/
athlon  geode  i386  i486  i586  i686  noarch
Vus : 604
Publié par Stéphane de Labrusse : 17