TODO : http://blog.christophersmart.com/2013/06/12/how-to-list-packages-you-have-explicitly-installed-using-yum/
Prérequis
Sources :
J’utilise un nspawn CentOS 5 comme environnement de compilation.
Installation de EPEL (version 5 car j’utilise une CentOS 5)
root@testhost # wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
root@testhost # rpm -Uvh epel-release-5*.rpm
Respectivement, installation des prérequis pour la création de paquet en général
root@testhost # yum install rpm-build yum-utils sudo
redhat-rpm-config à peut-être aussi besoin d’être installé (à vérifier).
Si vous voulez utiliser rpmdev-setuptree, il faut installer rpmdevtools.
Création de l’utilisateur de compilation et ouverture de sa session
root@testhost # useradd -u 1000 -g users -G sudo -m builder
root@testhost # passwd builder
root@testhost # su - builder
Création de l’environnement générique de compilation, soit avec rpmdev-setuptree (complet), soit à la main (quick & durty).
rpmdev-setuptree
builder@testhost % rpmdev-setuptree
La commande a dû créer un répertoire ~/rpmbuild et un fichier .rpmmacros dont le contenu est à modifier
%_topdir %(echo $HOME)/rpmbuild
%_smp_mflags -j3
%__arch_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot
%vendor moi
%packager Maxime de Roucy
%dist .el5
%_smp_mflagsindique le nombre de processus de compilation%__arch_install_postpermet de lancer certain test pour vérifier que le paquet est bien conforme au standard fedora. Cette instruction peut poser problème avec les paquet mal fait. Si vous rencontrez des erreurs essayez de commenter cette ligne.%distla distribution de destination (el5 : CentOS 5 – RedHat Entreprise Linux 5)
à la main
TODO: à vérifier (cf. “Extraire un paquet .src.rpm”)
builder@testhost % echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
Et c’est tout, rpm -ivh … se chargera de créer le dossier.
Rebuild d’un paquet existant
Sources :
Téléchargement du paquet source (ici redis)
builder@testhost % yumdownloader --source redis
Installation des dépendances pour la création de notre paquet en particulier
builder@testhost % sudo yum-builddep …rpm -y
Compilation du paquet sans modification préalable :
builder@testhost % rpmbuild --rebuild …src.rpm
Si vous voulez modifier certains fichier avant de lancer la compilation vous devez d’abord extraire …src.rpm dans ~/rpmbuild
builder@testhost % rpm -ivh …src.rpm
… modification des fichiers de config du rpm …
builder@testhost % rpmbuild -bp …src.rpm
… modification des fichiers source du logiciel packagé …
builder@testhost % rpmbuild -ba rpmbuild/SPECS/*.spec
L’option -bp permet d’executer la phase de préparation (unpack des sources, application des patchs…).
L’option -ba permet de généré les rpm binaires et sources.
Voir le man de rpmbuild pour les autres options.
Le paquet va être créé dans le dossier ~builder/rpmbuild/RPMS/x86_64/.
problème de signature
Si vous avez un problème de signature lors de l’extraction de …src.rpm vous pouvez essayer de supprimer les signatures du fichier
builder@testhost % rpm --delsign …src.rpm
installation
Pour installer le rpm généré vous pouvez utiliser directement yum :
root@testhost # yum install …rpm --nogpgcheck
Extraire un paquet .src.rpm
TODO: à vérifier (cf prerequis → à la main)
Pour extraire simplement un paquet source j’utilise la commande suivante (il n’y a aucun prérequis) :
builder@testhost % rpm -ivh …src.rpm
Elle extrait le rpm dans le dossier rpmbuild (créé s’il n’existe pas).