Naprej Nazaj Kazalo

8. Gradnja paketov RPM za različna strojna okolja

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.

8.1 Zgled datoteke Spec

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*

.
.
.

8.2 Optflags

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.

8.3 Makroukaz

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:

%ifarch alpha
%patch1 -p1
%endif
S tem zagotovimo, da se popravek uporabi samo v strojnih okoljih s procesorji Alpha.

8.4 Izločevanje trojnih okolij iz paketa

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

rpm --rebuild /usr/src/SRPMS/*.rpm
, 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:
ExcludeArch: alpha
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.

8.5 Konec

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.


Naprej Nazaj Kazalo