Enviar Respuesta  Enviar Tema 
[GUIA] Como pre-compilar paquetes RPM apartir de sus fuentes
Autor Mensaje
agus
Colaborador
****
Colaborador

Mensajes: 282
Grupo: Colaborador
Registro en: May 2005
Estado: Sin Conexión
Reputación: 3
Mensaje: #1
myBB  [GUIA] Como pre-compilar paquetes RPM apartir de sus fuentes

Cómo compilar paquetes RPM

Compilar un paquete RPM desde la fuente

Como sabemos, algunas de las distribuciones comerciales más importantes como, Redhat, Mandrake/Mandriva, Fedora Core; se basan en el empaquetamiento de sus paquetes en el formato RPM, estos paquetes ya vienen pre-compilados para dicha distro, pero que ocurre si bajamos un RPM que contiene el código de la aplicación, la cual no ha sido pre-compilada para nuestra distro, incluso para nuestra arquitectura?.
Porque recordemos que Mandrake/Mandriva es una distribución que está conformada casi en su totalidad por software libre con licencia GPL; por lo tanto esto compromete al distribuidor de un programa compilado a facilitar también el código fuente de dicho programa.
Este punto está cumplido por nuestra distro, pues existen los correspondientes repositorios de software que contienen todos los paquetes RPM con su código fuente; “Main” y “Contrib”, son dos de esos ejemplos, para Mandrake Linux 10.1 Community los encontraremos en cualquier mirror bajo el directorio:

• /Mandrakelinux/devel/community/SRPMS

para Oficial en:

• /Mandrakelinux/official/currente/SRPMS

y para la rama de desarrollo Cooker en:

• /Mandrakelinux/devel/cooker/SRPMS

Entonces, si lo que queremos es compilar un programa que ya usamos, y queremos optimizarlo para nuestra máquina, deberemos acudir a la fuente de software que contenga las fuentes de dicho programa.
Eso sí, no siempre vamos a encontrar la versión nueva que necesitamos, y en el caso que la encontremos, no siempre funcionará correctamente (tener en cuenta que si es de la rama “Cooker”, es porque está en desarrollo), y podrá generar inestabilidades no deseadas; además hay que tener en cuenta que, al sustituir los programas de la distribución, sus actualizaciones de seguridad podrían no llegar a aplicarse y pasaríamos nosotros a ser los responsables de su mantenimiento.
Con todo esto, entonces…

Manos a la Obra

Lo primero que debemos hacer es definir nuestro entorno de trabajo. Una aclaración muy importante, no deberemos ser administrador del sitema (root) para compilar los paquetes RPM, puesto que al compilarlos también se instalarán en el sistema y esto causará un efecto secundario no deseado.

Utilizaremos, por lo tanto una cuenta de usuario normal, en el espacio de trabajo de dicho usuario crearemos los directorios necesarios con el siguiente comando:

Medir –p ~/rpm/BUILD, RPMS/i586, RPMS/i686, RPMS/k6/Athlon, RPMS/noarch, SOURCES, SRPMS, SPECS, temp

El directorio de trabajo es “rpm”, allí encontraremos una serie de directorios cuya utilidad se resume en el cuadro “Utilidad de los subdirectorios creados en ~/RPM”.
Además, también se deberán instalar los paquetes “rpm”, “rpm-build”, “spec-helper” y “libtool”. Si durante la compilación se obtienen errores relacionados con estas herramientas y estamos compilando archivos con “rpm” de “Cooker”, la solución pasa por instalar los paquetes en conflicto desde “Cooker”. Por supuesto también será necesario tener instaladas todas las herramientas de compilación correspondientes (“automake”, “autoconf”, “gcc”, librerías de desarrollo, es decir, paquetes RPM devel) requeridas por los programas.

También se deberán crear dos archivos, definidos en el LISTADO 1, en el directorio raíz de la cuenta de usuario usada, no del root. Estos contienen las directrices básicas de compilación; y gracias a las definiciones introducidas en el archivo “.rpmrc”, los paquetes que compilemos lo harán optimizados para la arquitectura PC que estemos usando: Pentium (i586, i686), K6, Athlon, Pentium III.

Muy bien, ahora que tenemos definido nuestro entorno de trabajo, vamos a seguir un pequeño ejemplo para comprender mejor el método de construcción de un paquete “rpm” a partir de un “srpm” (como se denomina a un paquete “rpm” que contiene las fuentes y las directrices para construir un “rpm” que contenga los binarios de esas fuentes).

