Naprej Nazaj Vsebina

7. Več-arhitekturna izgradnja RPM-jev

RPM se lahko sedaj uporablja za izgradnjo paketov za procesorje Intel i386, Digital Alpha, ki uporabljajo Linux in Sparc. Obstajajo poročila, da deluje tudi na SGI in HP delovnih postajah. Obstajajo številne lastnosti, ki poenostavljajo izgradnjo paketov na vseh platformah. Prva izmed njih je direktiva "optflag" v /etc/rpmrc. Uporablja se lahko za postavitev oznak, ki se uporabljajo pri izgradnji programske opreme za vrednosti, ki so specifične za določeno arhitekturo. Naslednja lastnost so makri "arch" v datoteki spec. Uporabljate jih lahko v različne namene, odvisno od arhitekture na kateri gradite. Naslednja lastnost je direktiva "Exclude" v glavi.

7.1 Primer datoteke spec

Sledi del datoteke spec za paket "fileutils". Zgrajena je tako, da se lahko zgradi na računalnikih s procesorji Alpha in 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

V tem primeru boste videli, kako se direktiva "optflag" uporablja iz /etc/rpmrc. Glede na arhitekturo na kateri gradite, se ustrezna vrednost posreduje RPM_OPT_FLAGS. Da bi lahko namesto navadne direktive, ki jo uporabljate (kot je npr. -m486 ali -O2), uporabljali to spremenljivko, boste morali popraviti Makefile za vaš paket. Boljši občutek za to, kaj je potrebno storiti, lahko dobite tako, da namestite ta izvorni paket, ga potem razpakirate in preučite Makefile. Potem si oglejte popravek za Makefile in videli boste, kakšne spremembe je potrebno opraviti.

7.3 Makri

Makro %ifarch je pri vsem tem zelo pomemben. Največkrat boste morali narediti popravek ali dva, ki je značilen samo za določeno arhitekturo. V tem primeru vam RPM dopušča, da napravite popravek samo za to arhitekturo.

V zgornjem primeru ima fileutils popravke za 64 bitne računalnike. V tem trenutku se ta popravek uporablja samo za procesorje Alpha. Okrog popravka za 64 bitne procesorje dodajmo makro %ifarch:

%ifarch axp
%patch1 -p1
%endif
S tem boste zagotovili, da se bo popravek uporabljal samo na arhitekturah s procesorji Alpha.

7.4 Izločevanje arhitektur iz paketa

Da boste lahko vzdrževali izvorne RPM-je za vse platforme v enem imeniku, smo vgradili sposobnost za "izločevanje" paketov, ki bi se zgradili za določene arhitekture in sicer tako, da boste še vedno lahko uporabljali ukaze, kot je

rpm --rebuild /usr/src/SRPMS/*.rpm
in pri tem izgradite ustrezen paket. Če aplikacije še niste dali na določeno platformo, je vse kar morate storiti, da dodate podobno vrstico:
ExcludeArch: axp
v glavo datoteke spec izvornega paketa. Potem ponovno izgradite paket na platformi, na kateri je prvotno izgrajena. Dobili boste izvorni paket, ki deluje s procesorjem Intel, lahko ga pa enostavno prenesete na računalnik s procesorjem Alpha.

7.5 Zaključek

Uporaba RPM-ja za izgradnjo več-arhitekturnih paketov je po navadi bolj enostavno, kot pa dobiti pakete za samo izgradnjo. Več kot je paketov, lažje je to opraviti. Kot vedno, je najboljša pomoč, ko pri izgradnji RPM-jev obtičite ta, da pogledate v podoben izvorni paket.


Naprej Nazaj Vsebina