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.
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*
.
.
.
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.
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.
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.
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.