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

LinuxovΘ noviny 10/98

Tvorba RPM balφk∙ - pokraΦujeme

Jan Kasprzak, 1. °φjna 1998

V minulΘm Φφsle jsme si p°iblφ╛ili instalaΦnφ skripty a spou╣t∞ RPM balφk∙ a v tomto Φφsle podrobn∞ prozkoumßme dal╣φ mo╛nosti programu RPM.

Seznam soubor∙ - sekce %files

Krom∞ popisu kompilace a instalace balφku, r∙zn²ch tag∙ a skript∙ musφme je╣t∞ ve spec-souboru urΦit, kterΘ soubory k na╣emu balφku pat°φ, p°φpadn∞ jejich vlastnosti. Toto specifikujeme v sekci uvozenΘ slovem %files. Syntaxe tΘto sekce je jednoduchß. Na ka╛dΘm nßsledujφcφm °ßdku je uvedena cesta k souboru, kter² se mß do v²slednΘho balφku ulo╛it.

Pokud mßme seznam soubor∙, kterΘ chceme do balφku zahrnout, ji╛ v n∞jakΘm souboru (nap°φklad perl takov² seznam pro svΘ moduly umφ vyrobit), m∙╛eme za slovem %files uvΘst p°epφnaΦ -f a specifikovat cestu k tomuto souboru:

%files -f /usr/lib/mypackage/file.list

SystΘm RPM pak do balφku ulo╛φ soubory uvedenΘ v tomto seznamu a v╣echny soubory, jejich╛ jmΘna nßsledujφ na dal╣φch °ßdcφch za %files.

Krom∞ seznamu soubor∙ mohou v tΘto sekci b²t specifikovßny i dal╣φ parametry t∞chto soubor∙.

DokumentaΦnφ soubory

Ji╛ d°φve bylo °eΦeno, ╛e systΘm RPM pova╛uje n∞kterΘ soubory v balφku za dokumentaci. Seznam v╣ech soubor∙, pat°φcφch k dokumentaci balφku, lze vypsat p°φkazem rpm -qd. V sekci %files m∙╛eme dokumentaΦnφ soubor specifikovat tak, ╛e jeho jmΘnu p°ed°adφme direktivu %doc:

%doc /usr/man/man1/gnomovision.1
%doc README COPYING

Prvnφ °ßdek je jednoduch²: °φkß, ╛e soubor /usr/man/man1/gnomovision.1 se mß pova╛ovat za dokumentaci. RPM ov╣em za dokumentaci automaticky pova╛uje ka╛d² soubor, jeho╛ jmΘno zaΦφnß /usr/man, /usr/X11R6/man, /usr/doc nebo /usr/info. Druh² °ßdek je zajφmav∞j╣φ: pokud jmΘno %doc-souboru nezaΦφnß lomφtkem, RPM tento soubor hledß v adresß°i, kde probφhala kompilace balφku, a tento soubor (nebo soubory) nainstaluje do adresß°e se stejn²m jmΘnem jako balφk samotn² do /usr/doc (nap°φklad u balφku bash do /usr/doc/bash-1.14.7/).

Programu rpm m∙╛eme krom∞ v²╣e uveden²ch adresß°∙ specifikovat i dal╣φ adresß°e jako dokumentaΦnφ. V╣echny soubory, kterΘ z t∞chto adresß°∙ RPM zabalφ do v²slednΘho balφku, budou oznaΦeny jako dokumentace. OznaΦenφ se provede direktivou %docdir adresß°. Toto oznaΦenφ ov╣em samo o sob∞ ╛ßdnΘ soubory do balφku nevklßdß. P°φslu╣nΘ soubory je nutno samostatn∞ specifikovat dßle v sekci %files.

KonfiguraΦnφ soubory

Dal╣φm specißlnφm typem soubor∙ jsou konfiguraΦnφ soubory. V p°edchozφch Φßstech tohoto serißlu jsme vid∞li, ╛e RPM s takto oznaΦen²mi soubory zachßzφ jinak ne╛ s b∞╛n²mi soubory. Jako konfiguraΦnφ lze soubor oznaΦit direktivou %config p°ed jmΘnem souboru:

%config /etc/sendmail.cf

Tato direktiva mß je╣t∞ dal╣φ variantu: do kulat²ch zßvorek lze uvΘst jedno nebo vφce slov z missingok a noreplace. Prvnφ z t∞chto slov znamenß, ╛e dan² konfiguraΦnφ soubor nemusφ existovat. Druhß direktiva °φkß, ╛e RPM nemß p°φslu╣n² soubor p°episovat (a uklßdat pod jmΘno soubor.rpmsave). Pokud konfiguraΦnφ soubor ji╛ existuje a mß jin² kontrolnφ souΦet, ne╛ soubor obsa╛en² v balφku, RPM nov² soubor ulo╛φ pod jmΘnem soubor.rpmnew. Tyto parametry jsou v RPM nov∞ zavedenΘ a nejsou popsßny v knize Maximum RPM.

