Anterior Siguiente Indice

7. Construcción multi-arquitectura de paquetes RPM

Ahora puede usarse RPM para construir paquetes para Intel i386, Digital Alpha ejecutando Linux y Sparc. También se ha informado de su funcionamiento en estaciones de trabajo SGI y HP. Hay varias características que hacen que la construcción de paquetes para todas las plataformas sea fácil. La primera de éstas es la directiva ``optflags'' del fichero /etc/rpmrc. Puede usarse para asignar las opciones usadas durante la construcción del software con valores específicos de cada arquitectura. Otras son las macros ``arch'' en el fichero spec. Pueden usarse para diferentes cosas, en función de la arquitectura para la que se está construyendo. Otra más, es la directiva ``Exclude'' de la cabecera.

7.1 Ejemplo de fichero spec

El siguiente es parte del fichero spec para el paquete ``fileutils''. Está configurado para compilar en Alpha e Intel.

Summary: GNU File Utilities
Name: fileutils
Version: 3.16
Release: 1
Copyright: GPL
Group: Utilities/File
Source0: prep.ai.mit.edu:/pub/gnu/fileutils-3.16.tar.gz
Source1: DIR_COLORS
Patch: fileutils-3.16-mktime.patch

%description
These are the GNU file management utilities.  It includes programs
to copy, move, list, etc, files.

The ls program in this package now incorporates color ls!

%prep
%setup

%ifarch alpha
%patch -p1
autoconf
%endif
%build
configure --prefix=/usr --exec-prefix=/
make CFLAGS="$RPM_OPT_FLAGS" LDFLAGS=-s

%install
rm -f /usr/info/fileutils*
make install
gzip -9nf /usr/info/fileutils*

.
.
.

7.2 Optflags

En este ejemplo puede ver cómo se usa la directiva ``optflags'' desde el fichero /etc/rpmrc. En función de la arquitectura para la que está construyendo, el valor adecuado lo proporciona RPM_OPT_FLAGS. Debe parchear el fichero Makefile de su paquete para usar esta variable en lugar de las directivas normales que puede usar (como -m486 y -O2). Tendrá una mejor perspectiva de lo que necesita hacer instalando este paquete de fuentes, desempaquetando el fichero tar con los fuentes y examinando el fichero Makefile. Examine el parche para el Makefile y compruebe qué cambios son necesarios realizar.

7.3 Macros

La macro %ifarch es muy importante para todo esto. La mayoría de las veces necesitará hacer un parche o dos específicos para una sóla arquitectura. En ese caso, RPM le permitirá aplicar ese parche sólo para una arquitectura.

En el ejemplo anterior, fileutils tiene un parche para máquinas de 64 bits. Obviamente, sólo tiene aplicación en Alpha, por el momento. Entonces, añadimos una macro %ifarch al parche de 64 tal como:

%ifarch axp
%patch1 -p1
%endif

Esto asegurará que el parche no es aplicado en cualquier arquitectura excepto en Alpha.

7.4 Excluyendo arquitectura de los paquetes.

A la vez que puede tener fuentes RPM en un sólo directorio para todas las plataformas, hemos implementado la posibilidad de ``excluir'' paquetes para que no sean construidos en ciertas arquitecturas. Debido a esto, puede hacer cosas como:

rpm --rebuild /usr/src/SRPMS/*.rpm

y conseguir construir los paquetes adecuados. Si todavía no ha portado una aplicación a una determinada plataforma, todo lo que tiene que hacer es añadir una línea como:

ExcludeArch: axp

a la cabecera del fichero spec del paquete de fuentes. Reconstruya entonces el paquete sobre la plataforma para la que está preparado. Como resultado tendrá disponible un paquete compilable sobre Intel pero que es fácilmente omitible sobre Alpha.

7.5 Acabando

Usar RPM para crear paquetes para múltiples arquitecturas es generalmente más sencillo de hacer que conseguir que el paquete compile por sí mismo en todos los casos. Como siempre, la mejor ayuda disponible cuando uno se queda bloqueado al construir un paquete RPM es examinar un paquete de fuentes similar.


Anterior Siguiente Indice