Este es un breve resumen de lo básico e indispensable para crear paquetes rpm en fedora.
Instalamos entorno de desarrollo:
# yum install @development-tools
# yum install fedora-packager
Creamos estructura de directorio de trabajo para los RPMs:
$ rpmdev-setuptree
EJEMPLO: Creamos el RPM “hola mundo”:
Necesitamos el codigo fuente que vamos a empaquetar, tambien llamado codigo upstream. En este ejemplo lo descargamos en el directorio SOURCE directamente como tar.gz
$ cd ~/rpmbuild/SOURCES
$ wget http://ftp.gnu.org/gnu/hello/hello-2.7.tar.xz
Los paquetes RPM se configuran a través de los archivos .spec. Entonces creamos una plantilla para nuestro programa en el directorio SPECS:
$ cd ~/rpmbuild/SPECS
$ rpmdev-newspec hello
Editamos el hello.spec
vi hello.spec
Un ejemplo de un archivo .spec completo sería:
Name: hello
Version: 2.7
Release: 1%{?dist}
Summary: The "Hello World" program from GNU
License: GPLv3+
URL: http://ftp.gnu.org/gnu/%{name}
Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz
BuildRequires: gettext
# Requires:
Requires(post): info
Requires(preun): info
%description
The "Hello World" program, done with all bells and whistles of a proper FOSS
project, including configuration, build, internationalization, help files, etc.
%prep
%setup -q
%build
%configure
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
%find_lang %{name}
rm -f %{buildroot}/%{_infodir}/dir
%post
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :
%preun
if [ $1 = 0 ] ; then
/sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || :
fi
%files -f %{name}.lang
%{_bindir}/hello
%doc %{_mandir}/man1/hello.1.gz
%doc %{_infodir}/%{name}.info.gz
%changelog
* Tue Sep 06 2011 The Coon of Ty <Ty@coon.org> 2.7-1
- Initial version of the package
Construimos el paquete:
$ rpmbuild -ba hello.spec
Esto generará los paquetes de fuentes y binario en los directorios SPMS y RPMS. Ahora verificamos con rpmlint si los paquetes cumplen con las reglas de diseño de RPMs:
$ rpmlint hello.spec ../SRPMS/hello* ../RPMS/*/hello*
Si no hay errores, ya tenemos los paquetes listos para usar:
$ cd /home/hvivani/rpmbuild/RPMS/x86_64
$ sudo rpm -i hello-2.7-1.fc14.x86_64.rpm
[sudo] password for hvivani:
$ hello
¡Hola mundo!
Si queremos incursionar en profundidad en este tema, podemos hacerlo en este wiki de fedora.