Atributy soubor∙

Korektn∞ napsan² spec-soubor musφ umo╛nit vytvo°it balφk nejen superu╛ivateli, ale i b∞╛nΘmu u╛ivateli. Prvnφm p°edpokladem pro to je (jak ji╛ bylo uvedeno), ╛e sekce %install musφ pou╛φvat vlastnost BuildRoot. Druh²m p°edpokladem je, aby atributy v╣ech soubor∙ byly p°φmo specifikovßny ve spec-souboru. K tomu se pou╛φvß direktiva %attr se t°emi parametry: p°φstupovß prßva, vlastnφk a skupina. Nap°φklad:

%attr(0644,root,root) %doc README
%attr(0644,root,root) %config(noreplace) \
	/etc/sendmail.cf
%attr(-,root,root) /usr/sbin/newaliases
%attr(4755,root,root) /usr/sbin/sendmail

P°φstupovß prßva se specifikujφ numericky (oktalov∞), vlastnφk a skupina textov∞. U symbolick²ch link∙, kde p°φstupovß prßva nemajφ v²znam, se uvede znak minus.

Verifikace

SystΘm RPM umφ verifikovat, jestli je balφk nainstalovan² sprßvn∞ (pomocφ kontroly p°φstupov²ch prßv, kontrolnφch souΦt∙ a verifikaΦnφho skriptu). N∞kdy ov╣em nemusφ tv∙rce balφku chtφt kontrolovat v╣echny atributy souboru. Nap°φklad je-li soubor modifikovßn post-instalaΦnφm skriptem, nem∞la by probφhat kontrola Φasu modifikace ani kontrolnφho souΦtu. K dosa╛enφ tohoto cφle se pou╛ije direktiva %verify, kterß °φkß, jakΘ atributy se majφ kontrolovat. Maximßlnφ verze je nßsledujφcφ:

%verify(owner group mode md5 size maj min symlink \
	mtime) /soubor

Tato kontrola je ov╣em implicitnφ. Chceme-li n∞kterΘ kontroly vypnout, pou╛ijeme krat╣φ seznam u %verify nebo pou╛ijeme slovo not:

%verify(not owner group mode) /dev/ttyS0
%verify(mode md5 size maj min symlink mtime) \
	/dev/ttyS0

DuchovΘ

Jde o dal╣φ horkou novinku nedokumentovanou v Maximum RPM. Soubor, kter² je oznaΦen² jako %ghost, je vypisovßn jako pat°φcφ k danΘmu balφku, ale p°i verifikaci se nekontroluje jeho existence.

%attr(-,root,root) %ghost /usr/man/man1/ssh.1

Adresß°e

Uvedeme-li v seznamu v sekci %files jmΘno adresß°e, RPM do v²slednΘho balφku zabalφ tento adresß° i v╣echny soubory a adresß°e v n∞m obsa╛enΘ. Toto m∙╛e, ale nemusφ, b²t efekt, kter² po╛adujeme. Pokud chceme do balφku p°idat jen adresß° bez jeho podadresß°∙ a soubor∙ v n∞m obsa╛en²ch, je nutno p°ed jeho jmΘno p°edepsat direktivu %dir:

%dir /usr/X11R6/lib/X11/fonts/iso-8859-2/
/usr/X11R6/lib/X11/fonts/iso-8859-2/font1.pfa

/usr/X11R6/lib/X11/fonts/iso-8859-2/

Prvnφ p°φklad zabalφ do RPM balφku pouze adresß° a jeden soubor v n∞m, druh² zabalφ adresß° i se v╣emi soubory. Pozor, pokud specifikujeme atributy (direktiva %attr), je nutno uvßd∞t adresß° a soubory v n∞m zvlß╣╗. Adresß° toti╛ mß typicky prßva 0755, zatφmco b∞╛nΘ soubory majφ obvykle 0644. Na╣t∞stφ RPM umo╛≥uje do sekce %files napsat i °et∞zce obsahujφcφ hv∞zdiΦku. Druh² p°φklad by pak mohl mφt tento ekvivalent (s lep╣φ kontrolou p°φstupov²ch prßv):

%attr(0755,root,root) \
	%dir /usr/X11R6/lib/X11/fonts/iso-8859-2/
%attr(0644,root,root) \
	/usr/X11R6/lib/X11/fonts/iso-8859-2/*

P°φ╣t∞ si povφme o makrech v RPM balφcφch. *


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