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.