- p°edchozφ Φlßnek - nßsledujφcφ Φlßnek - obsah - ·vodnφ strßnka - - p°edchozφ Φßst - nßsledujφcφ Φßst - prvnφ Φßst -

LinuxovΘ noviny Kv∞ten 1998

Tvorba RPM balφk∙

Jan Kasprzak, 15. kv∞tna 1998

V p°edchozφch dφlech na╣eho serißlu o systΘmu RPM jsme rozebφrali v╣echny vlastnosti RPM z hlediska u╛ivatele. V dal╣φ Φßsti se budeme v∞novat RPM z hlediska vlastnφ tvorby RPM balφk∙. Co tedy d∞lat, mßme-li n∞jak² software a chceme jej zabalit do RPM balφku?

Kompilace

Prvnφ Φinnost, kterou je nutno p°ed vlastnφm zabalenφm softwaru do formßtu RPM ud∞lat, je zkompilovat software pod Linuxem a ujistit se, jestli v∙bec pod Linuxem funguje. V nßsledujφcφm budeme p°edpoklßdat, ╛e software lze bez problΘm∙ zkompilovat a ╛e takΘ funguje. Jako p°φklad si vezmeme program gmemusage, kter² slou╛φ k m∞°enφ obsazenφ operaΦnφ pam∞ti jednotliv²mi procesy. K jeho zkompilovßnφ a nainstalovßnφ staΦφ spustit p°φkazy make a make install.

Rychl² start

