Menad�er Pakiet�w RedHat-a (RPM) - Jak To Zrobi�

Autor: Donnie Barnes
djb@redhat.com
V2.0, 8 Kwietnia 1997
Wersja polska: Jacek Pliszka pliszka@fuw.edu.pl


Niniejszy dokument jest t�umaczeniem RPM-HOWTO i w skr�cie opisuje jak co� zrobi� u�ywaj�c rpm-a czyli Menad�era Pakiet�w RedHat-a (RedHat Package Manager). Dokument ten zosta� napisany w standardzie ISO-8859-2. Orygina� t�umaczenia tego dokumentu znajduje si� pod adresem http://www.jtz.org.pl. http://www.jtz.org.pl a tak�e na ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/.

1. Wprowadzenie

Skr�t RPM pochodzi od ang. Red Hat Package Manager co oznacza w wolnym t�umaczeniu menad�er pakiet�w RedHat-a. Jednak pomimo tego, �e w nazwie znajduje si� Red Hat, to w zamierzeniu jest on systemem otwartym, dost�pnym dla ka�dego. Umo�liwia on spakowanie zar�wno kodu �r�d�owego jak i program�w binarnych do zwartej postaci zawieraj�cej dodatkowo informacje istotne przy zarz�dzaniu oprogramowaniem. Umo�liwia to �atw� instalacj�, od�wie�anie oraz usuwanie oprogramowania. Informacja o zainstalowanym oprogramowaniu jest �atwo dost�pna jako �e RPM tworzy baz� danych o wszystkich pakietach zainstalowanych w naszym systemie. Pozwala to na szybkie sprawdzenie czy dany pakiet jest zainstalowany, a je�li tak to co zawiera, jaka jest jego wersja, jakie pliki zosta�y przez niego w systemie zainstalowane oraz jakich innych pakiet�w wymaga. Pozwala te� sprawdzi� do jakiego pakietu nale�y dany plik.

Przyp. t�um. rpm jest obecnie u�ywany zar�wno do plik�w w postaci �r�d�owej jak i binarnej. W oryginale autor odwo�uj� si� g��wnie do tej pierwszej. Jednak poniewa� obecnie cz�ciej u�ywa si� pakiet�w w postaci binarnej to pliki z kt�rych powsta� rpm a kt�re maj� by� zainstalowane r�wnie� b�d� nazywa� plikami �r�d�owymi za� proces instalacji b�d� kompilacji - instalacj�.

Firma Red Hat Software zach�ca inne firmy i grupy tworz�ce oprogramowanie do bli�szego zapoznania si� z RPM i wykorzystania go przy tworzeniu w�asnych pakiet�w. B�d�c do�� elastycznym i �atwym w u�yciu, RPM pozwala budowa� nawet bardzo obszerne zbiory pakiet�w. Pomimo tego, �e jest to system ca�kowicie otwarty i dost�pny, jego autorzy ch�tnie wys�uchaj� informacji o b��dach i ewentualnych poprawkach. (Jednak przed zg�oszeniem ``b��du'' nale�y, tak jak zawsze, najpierw sprawdzi� czy ma si� najnowsz� stabiln� wersj�, przejrze� dokumentacj� oraz przeszuka� archiwa USENET i je�li i tam nie b�dzie odpowiedzi - spyta� na odpowiedniej grupie dyskusyjnej np. pl.comp.os.linux -przyp. t�um.) U�ywanie i rozpowszechnianie RPM jest wolne od op�at i regulowane Publiczn� Licencj� GNU - GPL (ang. GNU Public Licence).

Bardziej szczeg�owa dokumentacja dotycz�ca RPM jest zawarta w ksi��ce Eda Bailey'a, Maximum RPM, kt�ra mo�na �ci�gn�� b�d� zakupi� w www.redhat.com.

2. Do czego s�u�y RPM?

