Crear paquete .rpm

28 03 2011

Para crear un paquete rpm primero instalar los paquetes necesarios:
# yum install rpm-build rpm-devel

Y dentro de /usr/src/redhat encontraremos los siguientes directorios:
/usr/src/redhat/SOURCES - Cotiene las fuentes, parches e iconos.
/usr/src/redhat/SPECS - Contiene los archivos de specificaciones usados para crear el rpm.
/usr/src/redhat/BUILD - Lugar donde se desempaqueta y se compila el software.
/usr/src/redhat/RPMS - Contiene los rpm creados, cada uno dentro de su arquitectura.
/usr/src/redhat/SRPMS - Contiene las fuentes de los rpm que se han creado.

Un ejemplo de los directorios con contenido:
BUILD
RPMS
SOURCES
  mi-programa
    archivo1.txt
    archivo2.sh
    archivo3
    archivo4.1.gz
  mi-programa.tar.gz
SPECS
  mi-programa.spec
SRPMSBUILD
SRPMS

Ahí hemos puesto el contenido de nuestro programa dentro de SOURCES y a su vez dentro de una carpeta, esa carpeta se encuentra comprimida en el mismo directorio con el mismo contenido que tiene el directorio, ese tar.gz es el que se descomprime y finalmente se instala, los archivos sin comprimir quedan como referencia para crear el tar.gz.

Ahora se muestra como ejemplo el contenido del archivo mi-programa.spec, que es la receta con la que se creará el rpm.

Summary: Mi primer rpm
Name: NombreDelPrograma
Version: 1.0.0
Release: 1
Group: Applications/System
License: GPL3
Packager: Mi Nombre
Requires: perl, (nombre de paquetes necesarios para su funcionamiento separados por comas)
Source: mi-programa.tar.gz
%description
Programa de prueba para mi primer rpm.
%prep
%setup
%install
install -m 0755 -d /etc/miprograma
install -m 0755 -d /var/lib/miprograma
install -m 0644 archivo1.txt /etc/miprograma/archivo1.txt
install -m 0644 archivo2.sh /etc/miprograma/archivo2.sh
install -m 0644 archivo3 /var/lib/miprograma/archivo3
install -m 0644 archivo4.1.gz /usr/share/man/man1/archivo4.1.gz
%post
chkconfig --add miprograma
echo '45 * * * * root /usr/bin/miprograma' >> /etc/crontab
echo -e "¡Instalado!"
%preun
chkconfig --del miprograma
sed -i '\/usr\/bin\/miprograma/d' /etc/crontab
echo -e "¡Desinstalado!"
%files
%dir /etc/miprograma
%dir /var/lib/miprograma
/etc/miprograma/archivo1.txt
/etc/miprograma/archivo2.sh
/var/lib/miprograma/archivo3
/usr/share/man/man1/archivo4.1.gz
%changelog
* Fri Mar 25 2011 Nombre Apellido
- Inicio

Ahora solo falta crear el rpm:
# cd /usr/src/redhat/
# rpmbuild -ba SPECS/mi-programa.spec

Y ya tendremos el .rpm creado el directorio RPMS/(Arquitectura)/mi-programa-1.0.0-1.arquitectura.rpm y las fuentes del mismo dentro de SRPMS

Si se quiere comprobar cómo se han construido otros paquetes, se pueden bajar los src y abrir del siguiente modo:
# rpm2cpio test-1.23.src.rpm | cpio -id

Más información:
http://home.fnal.gov/~dawson/rpms/howto/RPM-Build.html
http://www.linuxparatodos.net/portal/staticpages/index.php?page=como-rpmbuild
http://www.madboa.com/geek/specs/

Advertisements

Actions

Information

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: