Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Next Previous Contents

49. Построение RPM для нескольких архитектур

Сейчас RPM может использоваться для построения пакетов для Intel i386, Digital Alpha с работающим Linux и the Sparc. Также было сообщено, что RPM работает на SGI и рабочих станциях HP. Существует несколько свойств, которые делают построение пакетов не всех платформах легким. Первое из этих свойств это директива ``optflags'' в файле /etc/rpmrc. Она может быть использована для установки используемых для построения программного обеспечения флагов в значения соответствующие определенной архитектуре. Другое свойство это макрос ``arch'' в spec-файле. Оно может быть использована чтобы делать разные вещи в зависимости от архитектуры на которой производится посторонние. Еще одно свойство это директива ``Exclude'' в заголовке.

49.1 Простой spec-файл

Следующая информация это часть spec-файла для пакета ``fileutils''. Он настроен для построения и на Alpha и на 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*



.

.

.

49.2 Директива Optflags

В этом примере вы видите как директива ``optflags'' используется из файла /etc/rpmrc. В зависимости от того на какой архитектуре вы производите построение, соответствующее значение дается переменной RPM_OPT_FLAGS. Вы должны изменить Makefile вашего пакета для использования этой переменной вместо директив, которые вы могли бы использовать (подобно директивам -m486 и -O2). Вы можете лучше почувствовать что надо сделать если загрузите этот пакет с исходными текстами, распакуйте исходные тексты и посмотрите на Makefile. Затем посмотрите на заплатку для Makefile и вы увидите какие изменения должны быть сделаны.

49.3 Макросы

Макрос %ifarch очень важен. Очень часто вам необходимо сделать одну или несколько заплаток, специфических только для одной архитектуры. В этом случае RPM позволит вам приложить эти заплатки только на этой архитектуре.

В вышеприведенном примере, fileutils имеют заплатку для 64-битовых машин. Очевидно, что она должна быть приложена только на Alpha. Так что ма добавим макрос %ifarch вокруг применения 64-битовой заплатки как приведено:


%ifarch axp

%patch1 -p1

%endif

Это будет обеспечивать, что заплатка не будет приложена на любой архитектуре за исключением alpha.

49.4 Исключение архитектур из пакетов

Для того чтобы вы могли сопровождать пакеты с исходным текстом в одной директории для всех платформ мы реализовали возможность ``исключения'' построения пакетов на определенных архитектурах. Так что вы все равно можете делать такие вещи как:


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

и иметь правильно построенные пакеты. Если вы еще не перенесли приложение на определенную платформу, все что вам надо сделать это добавить примерно следующую строку:


ExcludeArch: axp

к заголовку spec-файла пакета с исходными текстами. Затем заново постройте пакет на платформе на которой он может строится. Вы будете иметь пакет с исходными текстами, который может строиться на платформе Intel и может быть легко пропущен на платформе Alpha.

49.5 Окончание

Использование RPM для создания многоплатформенных пакетов обычно более легко сделать, чем заставить сам пакет быть построенным в обоих местах. Как всегда наилучшая помощь когда вы застряли это посмотреть как сделан похожий пакет.


Next Previous Contents