Na pocz�tku warto powiedzie� co nieco o ``filozofii'' RPM. Celem jego projektant�w by�o umo�liwienie u�ycia pierwotnych kod�w �r�d�owych. Zanim powsta� RPM, jego autorzy u�ywali RPP (przy czym podkre�laj�, �e RPM nie nie jest na nim oparty ), w kt�rym udost�pniano poprawione kody �r�d�owe, konkretnie te, kt�re by�y u�ywane do instalacji. Teoretycznie mog�oby to wystarczy�, bo mo�na by�o zainstalowa� pakiet �r�d�owy RPP i skompilowa� go (poleceniem make) bez wi�kszych problem�w. Jednak�e nie by�y to oryginalne �r�d�a i trudno by�o na pierwszy rzut oka powiedzie� co w nich zosta�o zmienione. Niezb�dnym by�o �ci�gni�cie r�wnie� oryginalnych �r�de�. RPM za� zawiera oryginalne �r�d�a wraz z poprawkami kt�rych dokonano. W opinii autor�w rozwi�zanie to jest znacznie lepsze. Dlaczego?

Z paru powod�w. Po pierwsze, je�li pojawi si� nowa wersja programu to nie zaczynamy od zera. Niekt�re poprawki, kt�re by�y dobre dla poprzedniej wersji, mog� by� w�a�ciwe, najwy�ej po minimalnych zmianach i dla obecnej. By si� o tym przekona�, wystarczy do nich zajrze�. Poza tym wszystkie domy�lne opcje potrzebne do instalacji s� w ten spos�b �atwo dost�pne.

Poza tym RPM zaprojektowano tak, aby umo�liwi� sprawdzanie wielu istotnych informacji dotycz�cych zar�wno pojedy�czego, konkretnego pakietu jak i ich zestawu b�d� te� wszystkich pakiet�w zainstalowanych w danym systemie. Przyk�adem takiej informacji jest lista pakiet�w, kt�rych dany pakiet wymaga wraz z numerami wersji. Mo�liwe jest r�wnie� sprawdzenie z jakiego pakietu pochodzi konkretny plik oraz gdzie mo�na znale�� jego wersj� �r�d�ow�. Pliki RPM s� ju� wewn�trznie spakowane, ale sprawdzanie informacji dotycz�cych konkretnego pakietu jest proste i szybkie dzi�ki specjalnemu binarnemu nag��wkowi kt�ry zawiera praktycznie wszystkie niezb�dne informacje o pakiecie.

Innym atutem RPM jest umiej�tno�� weryfikacji pakiet�w. Je�li boisz si�, �e skasowa�e� jaki� wa�ny plik, to mo�esz to po prostu sprawdzi�. RPM poinformuje Ci� o wykrytych nieprawid�owo�ciach. Je�li zajdzie potrzeba, to mo�esz �atwo odnowi� zainstalowany pakiet przy czym Twoje pliki konfiguracyjne zostan� zachowane. Oczywi�cie mo�esz te� zainstalowa� je od nowa.

Autorzy chc� podzi�kowa� grupie ludzi od dystrybucji BOGUS za wiele ich idei i pomys��w kt�re wykorzystano w RPM. Gdy� o ile RPM zosta� napisany w ca�o�ci przez Red Hat Software, to zasady jego dzia�ania s� oparte na kodzie stworzonym przez BOGUS (PM oraz PMS).

3. Informacje og�lne

3.1 Sk�d wzi�� RPM?

Najprostszym sposobem jest instalacja Linux-a Red Hat. Je�li kto� nie chce tego robi� to mo�e u�ywa� RPM bez tego. W Polsce RPM jest dost�pny np. pod adresem: ftp.icm.edu.pl - polskim mirrorze ftp.redhat.com.

3.2 Wymagania RPM

Podstawowym wymaganiem RPM-a jest cpio o numerze wersji 2.4.2 lub wy�szym. Mimo �e RPM jest pomy�lany do pracy pod Linux-em to r�wnie mo�e by� przeniesiony na inne systemy Unix. W rzeczywisto�ci uda�o si� go ju� uruchomi� pod SunOS, Solaris, AIX, Irix, AmigaOS i wieloma innymi systemami. Jednak nale�y pami�ta�, �e pakiety binarne stworzone na r�nych Unix-ach mog� nie by� ze sob� zgodne.

