Projet

Général

Profil

Créer un paquet rpm

Références

  1. Environnement de construction RPM
  2. La création de RPM pour les nuls
  3. How to create An RPM package

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 0

Les 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*

Redmine Appliance - Powered by TurnKey Linux