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