S� to minimalne wymagania by zainstalowa� RPM-y. By tworzy� RPM-y z kodu �r�d�owego potrzebne jest r�wnie� wszystko to co normalnie jest wymagane przy tworzeniu pakietu np. gcc, make, itd.

4. U�ywanie RPM

Najprostszym wykorzystaniem RPM jest instalacja nowego pakietu:

        rpm -i foobar-1.0-1.i386.rpm
R�wnie proste jest jego odinstalowanie:
        rpm -e foobar

Przyk�adem bardziej z�o�onego, ale bardzo u�ytecznego polecenia jest instalacja pakiet�w poprzez FTP. Je�li jeste� pod��czony do sieci i chcesz zainstalowa� nowy pakiet, to wszystko co musisz zrobi� to poda� nazw� pliku jako poprawny URL, np.:

        rpm -i ftp://ftp.pht.com/pub/linux/redhat/rh-2.0-beta/RPMS/foobar-1.0-1.i386.rpm

Chcia�bym podkre�li�, �e w tym przypadku RPM sprawdzi b�d� zainstaluje pakiet poprzez FTP.

By�y to w miar� proste polecenia, lecz rpm mo�e by� u�yty na wiele wi�cej sposob�w jak mo�na si� �atwo przekona� pisz�c w linii komend

        rpm
i naciskaj�c Enter:
RPM version 2.3.9
Copyright (C) 1997 - Red Hat Software
This may be freely redistributed under na warunkach
 of the 
GNU Public License

usage: rpm {--help}
       rpm {--version}
       rpm {--initdb}   [--dbpath <dir>]
       rpm {--install -i} [-v] [--hash -h] [--percent] [--force] [--test]
                        [--replacepkgs] [--replacefiles] [--root <dir>]
                        [--excludedocs] [--includedocs] [--noscripts]
                        [--rcfile <file>] [--ignorearch] [--dbpath <dir>]
                        [--prefix <dir>] [--ignoreos] [--nodeps]
                        [--ftpproxy <host>] [--ftpport <port>]
                        file1.rpm ... fileN.rpm
       rpm {--upgrade -U} [-v] [--hash -h] [--percent] [--force] [--test]
                        [--oldpackage] [--root <dir>] [--noscripts]
                        [--excludedocs] [--includedocs] [--rcfile <file>]
                        [--ignorearch]  [--dbpath <dir>] [--prefix <dir>] 
                        [--ftpproxy <host>] [--ftpport <port>]
                        [--ignoreos] [--nodeps] file1.rpm ... fileN.rpm
       rpm {--query -q} [-afpg] [-i] [-l] [-s] [-d] [-c] [-v] [-R]
                        [--scripts] [--root <dir>] [--rcfile <file>]
                        [--whatprovides] [--whatrequires] [--requires]
                        [--ftpuseport] [--ftpproxy <host>] [--ftpport <port>]
                        [--provides] [--dump] [--dbpath <dir>] [targets]
       rpm {--verify -V -y} [-afpg] [--root <dir>] [--rcfile <file>]
                        [--dbpath <dir>] [--nodeps] [--nofiles] [--noscripts]
                        [--nomd5] [targets]
       rpm {--setperms} [-afpg] [target]
       rpm {--setugids} [-afpg] [target]
       rpm {--erase -e} [--root <dir>] [--noscripts] [--rcfile <file>]
                        [--dbpath <dir>] [--nodeps] [--allmatches]
                        package1 ... packageN
       rpm {-b|t}[plciba] [-v] [--short-circuit] [--clean] [--rcfile  <file>]
                        [--sign] [--test] [--timecheck <s>] specfile
       rpm {--rebuild} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm
       rpm {--recompile} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm
       rpm {--resign} [--rcfile <file>] package1 package2 ... packageN
       rpm {--addsign} [--rcfile <file>] package1 package2 ... packageN
       rpm {--checksig -K} [--nopgp] [--nomd5] [--rcfile <file>]
                           package1 ... packageN
       rpm {--rebuilddb} [--rcfile <file>] [--dbpath <dir>]
       rpm {--querytags}

