Creando paquetes RPMs


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.

Anuncios

Acerca de hvivani

sysadmin, developer, RHCSA
Esta entrada fue publicada en Uncategorized y etiquetada , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s