Sep272013

Empaquetando en RPM

Considero que una de las tareas que cimientan la sociedad del software libre es la colaboración.

Una forma de colaborar puede ser la de empaquetar software para tu distribución favorita.

En principio la metodología para empaquetado es aplicable a cualquier distribución que base sus repositorios en el empaquetado RPM. Yo me he basado en información de varios blogs y principalmente en la documentación del proyecto Fedora para elaborar esta guía; por lo que habrán instrucciones específicas de Fedora que en principio deberían tener su equivalente en openSuse, Mageia, Mandriva y similares.

Prerrequisitos

Primero vamos a instalar algunos paquetes con el siguiente comando como superusuario

# yum install @development-tools fedora-packager

A continuación, se recomienda crear un usuario nuevo para las tareas de empaquetado. No es necesario, así que simplemente ejecutamos como usuario normal el siguiente comando para crear la estructura de carpetas y archivos que necesitaremos para el empaquetado del software que hayamos elegido.

$ rpmdev-setuptree

Veremos que en nuestro home se nos a creado la carpeta rpmbuild que contiene a su vez las siguientes carpetas:

  • BUILD – En esta carpeta se construye el paquete.
  • BUILDROOT – Esta carpeta almacena los archivos compilados en BUILD que van a ser empaquetados.
  • RPM – En esta carpeta se almacenan los rpm resultantes del proceso de empaquetamiento.
  • SRPMS – Aquí se almacena paquetes rpm que contienen el código fuente que será compilado en sucesivas etapas del proceso de empaquetado.
  • SOURCES – En esta carpeta es donde colocamos el código fuente y los parches para este.
  • SPECS – Esta es la carpeta donde colocamos todas las especificaciones que serán usadas durante el proceso de empaquetamiento.

Crear y rellenar el fichero SPEC

Tras esta perlita teórica, iremos al directorio SPECS y crearemos el archivos spec para nuestro programa usando los siguientes comandos.

cd /home/tuusuario/rpmbuild/SPECS/
rpmdev-newspec programa

$ cd /home/tuusuario/rpmbuild/SPECS

$ rpmdev-newspec programa

Este comando nos ha generado una plantilla de specfile que tendremos que rellenar con los datos del programa. A continuación veremos el contenido del archivo creado con explicaciones de que es cada cosa:

Name: programa #Como es lógico, aquí va el nombre del programa

Version: #Aquí pondremos su versión

Release: 1%{?dist} #Este número indica cuantas veces se ha empaquetado el programa para una versión en concreto.

Summary: #Aquí haremos un pequeña descripción de nuestro programa

License: #Aquí detallamos la licencia bajo la cual se liberá nuestro programa (GPL,MIT,BSD,…)

URL: #En este campo ponemos la url a la documentación de nuestro programa

Source0: #En este campo pondremo la url al código fuente del programa

# ¡¡IMPORTANTE!!

BuildRequires: #Aquí ponemos los paquetes que necesitamos para poder compilar el programa

Requires: #Aquí ponemos los paquetes necesarios para poder usar el programa

#A partir de aquí, las secciones con un ‘%’ antes del nombre son directivas de procesamiento.

Es decir, aquí indicamos como queremos que se compile y se instale el paquete

%description

#Aquí podemos explayarnos hablando del programa y sus virtudes xD

%prep

%setup -q

# Las secciones prep y setup contienen macros que preparan las fuentes para la etapa de compilación

%build

%configure

make %{?_smp_mflags}

# Aquí es donde se configura y compila nuestro programa

%install

rm -rf $RPM_BUILD_ROOT

%make_install

#Aquí es donde se especifican las directivas para instalar nuestro programa

# ¡¡IMPORTANTE!!

Las siguientes secciones son para gestionar los ficheros que se van a instalar tras la compilación del programa

%files

%doc # Aquí pondremos los ficheros que son de documentación.

Una vez hayamos rellenado el fichero spec, ejecutamos el siguiente comando para instalar las dependencias:

# yum-builddep programa.spec

Y por último solo nos queda crear el paquete. Para ello usaremos el siguiente comando:

$ rpmbuild -ba programa.spec

Resumiendo

Como ya hemos visto, los pasos fundamentales a la hora de crear un paquete es:

  • Preparar el entorno
  • Definir correctamente el specfile
  • Construir el paquete

Espero que haya sido de utilidad. Si veis algo que os resulte extraño o incomprensible, bienvenidos sean los comentarios xD.

Política de comentarios

Dada la importancia de los comentarios como espacio de participación, te pedimos por favor que leas detenidamente y cumplas con las siguientes normas de participación.

5 respuestas para “Empaquetando en RPM

Yoyo

Excelente aporte.

Por cierto, empaquetar en .pisi es mucho más fácil! 😛


José Miguel

Bienvenido “gatito”…

Saludos.


Hugo J. H.

Acabo de ver un Screencast tuyo usando Pisido para empaquetar en .pisi. Tienes toda la razón, una buena interfaz gráfica es lo mejor para simplificar este tipo de tareas.

Saludos.


victorhck

Hola!

También puede usarse la herramienta OBS (Open Build Service) de openSUSE con el que se puede empaquetar software para en varios formatos…
RPM, DEB, para Arch…

Saludos!!


Hugo J. H.

Hola victor,

Gracias por tu aportación. La verdad es que no conocía esta herramienta y lo poco que he visto me parece superútil.

Saludos 😀


Deja un comentario

Tu dirección de correo electrónico no será publicada.