**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.** # How to create an RPM package Inspiré de Installation de tous les outils liés à la compilation. ~~~ # yum install @development-tools fedora-packager ~~~ Création d'un utilisateur spécifié, dédié à la création de paquet. ~~~ # /usr/sbin/useradd makerpm # passwd makerpm ~~~ Une fois loggué avec cet utilisateur, mettre en place de l'environnement de création de paquets : ~~~ $ rpmdev-setuptree ~~~ Arbo : ~~~ . |-- BUILD |-- RPMS |-- SOURCES |-- SPECS `-- SRPMS ~~~ Fichier SPECS d'exemple : ~~~ Summary: A program that ejects removable media using software control Name: eject Version: 2.1.5 Release: 21%{?dist} License: GPLv2+ Group: System Environment/Base Source: %{name}-%{version}.tar.gz Patch1: eject-2.1.1-verbose.patch Patch2: eject-timeout.patch Patch3: eject-2.1.5-opendevice.patch Patch4: eject-2.1.5-spaces.patch Patch5: eject-2.1.5-lock.patch Patch6: eject-2.1.5-umount.patch URL: ExcludeArch: s390 s390x BuildRequires: gettext BuildRequires: libtool %description The eject program allows the user to eject removable media (typically CD-ROMs, floppy disks or Iomega Jaz or Zip disks) using software control. Eject can also control some multi-disk CD changers and even some devices' auto-eject features. Install eject if you'd like to eject removable media using software control. %prep %setup -q -n %{name} %patch1 -p1 %patch2 -p1 %patch3 -p1 %patch4 -p1 %patch5 -p1 %patch6 -p1 %build %configure make %{?_smp_mflags} %install make DESTDIR=%{buildroot} install install -m 755 -d %{buildroot}/%{_sbindir} ln -s ../bin/eject %{buildroot}/%{_sbindir} %find_lang %{name} %files -f %{name}.lang %doc README TODO COPYING ChangeLog %{_bindir}/* %{_sbindir}/* %{_mandir}/man1/* %changelog * Tue Feb 08 2011 Fedora Release Engineering - 2.1.5-21 - Rebuilt for * Fri Jul 02 2010 Kamil Dudka 2.1.5-20 - handle multi-partition devices with spaces in mount points properly (#608502) ~~~ On peut aussi générer un pseudo template en indiquant le nom du soft : ~~~ cd ~/rpmbuild/SPECS rpmdev-newspec python-antigravity vi python-antigravity.spec ~~~ Une fois le fichier de spec créer, le tester : ~~~ rpmlint program.spec ~~~ Si tout est OK, copier le fichier source (souvent un tar.gz en upstream) dans ~/rpmbuild/SOURCES/ Enfin pour créer le paqet : ~~~ rpmbuild -ba program.spec ~~~ Exemple avec nfdump pour le projet nagios-rt : ~~~ Name: nfdump Version: 1.6.6 Release: 1%{?dist} Summary: nfdump is a set of tools to collect and process netflow data Group: Applications/Internet License: BSD License URL: Source0: BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: flex,bison,byacc,rrdtool-devel %description nfdump is a set of tools to collect and process netflow data. It's fast and has a powerful filter pcap like syntax. It supports netflow versions v1, v5, v7 and v9 as well as a limited set of sflow and is IPv6 compatible. IPFIX is supported in beta state. For CISCO ASA devices, which export Netflow Security Event Loging (NSEL) records, please use nfdump-1.5.8-2-NSEL. %prep %setup -q %build ./configure --prefix=/usr --enable-nfprofile make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT %clean rm -rf $RPM_BUILD_ROOT %files %{_bindir}/* %{_mandir}/* %defattr(-,root,root,-) %doc %changelog ~~~ ~~~ [makerpm@centos58 SPECS]$ rpmbuild -ba nfdump.spec Exécution_de(%prep): /bin/sh -e /var/tmp/rpm-tmp.19407 + umask 022 + cd /home/makerpm/rpmbuild/BUILD + LANG=C + export LANG + unset DISPLAY + cd /home/makerpm/rpmbuild/BUILD + rm -rf nfdump-1.6.6 + /bin/gzip -dc /home/makerpm/rpmbuild/SOURCES/nfdump-1.6.6.tar.gz + tar -xf - + STATUS=0 + '[' 0 -ne 0 ']' + cd nfdump-1.6.6 ++ /usr/bin/id -u + '[' 501 = 0 ']' ++ /usr/bin/id -u + '[' 501 = 0 ']' + /bin/chmod -Rf a+rX,u+w,g-w,o-w . + exit 0 Exécution_de(%build): /bin/sh -e /var/tmp/rpm-tmp.19407 + umask 022 + cd /home/makerpm/rpmbuild/BUILD + cd nfdump-1.6.6 + LANG=C + export LANG + unset DISPLAY + ./configure --prefix=/usr --enable-nfprofile checking for a BSD-compatible install... /usr/bin/install -c [...] configure: creating ./config.status config.status: creating Makefile config.status: creating bin/Makefile config.status: creating man/Makefile config.status: creating config.h config.status: executing depfiles commands * Many thanks for using nfdump tools * You may want to subscribe to the nfdump-discuss and/or * nfsen-discuss mailing list: * * * Please send bug reports back to me: phaag@users.sourceforge.net * or to one of the lists. + make -j3 make all-recursive [...] make[1]: Leaving directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6' + exit 0 Exécution_de(%install): /bin/sh -e /var/tmp/rpm-tmp.4807 + umask 022 + cd /home/makerpm/rpmbuild/BUILD + cd nfdump-1.6.6 + LANG=C + export LANG + unset DISPLAY + rm -rf /var/tmp/nfdump-1.6.6-1-root-makerpm + make install DESTDIR=/var/tmp/nfdump-1.6.6-1-root-makerpm Making install in . make[1]: Entering directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6' make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6' make[2]: Nothing to be done for `install-exec-am'. make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6' make[1]: Leaving directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6' Making install in bin make[1]: Entering directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6/bin' make install-am make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6/bin' make[3]: Entering directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6/bin' test -z "/usr/bin" || /bin/mkdir -p "/var/tmp/nfdump-1.6.6-1-root-makerpm/usr/bin" /usr/bin/install -c nfcapd nfdump nfreplay nfexpire nfanon nfprofile '/var/tmp/nfdump-1.6.6-1-root-makerpm/usr/bin' make[3]: Nothing to be done for `install-data-am'. make[3]: Leaving directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6/bin' make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6/bin' make[1]: Leaving directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6/bin' Making install in man make[1]: Entering directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6/man' make[2]: Entering directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6/man' make[2]: Nothing to be done for `install-exec-am'. test -z "/usr/share/man/man1" || /bin/mkdir -p "/var/tmp/nfdump-1.6.6-1-root-makerpm/usr/share/man/man1" /usr/bin/install -c -m 644 ft2nfdump.1 nfcapd.1 nfdump.1 nfexpire.1 nfprofile.1 nfreplay.1 nfanon.1 sfcapd.1 '/var/tmp/nfdump-1.6.6-1-root-makerpm/usr/share/man/man1' make[2]: Leaving directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6/man' make[1]: Leaving directory `/home/makerpm/rpmbuild/BUILD/nfdump-1.6.6/man' + /usr/lib/rpm/find-debuginfo.sh /home/makerpm/rpmbuild/BUILD/nfdump-1.6.6 extracting debug info from /var/tmp/nfdump-1.6.6-1-root-makerpm/usr/bin/nfanon extracting debug info from /var/tmp/nfdump-1.6.6-1-root-makerpm/usr/bin/nfcapd extracting debug info from /var/tmp/nfdump-1.6.6-1-root-makerpm/usr/bin/nfdump extracting debug info from /var/tmp/nfdump-1.6.6-1-root-makerpm/usr/bin/nfprofile extracting debug info from /var/tmp/nfdump-1.6.6-1-root-makerpm/usr/bin/nfexpire extracting debug info from /var/tmp/nfdump-1.6.6-1-root-makerpm/usr/bin/nfreplay 2695 blocks + /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-compress + /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump + /usr/lib/rpm/brp-python-bytecompile + /usr/lib/rpm/redhat/brp-java-repack-jars Traitement des fichiers: nfdump-1.6.6-1 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires: libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libresolv.so.2()(64bit) librrd.so.4()(64bit) rtld(GNU_HASH) Traitement des fichiers: nfdump-debuginfo-1.6.6-1 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Vérification des fichiers non empaquetés: /usr/lib/rpm/check-files /var/tmp/nfdump-1.6.6-1-root-makerpm Ecrit: /home/makerpm/rpmbuild/SRPMS/nfdump-1.6.6-1.src.rpm Ecrit: /home/makerpm/rpmbuild/RPMS/x86_64/nfdump-1.6.6-1.x86_64.rpm Ecrit: /home/makerpm/rpmbuild/RPMS/x86_64/nfdump-debuginfo-1.6.6-1.x86_64.rpm Exécution_de(%clean): /bin/sh -e /var/tmp/rpm-tmp.76791 + umask 022 + cd /home/makerpm/rpmbuild/BUILD + cd nfdump-1.6.6 + rm -rf /var/tmp/nfdump-1.6.6-1-root-makerpm + exit 0 [makerpm@centos58 SPECS]$ ~~~