Bez jakΘhokoli vysv∞tlovßnφ uvedu p°φklad, jak vyrobit RPM-balφk gmemusage (vysv∞tlenφ bude nßsledovat):

  • Jako root nakopφrujte soubor http://reality.sgi.com/raju/software/gmemusage-0.2.tar.gz do adresß°e /usr/src/redhat/SOURCES/.

  • Nakopφrujte soubor na v²pise Soubor SPEC pro gmemusage pod nßzvem gmemusage-0.2.spec do adresß°e /usr/src/redhat/SPECS/.

  • V adresß°i /usr/src/redhat/SPECS spus╗te p°φkaz rpm -ba gmemusage-0.2.spec. V²sledkem by m∞l b²t zdrojov² RPM soubor gmemusage-0.2-1.src.rpm v adresß°i /usr/src/redhat/SRPMS (k Φemu jsou zdrojovΘ RPM soubory, uvidφme pozd∞ji) a binßrnφ RPM pro danou architekturu (gmemusage jsem zkou╣el vyrßb∞t pouze pro platformu i386 a sparc, ale pro sparc m∞l program jistΘ problΘmy. Binßrnφ RPM soubor je v RPMS/i386/gmemusage-0.2-1.i386.rpm.

  • Nov∞ vytvo°en² RPM soubor lze nainstalovat p°φkazem rpm -Uvh RPMS/i386/gmemusage-0.2-1.i386.rpm.

Summary: graphics memory usage meter
Name: gmemusage
Version: 0.2
Release: 1
Source: http://reality.sgi.com/raju/software/gmemusage-0.2.tar.gz
Copyright: GPL
Group: Utilities/System
Packager: Jan "Yenya" Kasprzak <kas@fi.muni.cz>
BuildRoot: /tmp/gmemusage-root
%description
This tool displays the bar graph describing memory usage of processes
on the Linux box. Uses /proc filesystem.
%prep
%setup
%build
make OPTIM="$RPM_OPT_FLAGS"
%install
mkdir -p $RPM_BUILD_ROOT/usr/X11R6/{bin,man/man1}
make PREFIX=$RPM_BUILD_ROOT/usr/X11R6 install
%files
%attr(0775,root,root) /usr/X11R6/bin/gmemusage
%attr(0644,root,root) /usr/X11R6/man/man1/gmemusage.1

V²pis Φ. 6: Soubor SPEC pro gmemusage

Vysv∞tlenφ

A te∩ zp∞t k tomu, co jsme vlastn∞ v p°edchozφ sekci ud∞lali. Je vid∞t n∞kolik zßkladnφch fakt∙:

  • RPM vyu╛φvß adresß° /usr/src/redhat.
  • pou╛φvß se p°φkaz rpm -ba
  • tvorba balφku je °φzena souborem s koncovkou .spec.
  • vytvß°φ se zßrove≥ zdrojov² i binßrnφ RPM soubor.

Adresß° /usr/src/redhat obsahuje tyto podadresß°e (lze zm∞nit v souboru /etc/rpmrc, co╛ umo╛nφ vyrßb∞t RPM balφky i jako b∞╛n² u╛ivatel):

  • SPECS - obsahuje spec-soubory, kterΘ °φdφ vlastnφ sestavovßnφ RPM balφku.
  • SOURCES - zde jsou zdrojovΘ soubory, ze kter²ch se balφk vytvß°φ.
  • BUILD - do tohoto adresß°e se rozbalφ zdrojovΘ soubory a probφhß zde kompilace.
  • RPMS/architektura - sem se ulo╛φ v²slednΘ RPM soubory.
  • SRPMS - zde budou v²slednΘ zdrojovΘ RPM soubory.

SPEC soubor

Tento soubor °φdφ celou kompilaci. Jeho p°φklad byl uveden, jednotlivΘ mo╛nosti budou podrobn∞ popsßny v nßsledujφcφch dφlech tohoto serißlu.

Na zaΦßtku souboru je hlaviΦka, kterß popisuje, o jak² balφk se jednß, odkud pochßzφ zdrojov² text, kdo balφk vytvo°il, jakß je jeho licence, a mno╛stvφ dal╣φch informacφ, pozd∞ji z balφku vypsateln²ch pomocφ rpm -q.

Dßle nßsledujφ jednotlivΘ sekce - jsou odd∞leny klφΦov²m slovem s procentem na zaΦßtku °ßdku. V na╣em p°φkladu jsou pou╛ity tyto sekce:

  • %description - popis balφku, kter² dßle rozvφjφ krßtkou informaci ze Summary: v hlaviΦΦe souboru.

  • %prep - p°φprava na kompilaci. Tato sekce se vykonß jako shellovsk² skript a mß za ·kol provΘst rozbalenφ zdrojovΘho archφvu, aplikaci p°φpadn²ch zßplat, konfiguraci a podobn∞. Ve v²╣e uvedenΘm souboru tato sekce obsahuje jedin² p°φkaz - makro (pozor, ne sekci) %setup, kterΘ d∞lß p°esn∞ to, ╛e do adresß°e BUILD rozbalφ archφv, uveden² v hlaviΦΦe jako Source: z adresß°e SOURCES. Tedy z celΘho tam uvedenΘho URL se pou╛ije pouze Φßst za poslednφm lomφtkem. Ostatnφ slou╛φ jen pro informaci.

  • %build - vlastnφ kompilace. Jde op∞t o shellovsk² skript. Zde je dobrΘ si v╣imnout prom∞nnΘ $RPM_OPT_FLAGS - jednotlivΘ skripty dostßvajφ od RPM p°ednastavenΘ n∞kterΘ prom∞nnΘ. Tato prom∞nnß je jednou z nich a obsahuje implicitnφ volby p°edßvanΘ kompilßtoru pro optimalizaci. Tak╛e zm∞nou tohoto parametru nap°φklad v /etc/rpmrc m∙╛eme dosßhnout toho, aby se v╣echny nov∞ kompilovanΘ balφky stav∞ly s t∞mito volbami.

  • %install - vlastnφ instalace soubor∙ v balφku. V b∞╛n²ch p°φpadech se v tomto skriptu spou╣tφ p°φkaz make install. Je ov╣em dobrΘ, pokud rekompilace RPM balφku neprovede instalaci do skuteΦnΘho systΘmu, ale n∞kam do vlastnφho stromu. Tato vlastnost se jmenuje Buildroot a zapφnß se uvedenφm stejnojmennΘho parametru v hlaviΦce spec-souboru. RPM pak vytvo°φ jmenovan² adresß° a nastavφ skript∙m (vΦetn∞ toho %install) prom∞nnou $RPM_BUILD_ROOT. V²hoda tohoto p°φstupu je v tom, ╛e takto m∙╛e bez modifikace spec-souboru vytvo°it RPM balφk i b∞╛n² u╛ivatel, nikoliv jen superu╛ivatel.

  • %files - popisuje, kterΘ soubory majφ b²t zahrnuty do RPM balφku. Tato sekce nenφ shellovsk² skript, ale seznam. Je mo╛no tΘ╛ specifikovat atributy jednotliv²ch soubor∙, Φφm╛ umo╛nφme vytvo°it RPM balφk i b∞╛nΘmu u╛ivateli. Neuvedeme-li atributy, RPM vezme takovΘ atributy, jakΘ mß jmenovan² soubor v dob∞ tvorby balφku.

P°φkaz rpm -b

K vytvß°enφ RPM balφk∙ se pou╛φvß p°φkaz rpm -b. Jeho argumentem je .spec soubor. Akceptuje nßsledujφcφ p°epφnaΦe:

  • -p Vykonß pouze %prep sekci ve spec-souboru.
  • -l Zkontroluje, jestli soubory jmenovanΘ v sekci %files skuteΦn∞ existujφ.
  • -c Vykonß %prep a %build.
  • -i Vykonß %prep, %build a %install.
  • -b Vytvo°φ binßrnφ RPM soubor (po vykonßnφ %prep, %build a %install).
  • -a Vytvo°φ binßrnφ a zdrojov² RPM soubor (po vykonßnφ %prep, %build a %install).
  • --short-circuit Pou╛φvß se ve spojitosti s -bc a -bi. Vykonß pouze jmenovanou sekci, bez p°edchozφch.
  • --timecheck Φφslo Vypφ╣e varovßnφ, pokud se sna╛φme do RPM balφku zabalit soubor star╣φ ne╛ dan² poΦet sekund.
  • --clean Sma╛e kompilaΦnφ strom p°φslu╣nΘho balφku v adresß°i /usr/src/redhat/BUILD po skonΦenφ tvorby balφku.
  • --test Otestuje syntaxi spec-souboru, neprovßdφ ╛ßdnΘ kompilaΦnφ akce.
  • --sign Vytvo°φ balφk s PGP podpisem.

Krom∞ rpm -b lze takΘ pou╛φt rpm -t a jako parametr uvΘst soubor ve formßtu tar.gz. Takov²to archφv se rozbalφ a jako spec-soubor se pou╛ije prvnφ soubor s koncovkou .spec, obsa╛en² v archφvu. P°i kompilaci se samoz°ejm∞ neprovßdφ sekce %prep.

ZdrojovΘ RPM soubory

Ji╛ n∞kolikrßt padla zmφnka o zdrojov²ch RPM souborech. To je soubor s koncovkou .src.rpm. Takov²to soubor obsahuje v sob∞ spec-soubor p°φslu╣nΘho balφku, dßle v╣echny soubory pot°ebnΘ k sestavenφ binßrnφho RPM balφku (zejmΘna soubory uvedenΘ v hlaviΦce v polo╛ce Source) a p°φpadnou ikonku RPM balφku.

Zdrojov² RPM balφk lze zpracovßvat t°emi zp∙soby. Prvnφ mo╛nost je tento balφk nainstalovat pomocφ rpm -i. V╣echny soubory, kterΘ zdrojov² balφk obsahuje, jsou nainstalovßny do adresß°e SOURCES a spec-soubor je potΘ p°esunut do adresß°e SPECS. Dal╣φ dv∞ mo╛nosti jsou vytvo°enφ binßrnφho RPM balφku pro danou architekturu, p°φpadn∞ vytvo°enφ jak binßrnφho, tak i zdrojovΘho RPM balφku. Dosßhneme toho p°φkazem rpm --recompile balφk.src.rpm, p°φpadn∞ rpm --rebuild balφk.src.rpm. Oproti p°φkazu rpm -ba se navφc implicitn∞ sma╛e kompilaΦnφ adresß° tak, jako kdybychom pou╛ili --clean.

To zatφm jako ·vod do problematiky tvorby vlastnφch RPM balφk∙ staΦφ. P°φ╣t∞ se podrobn∞ji vrßtφme k formßtu spec-souboru a k podrobnostem tΘto problematiky. *


- p°edchozφ Φßst - nßsledujφcφ Φßst - prvnφ Φßst - - p°edchozφ Φlßnek - nßsledujφcφ Φlßnek - obsah - ·vodnφ strßnka -