RPM HOWTO pl


Menadżer Pakietów RedHat-a (RPM) - Jak To Zrobić Autor: Donnie Barnes djb@redhat.com V2.0, 8 Kwietnia 1997 WWeerrssjjaa ppoollsskkaa:: JJaacceekk PPlliisszzkkaa pplliisszzkkaa@@ffuuww..eedduu..ppll 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 (RRedHat PPackage MManager). 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/sun­ site/docs/HOWTO/ . ______________________________________________________________________ Table of Contents: 1. Wprowadzenie 2. Do czego sÅ‚uży RPM? 3. Informacje ogólne 3.1. SkÄ…d wziąć RPM? 3.2. Wymagania RPM 4. Używanie RPM 5. A co tak 6. Tworzenie rpm-ów. 6.1. Plik rpmrc 6.2. Plik specyfikujÄ…cy .spec 6.3. Nagłówek 6.4. Sekcja Prep 6.5. Sekcja Build 6.6. Sekcja Install 6.7. Opcjonalne sekcje pre i post dla sekcji Install/Uninstall 6.8. Sekcja Files 6.9. Tworzenie pakietu 6.9.1. Katalogi z plikami źródÅ‚owymi 6.9.2. Próbne tworzenie pakietu 6.9.3. Tworzenie listy plików 6.9.4. Tworzenie pakietu RPM 6.10. Testowanie pakietu 6.11. Co robić z Twoimi nowymi RPM-ami ? 6.12. Co teraz? 7. Tworzenie RPM-ów na wiele platform. 7.1. PrzykÅ‚adowy plik specyfikujÄ…cy .spec 7.2. Dyrektywa optflags 7.3. Makra 7.4. WyÅ‚Ä…czanie pewnych platform w pakietach 7.5. Ostatnie poprawki 8. Uwaga o prawach autorskich ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee Skrót RPM pochodzi od ang. RRed Hat PPackage MManager 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, _M_a_x_i_m_u_m _R_P_M, która można Å›ciÄ…gnąć bÄ…dź zakupić w www.redhat.com . 22.. DDoo cczzeeggoo ssÅ‚Å‚uużżyy RRPPMM?? 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 _n_i_e 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 _s_z_y_b_k_i_e 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). 33.. IInnffoorrmmaaccjjee ooggóóllnnee 33..11.. SSkkÄ…Ä…dd wwzziiÄ…ąćć RRPPMM?? 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. 33..22.. WWyymmaaggaanniiaa RRPPMM 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. 44.. UUżżyywwaanniiee RRPPMM 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 _b_a_r_d_z_o 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 ] rpm {--install -i} [-v] [--hash -h] [--percent] [--force] [--test] [--replacepkgs] [--replacefiles] [--root ] [--excludedocs] [--includedocs] [--noscripts] [--rcfile ] [--ignorearch] [--dbpath ] [--prefix ] [--ignoreos] [--nodeps] [--ftpproxy ] [--ftpport ] file1.rpm ... fileN.rpm rpm {--upgrade -U} [-v] [--hash -h] [--percent] [--force] [--test] [--oldpackage] [--root ] [--noscripts] [--excludedocs] [--includedocs] [--rcfile ] [--ignorearch] [--dbpath ] [--prefix ] [--ftpproxy ] [--ftpport ] [--ignoreos] [--nodeps] file1.rpm ... fileN.rpm rpm {--query -q} [-afpg] [-i] [-l] [-s] [-d] [-c] [-v] [-R] [--scripts] [--root ] [--rcfile ] [--whatprovides] [--whatrequires] [--requires] [--ftpuseport] [--ftpproxy ] [--ftpport ] [--provides] [--dump] [--dbpath ] [targets] rpm {--verify -V -y} [-afpg] [--root ] [--rcfile ] [--dbpath ] [--nodeps] [--nofiles] [--noscripts] [--nomd5] [targets] rpm {--setperms} [-afpg] [target] rpm {--setugids} [-afpg] [target] rpm {--erase -e} [--root ] [--noscripts] [--rcfile ] [--dbpath ] [--nodeps] [--allmatches] package1 ... packageN rpm {-b|t}[plciba] [-v] [--short-circuit] [--clean] [--rcfile ] [--sign] [--test] [--timecheck ] specfile rpm {--rebuild} [--rcfile ] [-v] source1.rpm ... sourceN.rpm rpm {--recompile} [--rcfile ] [-v] source1.rpm ... sourceN.rpm rpm {--resign} [--rcfile ] package1 package2 ... packageN rpm {--addsign} [--rcfile ] package1 package2 ... packageN rpm {--checksig -K} [--nopgp] [--nomd5] [--rcfile ] package1 ... packageN rpm {--rebuilddb} [--rcfile ] [--dbpath ] rpm {--querytags} Wszystkie te opcje sÄ… opisane w podrÄ™czniku systemowym "man" dotyczÄ…cym RPM. 55.. AA ccoo ttaakk _n_a_p_r_a_w_d_Ä™ mmoożżnnaa zzrroobbiićć zz RRPPMM?? 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: · W praktyce instalujÄ…c pakiet chce siÄ™ usunÄ…c jego starÄ… wersjÄ™ (opcja -U od ang. upgrade). CzÄ™sto chcemy również widzieć postÄ™p instalacji (-h od ang. hash) oraz dostać poszerzone komunikaty o bÅ‚Ä™dach (-v od ang. verbose), tak wiÄ™c praktycznie najczęściej pakiety instaluje siÄ™ poprzez: rpm -Uhv foobar-1.0-1.i386.rpm · Powiedzmy, że skasowaÅ‚eÅ› przypadkiem jakieÅ› pliki, niestety, nie znasz nawet ich nazw. JeÅ›li wiÄ™c chcesz zweryfikować caÅ‚y system i sprawdzić czego może brakować, zrób tak: rpm -Va (od ang. Verify all) · Powiedzmy, że natknÄ…Å‚eÅ› siÄ™ na plik, którego nie znasz. Å»eby sprawdzić do jakiego pakietu należy, zrób: rpm -qf /usr/X11R6/bin/xjewel (od ang. query file). W wyniku otrzymasz nazwÄ™ pakietu: xjewel-1.6-1 · NatknÄ…Å‚eÅ› siÄ™ na jakiÅ› plik RPM i chciaÅ‚byÅ› sprawdzić co jest w Å›rodku. Zrób tak: 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). · A teraz chciaÅ‚byÅ› sprawdzić jakie pliki wchodzÄ… w skÅ‚ad tego pakietu: 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) · Chcesz wyÅ›wietlić listÄ™ pakietów zainstalowanych w Twoim systemie? Nic prostszego: rpm -qa (od ang. query all). · Chcesz sprawdzić czy pakiet jest kompletny, nie przekÅ‚amany i mam poprawny podpis PGP? 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. 66.. TTwwoorrzzeenniiee rrppmm--óóww.. 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: · Upewnij siÄ™, że plik /etc/rpmrc jest obecny i poprawnie skonfigurowany w Twoim systemie. · Doprowadź to tego, że pliki źródÅ‚owe dla których tworzysz rpm poprawnie siÄ™ instalujÄ…. · Przygotuj listÄ™ poprawek jakich musiaÅ‚eÅ› dokonać by kod kompilowaÅ‚ siÄ™ poprawnie. · Przygotuj plik specyfikujÄ…cy (.spec) dla Twojego pakietu. · Upewnij siÄ™, że wszystko jest na swoim miejscu. · Zbuduj pakiet używajÄ…c rpm. Zazwyczaj RPM tworzy zarówno pakiety binarne jak i źródÅ‚owe. 66..11.. PPlliikk rrppmmrrcc 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 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). 66..22.. PPlliikk ssppeeccyyffiikkuujjÄ…Ä…ccyy ..ssppeecc 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 66..33.. NNaaggÅ‚łóówweekk 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 kat­ alogu 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. 66..44.. SSeekkccjjaa PPrreepp 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 ``$'' _n_i_e 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 _z_a_n_i_m zacznie siÄ™ rozpakowywanie poprzez untar. · -b # wykona untar (rozpakuje) Source# _z_a_n_i_m 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# _p_o 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 _N_i_e usuwaj katalogu przed rozpakowaniem. Jest ona przydatna tylko wtedy, gdy ma siÄ™ wiÄ™cej niż jedno makro konfiguracyjne. Powinna być używana _w_y_Å‚_Ä…_c_z_n_i_e w makrach konfiguracyjnych wyÅ‚Ä…cznie _p_o 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. · Można też napisać %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ć. 66..55.. SSeekkccjjaa BBuuiilldd 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). KKaattaalloogg rroobboocczzyy nnaa ppoocczzÄ…Ä…ttkkuu kkaażżddeejj zz sseekkccjjii jjeesstt uussttaawwiiaannyy nnaa kkaattaalloogg ggÅ‚łóówwnnyy zz pplliikkaammii źźrróóddÅ‚Å‚oowwyymmii, o czym trzeba pamiÄ™tać i w razie potrzeby przechodzić do odpowiednich podkatalogów. 66..66.. SSeekkccjjaa IInnssttaallll 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. 66..77.. OOppccjjoonnaallnnee sseekkccjjee pprree ii ppoosstt ddllaa sseekkccjjii IInnssttaallll//UUnniinnssttaallll 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 ( _n_i_e potrzebujesz wstawiać #!/bin/sh na poczÄ…tku). 66..88.. SSeekkccjjaa FFiilleess W sekcji tej _m_u_s_i_s_z 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 _N_I_E _D_A 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 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 _B_E_Z makra %dir, _W_S_Z_Y_S_T_K_O w tym katalogu jest wÅ‚Ä…czane w liste plików i nastÄ™pnie instalowane jako część pakietu. To makro pozwala tego uniknąć. · %files -f 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Å‚ _w_s_z_y_s_t_k_i_e pliki w katalogu /usr/bin w Twoim komputerze. 66..99.. TTwwoorrzzeenniiee ppaakkiieettuu 66..99..11.. KKaattaallooggii zz pplliikkaammii źźrróóddÅ‚Å‚oowwyymmii 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. 66..99..22.. PPrróóbbnnee ttwwoorrzzeenniiee ppaakkiieettuu 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ć wykorzys­ tany 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ć _d_l_a_c_z_e_g_o poprawki byÅ‚y potrzebne. Przed użyciem pliku z poprawkami warto do niego zajrzeć by siÄ™ upewnić, że przypad­ kiem nie znalazÅ‚o siÄ™ w nim coÅ› niewÅ‚aÅ›ciwego jak np. pliki binarne. 66..99..33.. TTwwoorrzzeenniiee lliissttyy pplliikkóóww 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. 66..99..44.. TTwwoorrzzeenniiee ppaakkiieettuu RRPPMM 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. Jest też parÄ™ dodatkowych podopcji do opcji -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. 66..1100.. TTeessttoowwaanniiee ppaakkiieettuu 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. 66..1111.. CCoo rroobbiićć zz TTwwooiimmii nnoowwyymmii RRPPMM--aammii ?? 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 . 66..1122.. CCoo tteerraazz?? 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, _p_r_o_s_i_m_y upewnić siÄ™, że umieszczasz jedynie _b_e_z_p_Å‚_a_t_n_e oprogramowanie. Oprogramowanie komercyjne i shareware _n_i_e powinno być umieszczane w archiwum o ile nie zawierajÄ… klauzuli w ich prawach autorskich to dopuszczajÄ…cej. Dotyczy to np. Netscape, ssh, pgp, etc. 77.. TTwwoorrzzeenniiee RRPPMM--óóww nnaa wwiieellee ppllaattffoorrmm.. 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. 77..11.. PPrrzzyykkÅ‚Å‚aaddoowwyy pplliikk ssppeeccyyffiikkuujjÄ…Ä…ccyy ..ssppeecc 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* 77..22.. DDyyrreekkttyywwaa ooppttffllaaggss 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. 77..33.. MMaakkrraa 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. 77..44.. WWyyÅ‚Å‚Ä…Ä…cczzaanniiee ppeewwnnyycchh ppllaattffoorrmm ww ppaakkiieettaacchh 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 prze­ buduj 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. 77..55.. OOssttaattnniiee ppoopprraawwkkii 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. 88.. UUwwaaggaa oo pprraawwaacchh aauuttoorrsskkiicchh 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ć.

Wyszukiwarka

Podobne podstrony:
RPM HOWTO pl (3)
RPM HOWTO pl 2 (2)
RPM HOWTO pl 8 (2)
rpm howto pl 6
RPM HOWTO pl 3 (2)
RPM HOWTO pl 4 (2)
RPM HOWTO pl 7 (2)
RPM HOWTO pl 1 (2)
RPM HOWTO pl 5 (2)
RPM HOWTO pl (2)
bootdisk howto pl 8
PPP HOWTO pl 6 (2)
NIS HOWTO pl 1 (2)
cdrom howto pl 1
jtz howto pl 5
Keystroke HOWTO pl (2)
PostgreSQL HOWTO pl 14
printing howto pl 5
debian apt howto pl

więcej podobnych podstron