Créer un paquet rpm¶
Références¶
Première création¶
Créer un utilisateur dédié :
$ su - # useradd builder # passwd builder
Installer les paquets nécessaires
# yum install rpmdevtools yum-utils
Sur une Mageia
# urpmi bzr python-paramiko qt5-devel gcc-c++ qtwebkit5-devel
Création l'environnement de développement
$ rpmdev-setuptree
Editer le fichier .rpmmacros. Par exmple :
%vendor BLAG %packager Biot C %dist .blag %fedora 140K %_signature gpg %_gpg_name Cyrille %_gpg_path %(echo $HOME)/.gnupg
Générer une clef GPG pour la signature de vos RPMs
$ gpg --gen-key
Exporter votre clé publique afin de la communiquer à vos utilisateurs :
$ gpg --export --armor >RPM-GPG-KEY-votrenom
Il est aussi utile de l'importer sur votre système afin de pouvoir vérifier votre propres RPM :
$ su - # rpm --import ~builder/RPM-GPG-KEY-votrenom
Mon premier RPM
Générer un fichier SPEC¶
$ cd rpmbuild/SPECS/ $ rpmdev-newspec abuledu-suites.spec
Un fichier à la structure suivante va être créé
Name: nom_du_spec Version: Release: 1%{?dist} Summary: Group: License: URL: Source0: BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: Requires: %description %prep %setup -q %build %configure make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) %doc %changelog
Le renseigner.
Pour les logiciels du Terrier reposant sur Tcl/Tk, pas de compilation nécessaire. Donc fichier "assez simple" :
- Créer un exécutable sous /usr/bin
- Créer l'arborescence du projet sous /usr/share
(on peut trouver cette arborescence depuis les paquets DEBIAN déjà construits: "c'est ici" : http://apt.ryxeo.com/index.php?archive=leterrier&dist=dapper )
Name: abuledu-suites Version: 2.0.0 Release: 1%{?dist} Summary: Logiciel pour la decouverte des suites numeriques. Packager: Cyrille <cyrille@cbiot.fr> Vendor: Blag User Group: Education License: GPL URL: http://www.abuledu.org/leterrier/suites Source0: %{name}-%{version}.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-buildroot BuildArch: noarch #BuildRequires: Requires: tcl Requires: tk Requires: tkimg %description Maintainer: Eric Seigne <erics@rycks.com> Description: Suites, Logiciel pour la decouverte des suites numeriques. Suites est un logiciel educatif utilisable en GS, CP et CE1 Ce logiciel est un des nombreux logiciels du terrier d'AbulEdu: pour plus de details n'hesitez pas a consulter le site web suivant www.abuledu.org/leterrier/ Contacts : D Lucardi F Audirac dev@abuledu.org %prep %setup -q %build %install %{__rm} -rf $RPM_BUILD_ROOT %{__mkdir_p} $RPM_BUILD_ROOT install -d -m 0775 %buildroot mv * %buildroot %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) %attr(0755, root, root) %{_bindir}/suites %dir %{_datadir}/abuledu-suites/ChangeLog %dir %{_datadir}/abuledu-suites/* %dir %{_datadir}/abuledu-suites/aide/*.* %dir %{_datadir}/abuledu-suites/data/*.* %exclude %{_datadir}/abuledu-suites/suites/log/tmp.htm %dir %{_datadir}/abuledu-suites/sysdata/*.* %dir %{_datadir}/menu/abuledu-suites %dir %{_datadir}/pixmaps/abuledu-suites.png %dir %{_datadir}/abuledu-suites/msgs/fr.msg %dir %{_datadir}/abuledu-suites/reglages/repert.conf %dir %{_datadir}/applications/abuledu-suites.desktop %doc %{_datadir}/doc/abuledu-suites/aide/*.* %doc %{_datadir}/doc/abuledu-suites/copyright %doc %{_datadir}/doc/abuledu-suites/readme %changelog * Fri Feb 25 2011 Cyrille Biot <cyrille@cbiot.fr> 2.0.0-1 - First build RPM of Abuledu-suites for Blaggers ! - Should work without any problems for F14
Enfin on peut générer son RPM :
rpmbuild -ba /home/builder/rpmbuild/SPEC/abuledu-suites.spec
Avec la sortie suivante
Vérification des fichiers non empaquetés: /usr/lib/rpm/check-files /home/makerpm/rpmbuild/BUILDROOT/abuledu-suites-2.0.0-1.blag.x86_64 Ecrit: /home/makerpm/rpmbuild/SRPMS/abuledu-suites-2.0.0-1.blag.src.rpm Ecrit: /home/makerpm/rpmbuild/RPMS/noarch/abuledu-suites-2.0.0-1.blag.noarch.rpm Exécution_de(%clean): /bin/sh -e /var/tmp/rpm-tmp.kDTtmf + umask 022 + cd /home/makerpm/rpmbuild/BUILD + cd abuledu-suites-2.0.0 + rm -rf /home/makerpm/rpmbuild/BUILDROOT/abuledu-suites-2.0.0-1.blag.x86_64 + exit 0Les paquets construits sont donc situés
- rpmbuild/SRPMS/abuledu-suites-2.0.0-1.blag.src.rpm
- rpmbuild/RPMS/noarch/abuledu-suites-2.0.0-1.blag.noarch.rpm
Chrooté l'environnement¶
Pour plus de sécurité et pour vérifier que toutes les dépendances soient bien satisfaites, utiliser mock
yum install mock
Votre user doit faire partie du groupe mock
# usermod -G mock -a builder
Lancer mock (attention le premier lancement est toujours long (le temps de télécharger l'environnement)).
On lance mock sur le fichier SOURCE : src.rpm
La version de blag/fedora disponible :
ls /etc/mock/
$ mock -r "version-de-blag/fedora" rebuild fichier.src.rpm
Mock perment également de générer des RPMs 32 bit depuis une plate-forme 64bit :
$ setarch i686 mock -r "version-de-blag/fedora 32bit" --arch i686 rebuild fichier.src.rpm
Les paquets contruits sont disponibles dans /var/lib/mock/version-de-blag/fedora/result/
Signer vos RPMs¶
Signer : $ rpmsign --addsign VotreFichierASigner
Vérifier : $ rpmsign --checksig VotreFichierASigner
Importer une clef publique : $ rpm --import leFichierPublicDeClef
Lister les clefs du système : $ rpm -qa gpg-pubkey*