“Amsm” es un programa muy completo que permite usara la red de mensajería instantánea Messenger; la versión del programa en la fuente “Contrib” para MandrakeLinux 10.1 es la 0.94, y en principio no se dispone de la misma para la 10.1; pero sí para “Cooker”.
Entonces se aprovechará ese paquete para construir uno para la versión 10.1 y poder instalar esa nueva versión.
Se utilizará este programa, puesto que no está en principio, incluido en las actualizaciones de seguridad que facilita MandrakeSoft, luego no perderemos nada instalando el paquete “rpm” que construyamos.

Nota: es conveniente crear un directorio SRPM aparte, en el cual almacenar los paquetes fuentes que descarguemos.

Anteriormente se explicaba que se debería instalar los paquetes que requiera el programa para su compilación; hay una forma sencilla de conocer de antemano cuales son, desde una consola de texto y utilizando MC (Midnight Commander) navegamos hasta el archivo en cuestión, en este caso amsn-0.94-1mdk.src.rpm y pulsamos “enter” sobre él, lo que hará MC es ingresar al contenido del archivo como si se tratase de un directorio; entramos entonces en el directorio INFO y nos situamos sobre el archivo REQUIRENAME y pulsamos la tecla F3, que permite leer el contenido de dicho archivo, cada línea define un paquete requerido para la compilación y un número de versión en caso necesario.
Por lo tanto hay que instalar esos paquetes antes que nada, pero si estos no se encuentran disponibles para nuestra distribución, o lo están pero en una versión inferior a la requerida, entonces deberíamos construir nuevos paquetes actualizados a partir de los paquetes “srpm” de “Cooker”, luego instalarlos y continuar con la construcción de nuestro paquete.
El siguiente paso será, desde el directorio ~/srpms y desde una consola de texto ejecutar el comando:

Rpm –rebuild amsn-0.94-1mdk.src.rpm

Si surgiera un error es probable que entre todos los mensajes que se generan por pantalla alguno nos indique donde ha fallado la compilación y qué ha provocado el fallo.

Comprobando el paquete obtenido

Una vez que la compilación finaliza sin errores obtendremos en el directorio que corresponda al paquete “rpm” con los binarios del programa, por supuesto encontraremos el paquete obtenido dentro de la rama del directorio correspondiente a la arquitectura de nuestra pc. Suele ocurrir que algunas veces al compilar un paquete “srpm” se generan varios “rpm” y alguno de ellos pueden estar localizados en ~/rpm/RPMS/noarch.

Entonces, hemos cubierto con el método anterior cómo conseguir programas nuevos para la distribución que estemos usando y que además estén optimizados para nuestro procesador, de esta forma deberían funcionar más rápidamente.
Esta es sólo una forma sencilla de optimizar los paquetes que necesitemos; pero en el cuadro “referencias” hay un enlace a todo un manual de cómo recompilar la distribución entera (algo similar a lo que realiza GENTOO), puesto que requiere seguir un orden determinado.

Nota: hay que tener en cuenta que quizás este manual se encuentre un poco desfasado en algunos aspectos, ya que está realizado sobre la base de un MandrakeLinux 9.2, pero los pasos que se explican en este son válidos actualmente.

A veces, las optimizaciones para arquitecturas diferentes a i586 podrían generar algunos problemas y generar programas inestables; ¿qué podríamos hacer en este caso?; bastaría con modificar el archivo ~/.rpmrc de manera que todas las arquitecturas se identificaran como i586.


<{Sólo la verdad nos hará libres}>
09-16-2005 01:12 PM
Visita el website del usuario Encuentra todos los mensajes de este usuario Cita este mensaje en tu respuesta
Enviar Respuesta  Enviar Tema 

Posibles Temas Similares...
Tema: Autor Respuestas: Vistas: Ultimo Mensaje
  Ayuda! Cómo pongo Mandriva 2007 en KDE? (solucionado) PnkAssn 9 1,102 07-13-2007 08:57 AM
Ultimo Mensaje: tuxtor
  [GUÍA] Repositorio y Ramas en Mandrake agus 0 1,058 07-18-2005 01:33 PM
Ultimo Mensaje: agus
  Como utilizar los repositorios en Mandrake (solucionado) thebest 1 1,006 07-01-2005 11:47 PM
Ultimo Mensaje: warp

Ver la Versión para Impresión
Mandar este Tema a algún Amigo
Subscríbete a este Tema | Agrega este Tema a Tus Favoritos

Salto de Foro: