RPM se lahko uporablja za izdelavo paketov za procesorje Intel i386,
Digital Alpha (če uporablja Linux), Sparc in druge. Številne
lastnosti poenostavljajo izdelavo paketov za različna strojna
okolja. 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 makroukazi "arch" v datoteki Spec.
Uporabljate jih lahko v različne namene, odvisno od strojnega okolja,
za katero pripravljate paket. Podobna lastnost je direktiva "Exclude"
v glavi.
Sledi del datoteke Spec za paket "fileutils". Napisana 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 zgledu vidite, kako se uporablja direktiva "optflag" iz
/etc/rpmrc
. Glede na strojno okolje, v katerem gradite, se
ustrezna vrednost posreduje spremenljivki RPM_OPT_FLAGS
. Da
bi lahko namesto navadne direktive, ki jo uporabljate
(npr. -m486
ali -O2
), uporabljali to spremenljivko,
boste morali popraviti datoteko Makefile za vaš paket. Boljši občutek
za to, kaj je treba storiti, dobite tako, da namestite ta
izvirni paket, ga razpakirate in preučite Makefile. Potem si oglejte
popravek za Makefile in videli boste, kakšne spremembe je treba
opraviti.
Makroukaz %ifarch
je pri vsem tem zelo pomemben. Največkrat
boste morali narediti popravek ali dva, ki sta specifična samo za
določeno strojno okolje. V tem primeru vam RPM dopušča, da napravite
popravek samo za to strojno okolje.
V zgornjem zgledu ima fileutils popravke za 64-bitne računalnike. Trenutno
se ta popravek uporablja samo za procesorje Alpha. Okrog
popravka za 64 bitne procesorje dodajmo makro %ifarch
:
S tem zagotovimo, da se popravek uporabi samo v strojnih okoljih s procesorji Alpha.%ifarch alpha %patch1 -p1 %endif
Da je laže vzdrževati izvirne pakete RPM za vsa strojna okolja v enem imeniku, je vgrajena možnost "izločevanje" paketov za določene arhitekture. Tako lahko še vedno uporabljamo ukaze, kot je
, in z njim izdelamo vse pakete. Če določen paket še ni bil prenesen v dano strojno okolje, vam ni treba drugega kot to, da v glavo datoteke Spec tega paketa dodaste vrstico:rpm --rebuild /usr/src/SRPMS/*.rpm
Potem znova izdelajte izvirni paket v strojnem okolju, v katerem je bil prvotno izdelan. Dobili boste izvirni paket, ki se prevede na procesorjih Intel, na procesorjih Alpha pa se enostavno preskoči.ExcludeArch: alpha
Paket RPM je navadno laže prilagoditi za delo v več strojnih okoljih, kakor programje pripraviti do tega, da se prevede v novem strojnem okolju. S tem, ko je prenesenih vse več težavnih paketov, pa tudi to postaja vse laže. Če se vam zatakne, je navadno najbolje, da si ogledate podoben paket, ki je že prenesen, in razčlenite, kako so težavo rešili v njem.