Menadżer Pakietów RedHat-a (RPM) - Jak To Zrobić: Tworzenie RPM-ów na wiele platform.
Następna strona
Poprzednia strona
Spis treści
7. Tworzenie RPM-ów na wiele platform.
RPM może być wykorzystywany do tworzenia pakietów
dla Intel i386, Digital Alpha pracujących pod Linux,
oraz Sparc. Są też doniesienia o jego wykorzystaniu
na platformach SGI i HP.
RPM ma parę cech które czynią tworzenie pakietów na
wiele platform prostszymi.
Pierwszą z nich jest dyrektywa ``optflags''
w pliku /etc/rpmrc.
Może ona być wykorzystana do ustawienia odpowiednich
opcji i flag, specyficznych dla architektury,
potrzebnych do kompilacji bądź instalacji.
Następną cechą ułatwiającą tworzenie pakietów na wiele
platform są makra ``arch'' w pliku specyfikującym.
Mogą one być wykorzystane do wykonania różnych
rzeczy zależnych od architektury na której pakiet
jest instalowany. Następną taką cechą jest
dyrektywa ``Exclude'' w nagłówku.
7.1 Przykładowy plik specyfikujący .spec
Poniżej zamieszczona jest część pliku specyfikującego
dla pakietu ``fileutils''.
Jest on przygotowany do instalacji na dwóch
platformach: Alfach i Intelu.
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 Dyrektywa optflags
W powyższym przykładzie przedstawione zostało użycie
dyrektywy ``optflags'' z /etc/rpmrc.
RPM_OPT_FLAGS przyjmują odpowiednią wartość
w zależności od tego na jakiej platformie instalowany
jest pakiet. Do pliku Makefile użytego w pakiecie
należy nanieść poprawki by korzystał z tej zmiennej
zamiast standardowych opcji (np. -m486 lub -O2).
Możesz się zorientować co powinno być zrobione
poprzez zainstalowanie pakietu źródłowego,
jego rozpakowanie i przyjrzenie się plikowi Makefile.
Następnie należy zajrzeć do plików z poprawkami
dla pliku Makefile i sprawdzić jakie zmiany powinny być
wprowadzone.
7.3 Makra
Makro %ifarch jest bardzo istotne dla tworzenia
pakietów na wiele architektur.
W większości przypadków potrzebujesz nanieść jedną
lub dwie poprawki specyficzne tylko dla jednej, konkretnej
architektury. W takiej sytacji RPM pozwala na
naniesienie poprawki wyłącznie dla niej.
W powyższym przypadku, pakiet fileutils ma poprawkę
dla maszyn 64-bitowych.
To naturalnie w chwili obecnej stosuje się tylko do Alf.
Tak więc dodajemy makro %ifarch
nanoszące odpowiednią poprawkę:
%ifarch axp
%patch1 -p1
%endif
To zapewni, że poprawka nie będzie naniesiona
na żadnej innej architekturze a wyłącznie na alfach.
7.4 Wyłączanie pewnych platform w pakietach
Można opiekować się źródłowymi RPM-ami w jednym
katalogu dla wszystkich platform. Uzyskuje się to poprzez
``wyłączenie'' (ang. exclude) pewnych pakietów
z tworzenia ich dla pewnych architektur, tak, że ciągle
możliwym jest:
rpm --rebuild /usr/src/SRPMS/*.rpm
dające w wyniku poprawne pakiety. Jeśli aplikacja nie została
jeszcze do tej pory przeniesiona na daną platformę to wystarczy
dodać wiersz wygladający mniej więcej tak:
ExcludeArch: axp
do nagłówka pliku specyfikującego pakiet źródłowy.
Następnie przebuduj pakiet na platformę na której
już pracuje. W ten sposób uzyskuje się pakiet,
który kompiluje się/tworzy się np. na Intel-u
podczas gdy może być łatwo opuszczony na Alfie.
7.5 Ostatnie poprawki
Wykorzystanie RPM to tworzenia pakietów przeznaczonych
na wiele platform jest zazwyczaj prostsze niż doprowadzenie
pakietu do stanu w którym daję się on na nich zainstalować.
Jednakże w miarę jak powstaje więcej i więcej pakietów w
postaci binarnej staje się to coraz prostsze.
Jeśli przy tworzeniu pakietu zabrniesz w ślepą uliczkę
to jak zwykle, rozwiązaniem może być zajrzenie
do kodu źródłowego podobnego pakietu.
Następna strona
Poprzednia strona
Spis treści
Wyszukiwarka
Podobne podstrony:
RPM HOWTO plRPM HOWTO pl (3)RPM HOWTO pl 2 (2)RPM HOWTO pl 8 (2)rpm howto pl 6RPM HOWTO pl 3 (2)RPM HOWTO pl 4 (2)RPM HOWTO pl 1 (2)RPM HOWTO pl 5 (2)RPM HOWTO pl (2)bootdisk howto pl 8PPP HOWTO pl 6 (2)NIS HOWTO pl 1 (2)cdrom howto pl 1jtz howto pl 5Keystroke HOWTO pl (2)PostgreSQL HOWTO pl 14printing howto pl 5debian apt howto plwiÄcej podobnych podstron