Balíčky pro Debian - 6. Instalace souborů
Nyní už víme co to je Debhelper a známe některé jeho příkazy. Tu nejdůležitější část jsme však minule vynechali a podíváme se na ní dnes. Jak tedy správně rozdělit soubory do binárních balíčků?
Pokud náš zdrojový balíček vytváří jediný binární, máme situaci jednoduchou,
stačí provést instalaci do debian/jméno-binárního-balíčku
a máme hotovo. V
opačném případě musíme ještě nějak zajistit rozdělení souborů mezi
jednotlivými balíčky. K tomu nám opět pomůže Debhelper a to konkrétně jeho
příkaz dh_install
. Kromě něho ještě existuje spousta jeho variant pro
instalaci různých typů souborů, které si dnes také vysvětlíme.
Většina skriptů dnes popisovaných umožňuje dva způsoby zadání souborů pro
instalaci. Buď přímo na příkazové řádce, nebo ze souboru v adresáři debian/
,
který se jmenuje jméno-balíčku.typ-souborů
, například hello.dirs
. V
některých situacích můžeme použít soubor pro všechny binární balíčky (nebo
máme jen jeden), můžeme jméno balíčku vynechat a soubor se tedy bude jmenovat
jen dirs
. Toto zjednodušení však nefunguje pro všechny možnosti a proto ho
používejte jen pokud je to opravdu nutné. Použitím jména balíčku bude vždy
zřejmé k čemu tento soubor patří i po případné jeho reorganizaci. Zadávání
parametrů na příkazové řádce se moc věnovat nebudu, protože mnohem
přehlednější je používat oněch souborů.
dh_install
Tento skript je nejobecnějším pomocníkem při instalaci souborů. Do souboru
debian/jméno-balíčku.install
zapíšeme na každý řádek zdroj a cíl kam se má
nainstalovat. Pokud cíl neuvedeme, uvažuje se stejný adresář jako je ve
zdroji. Jako zdroj můžeme uvést soubor, adresář nebo více souborů pomocí
žolíků. Jména zdrojových souborů se udávají relativně ke kořenovému adresáři
zdrojových kódů, pokud však chceme jen přesouvat soubory z debian/tmp
,
můžeme změnit zdrojový adresář pomocí parametru:
dh_install --sourcedir=debian/tmp
Typickým příkladem pro použití dh_install
je rozdělení souborů vzniklých
instalací programu se sdílenou knihovnou. Nechť se tento program jmenuje foo
a knihovna kterou obsahuje libbar
. Správné rozdělení do balíčků by mělo
vypadat tak, že binární balíček foo
bude obsahovat program a dokumentaci k
němu (typicky man stránky), balíček libbar0
(knihovna má soname 0) pak
knihovnu se jménem odpovídající soname a nakonec vývojový balíček libbar-dev
hlavičkové soubory, symbolický odraz libbar.so a případně i statickou
knihovnu.
Pro tento účel budeme potřebovat pro každý balíček jeden soubor .install
.
U programu to bude celkem jednoduché - debian/foo.install
:
usr/bin
usr/share/man/man1
Pro knihovnu to si vystačíme s jediným záznamem - debian/libbar0.install
:
usr/lib/libbar*.so.*
Nejvíce věcí musíme uvést u vývojového balíčku - debian/libbar-dev.install
:
usr/include
usr/lib/libbar*.so
usr/share/man/man3
Další skripty pro instalaci
Další skripty se chovají velmi podobně - buď pracují stejně jako dh_install
se seznamem souborů, nebo přímo instalují nějaký soubor pojmenovaný podle výše
zmíněné konvence. Nejprve si probereme ty obecnější, které se můžou hodit u
téměř libovolného balíčku a na závěr zůstane stručný přehled speciálních,
které budete potřebovat jen občas.
dh_installdirs
Tento skript má jednoduchý úkol vytvořit adresáře, seznam adresářů načítá ze
souboru debian/jméno-balíčku.dirs
. Ve většině případů je instalační skript
programu dost chytrý na to aby si chybějící adresáře vytvořil, takže
dh_installdirs
vůbec nepotřebujeme.
dh_installdocs
Toto je oproti tomu velmi užitečný skript pro instalaci dokumentace. Různá
README a TODO soubory totiž obvykle nikdo neinstaluje a proto správci balíčku
nezbude než se o ně postarat. Stačí jejich seznam napsat do souboru
debian/jméno-balíčku.docs
a dh_installdocs
se postará o jejich správné
umístění (do adresáře usr/share/docs/jméno-balíčku
). Stejně tak nainstaluje
soubory debian/README.Debian
a debian/TODO
(případně s předponou jména
balíčku).
dh_installexamples
Podobný jako předchozí, ale tentokrát se stará o instalaci příkladů do
adresáře usr/share/docs/jméno-balíčku/examples
. Seznam příkladů se načítá ze
souboru debian/jméno-balíčku.examples
.
dh_installchangelogs
Kromě dokumentace je ještě důležitý seznam změn a o ten se stará
dh_installchangelogs
. Do stejného adresáře jako dokumentaci nainstaluje
debian/changelog
(pod jménem changelog.Debian
) a případně i
debian/NEWS
(ten je nainstalován jako NEWS.Debian
). Jako volitelný
parametr mu můžeme zadat jméno souboru se změnami v tarballu, takže výsledné
volání může vypadat například takto:
dh_installchangelogs ChangeLog
Další nástroje
V podobném duchu existuje ještě asi 20 dalších nástrojů. Protože se s nimi však většinou nesetkáte, nebudu je již tak podrobně probírat. Nicméně i z těchto jsem vybral pár těch zajímavějších, které jen stručně vyjmenuji:
dh_installman
- instalace man stránek, v Debianu je zvykem mít pro každý program man stránku a pokud jí autor programu neposkytuje, bude se nám tento skript hoditdh_installmenu
- Debian má vlastní systém pro správu menu v grafickém prostředí a tento skript vám umožní instalovat soubory pro něj. Dnes však je již trochu na ústupu a Ubuntu ho již v podstatě úplně nahradilo standardními desktop soubory podle Freedesktop.org.dh_installxfonts
- Pokud chceme zabalit nějaké fonty, tento skript vám pomůže je správně zaregistrovat do X.org.dh_installdebconf
- Skript pro instalaci šablon pro Debconf, nástroj umožňující získávat odpovědi od uživatele při instalaci balíčku. Popisu Debconfu se mimo jiné bude věnovat následující článek.
Závěr
Nyní již máte celkem slušný přehled co které skripty dělají a můžete se zkusit podívat do našeho ukázkového balíčku a zjistit, které skripty vůbec nejsou potřeba a naopak, které by se mohly dále hodit.