martes, 28 de abril de 2009

Crear RPMs, lo peor del infierno

Lo peor de la sección de RPMs es crear estos...

Para estoy hay que seguir varios pasos:

  1. Crear una firma GPG, (opcional y no necesario para el examen de RHCE)
    Hay que instalar GPG con yum install gnupg, luego hay que generar la firma GPG con gpg --gen-key, se siguen las instrucciones (es descriptivo e intuitivo), así que no hay de que quejarse). Una vez creada nuestra firma hay que exportarla con gpg --output gpgkey.gpg --armor --export "tu mail" y luegro agregarla con rpm --import gpgkey.gpg
  2. Instalar RPMbuild y preparar el entorno de construcción
    Bueno, esto es simple, es solo cuestión de instalar el programa con yum install rpm-build, y crear el archivo de configuración .rpmmacros:
    %debug_package %{nil}
    %_unpackaged_files_terminate_build 1
    %_signature gpg
    %_gpg_path %(echo "$HOME")/.gnupg
    %_gpg_name Tu nombre que pusiste al momento de generar la clave GPG (el comentario)
    %_gpgbin /usr/bin/gpg
    %_topdir %(echo "$HOME")/rpmbuild
    %_tmppath %(echo "$HOME")/rpmbuild/TMP
    %packager Nombre como quieras
    %distribution Nombre de tu distribución
    %vendor su nombre o nombre de su empresa aqu
    í
    Luego hay que crear los directorios para la construcción de RPMs
    mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SRPMS,SPECS,TMP}
    mkdir -p ~/rpmbuild/RPMS/{athlon,i386,i586,i686,noarch}
  3. Crear un archivo .spec
    Esto es lo mas complejo de todo, ya que aquí radica el conjunto de instrucciones que se ejecutan al momento de crear el RPM. Los archivos .spec contienen las siguientes secciones:
    Name: (nombre de la aplicación)
    Version: (versión)
    Release: (número de revisión)
    URL: (sitio web del programa)
    Summary: (descripción del programa)
    License: (licencia)
    Group: (categoría a la que pertenece)

    Buildroot: %{_tmppath}/%{name}-%{version}-root
    Source: (URL para descargar el paquete con el código fuente)
    BuildRequires: (paquetes necesarios durante la compilación del programa)
    BuildPreReq: (paquetes necesarios antes de la compilación del programa)
    Requires: (paquetes necesarios antes de instalar del programa)
    PreReq: (paquetes necesarios durante la instalació del programa

    %description
    (otra vez, descripción del programa)

    %prep
    (procedimientos a ejecutar antes de desempaquetar el programa)
    %setup -q
    (procedimientos después de desempaquetar el programa, como aplicar parches)

    %build
    (procedimiento para compilar el programa, usualmente las siguientes dos lineas son lo necesario)
    %configure --prefix=/usr
    %__make

    %install
    (procedimientos para instalar el programa en las carpetas que corresponden, normalmente con esto basta)
    %__make DESTDIR=%{buildroot} install

    %clean
    (procedimientos para limpiar cualquier desorden que se haga al hacer el RPM)
    %__rm -fr %{buildroot}

    %preun
    (procedimientos antes de instalar el paquete, como crear cuentas de usuario especiales para el programa)

    %post
    (procedimientos después de instalar el paquete)

    %postun
    (procedimientos que se ejecutan después de borrar un paquete para que no quede rastro)
    %files
    (archivos que forman parte del archivo

    %changelog
    (cambios que se hayan hecho, se agregan con el siguiente formato)
    * Sun Sep 25 2005 Nombre
    - Cambio
  4. Construir el RPM
    Lo siguiente es crear el RPM en si, usualmente para crear un sRPM y un RPM, además de firmarlo lo mínimo sera el comando
    rpmbuild --sign --target=(arquitectura) -ba (nombre del archivo .spec)
    Dónde arquitectura puede ser: athlon, i386, i586, i686, noarch, x86_64, ia64.
Este tutoríal fue construido gracias a:
http://www.linuxparatodos.net/portal/staticpages/index.php?page=como-rpmbuild
http://www.linuca.org/body.phtml?nIdNoticia=88
http://www.debuntu.org/how-to-import-export-gpg-key-pair

1 comentarios:

Arag dijo...

se ve bastante bien, lo voy a probar indiferente al resultado gracias

Publicar un comentario