307 lines
9.2 KiB
Markdown
307 lines
9.2 KiB
Markdown
**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 <http://fedoraproject.org/wiki/How_to_create_an_RPM_package>
|
|
|
|
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: <http://www.pobox.com/~tranter>
|
|
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 <rel-eng@lists.fedoraproject.org> - 2.1.5-21
|
|
- Rebuilt for <https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild>
|
|
|
|
* Fri Jul 02 2010 Kamil Dudka <kdudka@redhat.com> 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: <http://sourceforge.net/projects/nfdump/>
|
|
Source0: <http://downloads.sourceforge.net/project/nfdump/stable/nfdump-1.6.6/nfdump-1.6.6.tar.gz>
|
|
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:
|
|
* <http://lists.sourceforge.net/lists/listinfo/nfdump-discuss>
|
|
* <http://lists.sourceforge.net/lists/listinfo/nfsen-discuss>
|
|
* 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]$
|
|
|
|
~~~
|
|
|
|
|