Wszystkie te opcje s� opisane w podr�czniku systemowym "man" dotycz�cym RPM.

5. A co tak naprawd� mo�na zrobi� z RPM?

RPM jest bardzo wygodnym narz�dziem i jak mo�na by�o si� przekona�, ma sporo opcji. Najlepsz� metod� zapoznania si� z nimi s� przyk�ady.

Pokaza�em ju� najprostsz� instalacj� i usuwanie pakiet�w, czas na troch� ciekawsze przyk�ady:

To by�o tylko par� przyk�ad�w, wi�cej znajdziesz np. w man-ie. Na pewno wpadniesz na ciekawsze w miar� jak b�dziesz lepiej poznawa� RPM.

6. Tworzenie rpm-�w.

Tworzenie rpm-�w jest do�� proste, szczeg�lnie je�li oprogramowanie kt�re chcesz w nie w�o�y� poprawnie si� instaluje.

Procedura tworzenia RPM-�w wygl�da tak:

Zazwyczaj RPM tworzy zar�wno pakiety binarne jak i �r�d�owe.

6.1 Plik rpmrc

W chwili obecnej, jedyny spos�b konfiguracji RPM-a jest dost�pny poprzez plik /etc/rpmrc. Przyk�adowy plik wygl�da tak:

require_vendor: 1
distribution: Moja w�asna dystrybucja!
require_distribution: 1
topdir: /usr/src/me
vendor: Kubu�soft
packager: Pakuj�cy RPM w Kubu�soft <pakiety@kubu�soft.com.pl>

optflags: i386 -O2 -m486 -fno-strength-reduce
optflags: alpha -O2
optflags: sparc -O2

signature: pgp
pgp_name: Pakuj�cy RPM w Kubu�soft
pgp_path: /home/pakiety/.pgp

tmppath: /usr/tmp

Wiersz require_vendor zmusza RPM-a do szukania wiersza z nazw� producenta pakiet�w (vendor). Ta mo�e pochodzi� z pliku /etc/rpmrc lub z nag��wka pliku .spec. By wy��czy� t� opcj�, zmie� liczb� na 0. Analogicznie jest w przypadku wierszy require_distribution oraz require_group.

Nast�pnym wiersz zawiera distribution i okre�la nazw� dystrybucji. Mo�esz j� zdefiniowa� tutaj, b�d� p�niej, w nag��wku pliku specyfikuj�cego. Tworz�c pakiet dla konkretnej dystrybucji warto zadba� by wiersz ten zawiera� poprawn� informacj�, nawet pomimo tego, �e nie jest wymagany. Tyczy si� to r�wnie� wiersza vendor (producent), cho� nazwa mo�e by� zupe�nie dowolna (np. Joe's Software, Rock Music Emporium).

RPM pozwala r�wnie� tworzy� pakiety dla r�nych platform sprz�towych. Plik rpmrc mo�e zawiera� zmienn� ``optflags'' wykorzystywan� przy building budowaniu tych element�w pakietu, kt�re wymagaj� opcji zale�nych od platformy. Dok�adniejszy opis tej zmiennej pojawi si� w jednym z nast�pnych rodzia��w.

Nie s� to oczywi�cie wszystkie etykiety/makra. Jest ich wi�cej. By si� im przyjrze� spr�buj komendy:

rpm --showrc
kt�ra powinna wypisa� wszystkie mo�liwe etykiety wraz z ich warto�ciami (o ile s� ustawione).

6.2 Plik specyfikuj�cy .spec

Niniejszy rozdzia� zawiera opis pliku specyfikuj�cego dla pakietu. Plik taki s� niezb�dne by stworzy� pakiet. Zawiera on opis oprogramowania wraz z instrukcjami instalacyjnymi oraz list� wszystkich plik�w binarnych przez niego instalowanych.

Plik specyfikuj�cy warto jest nazwa� zgodnie z konwencj�. Powinno to wygl�da� mniej wi�cej tak: nazwa pakietu-kreska-numer wersji-kreska-numer modyfikacji-kropka-spec.

A tak wygl�da przyk�adowy plik specyfikuj�cy (eject-3.0-1.spec):

Summary: ejects ejectable media and controls auto ejection
Name: eject
Version: 1.4
Release: 3
Copyright: GPL
Group: Utilities/System
Source: sunsite.unc.edu:/pub/Linux/utils/disk-management/eject-1.4.tar.gz
Patch: eject-1.4-make.patch
Patch1: eject-1.4-jaz.patch
%description
This program allows the user to eject media that is autoejecting like
CD-ROMs, Jaz and Zip drives, and floppy drives on SPARC machines.

%prep
%setup
%patch -p1
%patch1 -p1

%build
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"

%install
install -s -m 755 -o 0 -g 0 eject /usr/bin/eject
install -m 644 -o 0 -g 0 eject.1 /usr/man/man1

%files
%doc README COPYING ChangeLog

/usr/bin/eject
/usr/man/man1/eject.1

6.3 Nag��wek

Nag��wek pliku .spec zawiera kilka standardowych p�l kt�re powinny by� wype�nione. Oto znaczenie poszczeg�lnych p�l:

6.4 Sekcja Prep

Jest to druga cz�� pliku specyfikuj�cego. U�ywa si� jej do przygotowania �r�de� do kompilacji/instalacji. W niej powinny znajdowa� si� wszystkie czynno�ci niezb�dne by nanie�� poprawki do �r�de� i doprowadzi� je do stanu w kt�rym b�dzie mo�na wyda� komend� make.

Jedn� rzecz nale�y podkre�li�: Ka�da z tych cz�ci jest tak naprawd� tylko miejscem do umieszczenia odpowiednich skrypt�w. Mo�esz po prostu napisa� skrypt w sh a nast�pnie umie�ci� go po znaczniku %prep by rozpakowa� i wprowadzi� poprawki do swoich program�w. By to u�atwi� powsta�y specjalne makra.

Pierwszym z nich jest makro %setup. W swojej najprostszej formie (bez dodatkowych opcji w linii polece�), rozpakowywuje ona �r�d�a i zmienia bie��cy katalog na katalog zawieraj�cy �r�d�a. Poza tym ma jednak dodatkowe opcje:

Nast�pne dost�pne makra znajduj� si� w makrze %patch. Makro te pomaga zautomatyzowa� proces nanoszenie poprawek do �r�de�. Mo�liwe s� liczne opcje opisane poni�ej:

To s� wszystkie makra jakich potrzebujesz. Po ich poprawnym napisaniu mo�na wykona� dowolne inne komendy konfiguracyjne poprzez stworzenie odpowiednich fragment�w skrypt�w w sh. Wszystko co zostanie umieszczone a� do makra %build (omawianego w nast�pnym rozdziale) b�dzie wykonane przez sh. Przyk�ady powy�ej mog� sugerowa� rzeczy jakie chcia�by� tam umie�ci�.

6.5 Sekcja Build

Dla tej sekcji nie ma jakich� specjalnych makr. Powinno si� w niej umieszcza� dowolne polecenia potrzebne do stworzenia pakietu po rozpakowaniu �r�de�, naniesieniu poprawek i przej�ciu do katalogu roboczego. Jest to po prostu nast�pny zbi�r polece� przekazany do sh, wi�c mo�na tu u�ywa� dowolnych poprawnych polece� sh (w��cznie z komentarzami). Katalog roboczy na pocz�tku ka�dej z sekcji jest ustawiany na katalog g��wny z plikami �r�d�owymi, o czym trzeba pami�ta� i w razie potrzeby przechodzi� do odpowiednich podkatalog�w.

6.6 Sekcja Install

Tu r�wnie� nie ma jakich� specjalnych makr. Sekcja ta powinna zawiera� list� polece� potrzebnych do instalacji pakietu. Je�li wykonujesz make install by zainstalowa� pakiet, umie�� to tu. Mo�esz r�wnie� nanie�� poprawki do makefile'a zanim wykonasz make install. Je�li nie to umie�� tu sekwencj� polece� sh jakich potrzebujesz. Katalog roboczy, identycznie jak w poprzednim przypadku, jest ustawiany przed wykonaniem tych polece� na g��wny katalog z plikami �r�d�owymi.

6.7 Opcjonalne sekcje pre i post dla sekcji Install/Uninstall

Mo�esz tu umie�ci� skrypty do wykonania przed i po instalacji/deinstalacji (tzn. sekcjami Install/Uninstall). G��wny pow�d to np. potrzeba wykonania komendy ldconfig po instalacji b�d� usuwaniu pakiet�w zawieraj�cych biblioteki dzielone. Makra s� zdefiniowane jak poni�ej:

Sekcje te mog� zawiera� dowolne poprawne polecenia sh ( nie potrzebujesz wstawia� #!/bin/sh na pocz�tku).

6.8 Sekcja Files

W sekcji tej musisz wypisa� pliki jakie wchodz� w sk�ad pakietu. RPM nie potrafi okre�li� jakie pliki zostaj� zainstalowan na skutek np. make install. Tego si� po prostu NIE DA rozs�dnie zrobi�. Owszem, by�a propozycja wykonywania polecenia find przed i po instalacji pakietu. Jednak w systemach wielou�ytkownikowych nie jest to zbyt sensowne gdy� w tym samym czasie mog�o powsta� wiele innych plik�w nie maj�cych najmniejszego zwi�zku z instalowanym pakietem.

W tej sekcji dost�pne jest pare specjalnych makr. S� one opisane poni�ej:

Najwi�ksz� trudno�ci� w li�cie plik�w jest podawanie katalag�w. Je�li np. podasz przez pomy�k� /usr/bin, to Tw�j pakiet rpm b�dzie zawiera� wszystkie pliki w katalogu /usr/bin w Twoim komputerze.

6.9 Tworzenie pakietu

Katalogi z plikami �r�d�owymi

Jedn� z podstawowych rzeczy jest poprawnie skonfigurowane katalog�w w kt�rych RPM b�dzie budowa� pakiet. Robi si� to poprzez plik /etc/rpmrc. Wi�kszo�� os�b u�ywa po prostu /usr/src.

Mo�liwe, �e b�dziesz potrzebowa� utworzy� poni�sze katalogi:

Pr�bne tworzenie pakietu

Pierwsz� rzecz� do zroienia jest doprowadzenie plik�w �r�d�owych do takiego stanu by kompilowa�y i/lub instalowa�y si� bez pomocy RPM-a. By to osi�gn��, rozpakuj �r�d�a i zmie� nazw� katalogu na $NAZWA.orig. Nast�pnie ponownie rozpakuj �r�d�a i pracuj na nich. Wejd� do ich katalogu i post�puj zgodnie z instrukcjia ich instalacji/kompilacji. Je�li b�dzie konieczna edycja jakich� plik�w to konieczne b�dzie wygenerowanie pliku z poprawkami (patch). Je�li doprowadzisz �r�d�a do stanu w kt�rym b�d� si� poprawnie instalowa�/kompilowa� - wyczy�� katalog �r�d�owy. Upewnij si�, �e wszystkie pliki stworzone w skrypcie konfiguracyjnym (configure) zosta�y usuni�te. Nast�pnie wyjd� z katalogu �r�d�owego i wykonaj co� takiego:

        diff -uNr dirname.orig dirname > ../SOURCES/dirname-linux.patch
(dirname w tym przyk�adzie to to samo co $NAZWA par� linii powy�ej). Polecenie to stworzy plik z poprawkami jaki b�dzie m�g� by� wykorzystany w pliku specyfikuj�cy. Zauwa�, �e ``linux'' w nazwie pliku z poprawkami jest jakim� wybranym identyfikatorem. Zamiast tego mo�na u�y� czego� bardziej precyzyjnego jak np. ``config'' lub ``bugs'' (b��dy) by opisa� dlaczego poprawki by�y potrzebne. Przed u�yciem pliku z poprawkami warto do niego zajrze� by si� upewni�, �e przypadkiem nie znalaz�o si� w nim co� niew�a�ciwego jak np. pliki binarne.

Tworzenie listy plik�w

Teraz, gdy �r�d�a si� kompiluj� i instaluj� i wiadomo jak to robi� to zr�b to, skompiluj i zainstaluj. Przyjrzyj si� wynikowi instalacji i stw�rz w ten spos�b list� plik�w do u�ycia w pliku specyfikuj�cym. Zazwyczaj plik specyfikuj�cy powstaje r�wnocze�nie z opisywanymi tu krokami. Po prostu tworzy si� go na pocz�tku wstawiaj�c to co jest znane i potem w miar� post�pu prac uzype�nia si� go o brakuj�ce kawa�ki.

Tworzenie pakietu RPM

Gdy plik specyfikuj�cy jest gotowy, mo�na ju� pr�bowa� tworzy� nowy pakiet. Najwygodniej jest to zrobi� poni�szym poleceniem:

        rpm -ba foobar-1.0.spec

Opcja -b ma par� interesuj�cyh podopcji:

Jest te� par� dodatkowych podopcji do opcji -b:

6.10 Testowanie pakietu

Po stworzeniu pakietu rpm �r�d�owego i binarnego nale�y je przetestowa�. Najpro�ciej i najlepiej jest wykorzysta� do tego zupe�nie inny komputer ni� ten na kt�rym pakiet by� tworzony. W ko�cu przy tworzeniu pakietu by� on do�� cz�sto instalowany i na komputerze na kt�rym powstawa� powinno by� to zrobione do�� dobrze.

Mo�na te� pr�bowa� rpm -u nazwapakietu.rpm na testowanym pakiecie ale mo�e by� to zdradliwe w sytuacji w kt�rej jakie� pliki zosta�y pomini�te w li�cie plik�w i nie zostan� wtedy usuni�te. Wtedy zainstalowany program b�dzie kompletny mimo tego, �e rpm b�dzie b��dny. Pami�taj, �e poniewa� Ty ju� zrobi�e� rpm -ba package, to zdecydowana wi�kszo�� os�b instaluj�cych Tw�j pakiet wykona jedynie rpm -i package. Upewnij si�, �e nie wykonujesz w sekcjach build lub install czego� co powinno by� zrobione gdy instalowany jest wy��cznie pakiet binarny.

6.11 Co robi� z Twoimi nowymi RPM-ami ?

Gdy ju� stworzy�e� sw�j w�asny pakiet RPM (zak�adaj�c, �e nie ma ju� takiego pakietu dost�pnego pod postaci� RPM) mo�esz udost�pni� wynik swojej pracy innym (zak�adaj�c �e to czego pakiet stworzy�e� mo�e by� tak udost�pniane). By udost�pni�, umie�� to na ftp.redhat.com.

6.12 Co teraz?

Prosimy sprawdzi� si�, �e nic nie zosta�o pomini�te jeszcze raz czytaj�c rozdzia�y o "Testowaniu" i "Co robi� z nowymi RPM-ami". Chcemy mie� jako RPM wszystko co si� da ale chcemy, �eby by�y to dobre RPM-y. Prosimy wi�c po�wi�ci� troch� czasu na ich dok�adne przetestowanie i prosimy te� o umieszczenie ich w archiwum ftp tak, by ka�dy m�g� z nich skorzysta�. A tak�e, prosimy upewni� si�, �e umieszczasz jedynie bezp�atne oprogramowanie. Oprogramowanie komercyjne i shareware nie powinno by� umieszczane w archiwum o ile nie zawieraj� klauzuli w ich prawach autorskich to dopuszczaj�cej. Dotyczy to np. Netscape, ssh, pgp, etc.

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.

8. Uwaga o prawach autorskich

Poni�szy dokument i jego zawarto�� s� chronione prawem autorskim. Rozpowszechnianie go i jego zawarto�ci jest dozwolone tak d�ugo jak d�ugo jego pozostaj� one nie zmienione. Innymi s�owy mo�na go wy��cznie przeformatowywa�, drukowa� i rozpowszechnia�.

Hosting by: Hurra Communications Sp. z o.o.
Generated: 2007-01-26 18:02:24