![]() |
|
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.
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).
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.
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.
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.
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:
rpm -Uhv foobar-1.0-1.i386.rpm
rpm -Va
(od ang. Verify all)
rpm -qf /usr/X11R6/bin/xjewel
(od ang. query file).
W wyniku otrzymasz nazw� pakietu:
xjewel-1.6-1
rpm -qpi koules-1.2-2.i386.rpm
Wy�wietli Ci si� co� takiego:
Name : koules Distribution: Red Hat Linux Colgate
Version : 1.2 Vendor: Red Hat Software
Release : 2 Build Date: Mon Sep 02 11:59:12 1996
Install date: (none) Build Host: porky.redhat.com
Group : Games Source RPM: koules-1.2-2.src.rpm
Size : 614939
Summary : SVGAlib action game with multiplayer, network, and sound support
Description :
This arcade-style game is novel in conception and excellent in execution.
No shooting, no blood, no guts, no gore. The play is simple, but you
still must develop skill to play. This version uses SVGAlib to
run on a graphics console.
(od ang. query package info).
rpm -qpl koules-1.2-2.i386.rpm
W wyniku otrzymasz ich list�:
/usr/doc/koules
/usr/doc/koules/ANNOUNCE
/usr/doc/koules/BUGS
/usr/doc/koules/COMPILE.OS2
/usr/doc/koules/COPYING
/usr/doc/koules/Card
/usr/doc/koules/ChangeLog
/usr/doc/koules/INSTALLATION
/usr/doc/koules/Icon.xpm
/usr/doc/koules/Icon2.xpm
/usr/doc/koules/Koules.FAQ
/usr/doc/koules/Koules.xpm
/usr/doc/koules/README
/usr/doc/koules/TODO
/usr/games/koules
/usr/games/koules.svga
/usr/games/koules.tcl
/usr/man/man6/koules.svga.6
(od ang. query package list)
rpm -qa
(od ang. query all).
rpm -K -vv pakiet.rpm
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.
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:
/etc/rpmrc
jest obecny i poprawnie skonfigurowany w Twoim systemie.Zazwyczaj RPM tworzy zar�wno pakiety binarne jak i �r�d�owe.
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).
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
Nag��wek pliku .spec zawiera kilka standardowych p�l kt�re powinny by� wype�nione. Oto znaczenie poszczeg�lnych p�l:
Summary:
Jest to jednowierszowy,
skr�cony opis pakietu. Name:
To pole zawiera nazw� pliku rpm.
�ci�le jest to string b�d�cy t� cz�ci� nazwy pliku
rpm kt�ra odpowiada nazwie pakietu.Version:
To pole zawiera wersj� pliku rpm.
�ci�le jest to string b�d�cy t� cz�ci� nazwy pliku
rpm kt�ra odpowiada wersji pakietu.Release:
To pole zawiera numer modyfikacji
pliku rpm. Jest to liczba m�wi�ca z kt�r�
modyfikacj� (podwersj�) obecnej wersji pakietu
mamy do czynienia (tzn. je�li dokonany w pakiecie
tylko minimalnych poprawek b��d�w to wypuszczamy
pakiet w tej samej wersji ale z numerem modyfikacji
wi�kszym o jeden).Icon:
To pole zawiera nazw� pliku z ikon�
przeznaczon� do wykorzystania przez narz�dzia
instalacyjne wy�szego poziomu
(np. ``glint'' RedHat-a). Plik ten powinien by�
zapisany w formacie GIF i znajdowa� si� w
katalogu SOURCES.Source:
This wiersz zawiera nazw�
pliku �r�d�owego z kt�rego jest budowany dany rpm.
Jest to pomocne w sytuacji gdy chce si� kiedy�
zajrze� do odpowiednich kod�w �r�d�owych lub
sprawdzi�
czy nie ma ich nowszej wersji.
Uwaga: Nazwa pliku w tym wierszu MUSI
odpowiada� nazwie pliku obecnego w Twoim systemie.
(tzn. nie zmieniaj nazw plik�w �r�d�owych po
ich �ci�gni�ciu). Mo�na poda� wi�cej ni� jeden
plik �r�d�owy pisz�c w poni�szy spos�b:
Source0: blah-0.tar.gz
Source1: blah-1.tar.gz
Source2: fooblah.tar.gz
Te pliki powinny si� znale�� w katalogu SOURCES
.
(Struktura tego katalogu jest opisana w rozdziale
"Katalogi z plikami �r�d�owymi".)Patch:
To pole zawiera miejsce w kt�rym
b�dzie mo�na znale�� poprawki(patch) je�li
zainstnieje potrzeba ich ponownego �ci�gni�cia.
Uwaga: Nazwa tego pliku musi odpowiada� nazwie pliku
jaki jest u�yty do naniesienia Twoich poprawek.
Mo�na te� poda� wiele plik�w z poprawkami analogicznie
do wielu plik�w �r�d�owych:
Patch0: blah-0.patch
Patch1: blah-1.patch
Patch2: fooblah.patch
Te pliki powinny si� znale�� w katalogu SOURCES
.Copyright:
Ten wiersz opisuje do jakiej
kategorii ze wzgl�du na prawo autorskie nale�y
dane oprogramowanie. Najlepiej
wykorzysta� jedn� z dobrze zdefiniowanych kategorii:
GPL, BSD, MIT, public domain, distributable,
lub commercial.BuildRoot:
Ten wiersz pozwala zdefiniowa�
g��wny katalog (``root'') dla tworzenia i instalacji pakietu.
Mo�na to wykorzysta� np. do testowania instalacji pakietu
zanim si� go zainstaluje w docelowym miejscu.Group:
Ten wiersz s�u�y do tego, by
programy instalacyjne wy�szego poziomu (wspomniany
``glint'') wiedzia�y w jakim miejscu ich hierarchicznej
struktury grup pakiet�w umie�ci� dany pakiet.
W chwili obecnej drzewo grup pakiet�w wygl�da
mniej wi�cej tak:
Applications
Communications
Editors
Emacs
Engineering
Spreadsheets
Databases
Graphics
Networking
Mail
Math
News
Publishing
TeX
Base
Kernel
Utilities
Archiving
Console
File
System
Terminal
Text
Daemons
Documentation
X11
XFree86
Servers
Applications
Graphics
Networking
Games
Strategy
Video
Amusements
Utilities
Libraries
Window Managers
Libraries
Networking
Admin
Daemons
News
Utilities
Development
Debuggers
Libraries
Libc
Languages
Fortran
Tcl
Building
Version Control
Tools
Shells
Games
%description
Nie jest to element nag��wka
w �cis�ym tego s�owa znaczeniu ale jego opis powinien si� znale��
wraz z opisem nag��wka. Dla ka�dego pakietu lub subpakietu
potrzebne jest jedno takie pole zawieraj�ce przejrzysty
i zrozumia�y opis pakietu.
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:
-n name
ustawi nazw� roboczego katalogu na name
.
Domy�lnie jest to $NAZWA-$WERSJA
.
Do innych mo�liwo�ci nale�� $NAZWA
,
${NAZWA}${WERSJA}
,
czy jakakolwiek inna u�ywana przez g��wny plik tar.
(Prosz� zauwa�y�, �e zmienne ``$'' nie
s� faktycznymi zmiennymi dost�pnymi wewn�trz pliku
specyfikuj�cego. W rzeczywisto�ci s� one tutaj u�yte
w miejsce przyk�adowej nazwy. W pakiecie nale�y u�y�
rzeczywistej nazwy i wersji, a nie zmiennej.)-c
utworzy i wejdzie do
wymienionego katalogu zanim zacznie si� rozpakowywanie
poprzez untar.-b #
wykona untar (rozpakuje) Source# zanim wejdzie do katalogu roboczego
(nie ma sensu ��czenie tej opcji z -c
, a wi�c si� tego nie robi).
Jest to przydatne w przypadku wielu plik�w
�r�d�owych.-a #
wykona untar (rozpakuje) Source# po wej�ciu do katalogu.-T
Ta opcja zmienia domy�ln� procedur�
rozpakowywania (untar) �r�de� i wymaga -b 0
lub
-a 0
by g��wny plik �r�d�owy zosta� rozpakowany (untar).
Komenda ta jest potrzebna gdy u�ywany jest wi�cej ni� jeden
komplet plik�w �r�d�owych.-D
Nie usuwaj katalogu przed
rozpakowaniem.
Jest ona przydatna tylko wtedy, gdy ma si� wi�cej ni�
jedno makro konfiguracyjne.
Powinna by� u�ywana wy��cznie w makrach konfiguracyjnych
wy��cznie po wykonaniu pierwszego z nich
(ale nigdy w�wn�trz pierwszego z nich).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:
#
zastosuje Patch#
jako plik z poprawkami.-p #
podaje liczb� katalog�w
do odrzucenia z nazwy przed wykorzystaniem polecenia patch(1)-P
Domy�lnie stosowana jest
Patch
(lub
Patch0
). Ta flaga wy��cza to zachowanie a wi�c wymaga
dodatkowo 0
by g��wne pliki �r�d�owe zosta�y
rozpakowane. Opcja ta
jest przydatna w drugim (b�d� dalszym) makrze
%patch
kt�re wymaga innego ni� pierwsze makro
numeru poprawki.%patch#
zamiast : %patch # -P
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�.
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.
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.
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:
%pre
makro z poleceniami wykonywanymi przed sekcj� Install.%post
makro z poleceniami wykonywanymi po sekcji Install.%preun
makro z poleceniami wykonywanymi przed sekcj� Uninstall.%postun
makro z poleceniami wykonywanymi po sekcji Uninstall.Sekcje te mog� zawiera� dowolne poprawne polecenia sh
( nie potrzebujesz wstawia� #!/bin/sh
na pocz�tku).
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:
%doc
s�u�y do zaznaczenia kt�re pliki
pakietu s� jego dokumentacj�. Dokumentacja ta zostanie
umieszczona w katalogu:
/usr/doc/$NAZWA-$WERSJA-$MODYFIKACJA
.
Mo�na zar�wno poda� nazwy kilku plik�w w linii zawieraj�cej
to makro jak i poda� te nazwy oddzielnie u�ywaj�c makra
dla ka�dej z nich.%config
s�u�y do zaznaczenia plik�w
konfiguracyjnych w obr�bie pakietu. Chodzi tu o pliki typu:
sendmail.cf, passwd, etc. W trakcie deinstalacji pliki
te s� usuwane o ile nie by�y zmieniane. Je�li by�y,
to ich nazwa zostaje zmieniona poprzez dodanie ko�c�wki
.rpmsave
.
Analogicznie jak dla plik�w z dokumentacj� jedno makro
mo�e s�u�y� do zdefiniowania kilku takich plik�w.%dir
zaznacza dany katalog jako
nale��cy do pakietu. Domy�lnie, je�li pojawi si�
nazwa katalogu BEZ makra %dir
, WSZYSTKO
w tym katalogu jest w��czane w liste plik�w i nast�pnie instalowane jako cz�� pakietu. To makro pozwala tego unikn��.%files -f <filename>
pozwala
na w��czenie listy plik�w znajduj�cej si� w jakim�
pliku w obr�bie katalogu z plikami �r�d�owymi.
Jest to wygodne gdy procedura instalacji buduje
w�asn� list� plik�w kt�r� nast�pnie mo�na w��czy� jedn� komend�
bez podawania nazw tych plik�w. 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.
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:
BUILD
jest katalogiem w kt�rym RPM buduje pakiet.
Pr�bne tworzenie pakietu mo�esz wykona� w jakimkolwiek
katalogu kt�ry tu podasz.SOURCES
jest katalogiem w kt�rym powiniene� umie�ci�
oryginalne pliki �r�d�owe i pliki z poprawkami. Jest to miejsce
do kt�rego RPM b�dzie zagl�da� domy�lnie.SPECS
jest katalogiem w kt�rym powinny si� znale��
wszystkie pliki specyfikuj�ce (spec).RPMS
RPM umie�ci tu binarme pliki RPM
po ich zbudowaniu.SRPMS
RPM umie�ci to pliki RPM z plikami �r�d�owymi.
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.
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.
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:
p
oznacza wykonanie sekcji prep
pliku
specyfikuj�cego. l
wykona par� r�nych test�w na plikach
%files
. c
wykonaj sekcj� prep
i kompiluj.
Jest to przydatne gdy jest si� niepewnym czy �r�d�a
w og�le b�d� si� kompilowa�/instalowa�. Owszem,
na pierwszy rzut oka mo�e to wygl�da� na zb�dne
gdy� mo�na dot�d pracowa� ze �r�d�ami a� b�d� si�
kompilowa� jednak gdy przyzwyczaisz si�
do wykorzystania RPM-a to spotkasz si� z sytuacjami w
kt�rach ta opcja oka�e si� przydatna.i
wykonaj prep, kompiluj i instaluj.b
prep, kompiluj, instaluj, i buduj jedynie
pakiet binarny. a
zbuduj wszystko - zar�wno pakiet �r�d�owy jak i binarny.-b
:
--short-circuit
przejdzie prosto do
okre�lonego etapu (mo�e by� u�yte wy��cznie z c oraz i)--clean
usuwa katalog ze �r�d�ami stworzony
w czasie budowania pakietu.--keep-temps
zachowa wszystkie pliki
temporalne i skrypty kt�re zosta�y umieszczone
w /tmp. Jakie s� to pliki mo�na si� dowiedzie�
wykorzystuj�c opcj� -v
.--test
nie wykonuje �adnych rzeczywistych
etap�w cho� wykonuje keep-temps.
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.
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.
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.
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.
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*
.
.
.
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.
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.
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.
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.
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