Stručný úvod do vytvárania .deb
balíčkov pre "dobrodružnejších používateľov a skúsenejších užívateľov".
Tento návod nie je univerzálny, programy a knižnice sú písané v rôznych jazykoch a využívajú rôzne nástroje a vyžadujú individuálny prístup, no dúfam že pomôže preklenúť počiatočnú neskúsenosť a obavy zo zložitosti. Ukážeme si ako sa dá rýchlo vytvoriť balíček s pomocou checkinstall
a tiež si vytvoríme riadny balíček z ničoho, na ktorom si ukážeme najuniverzálnejší možný postup.
checkinstall
checkinstall
je nástroj, ktorý sa snaží výrobu balíčku úplne automatizovať. V zásade by mal pracovať pre každý program, ktorý je možné skompilovať a nainštalovať. Toto sa zvyčajne robí príkazom make
a následne make install
(tento spúšťa checkinstall
ak mu nezadáme iný).
Stačí program skompilovať podľa pokynov dodávaných v zdrojovom balíčku spolu so zdrojovými súbormi. Najčastejší postup kompilácie a inštalácie je:
configure make make install
Posledný príkaz inštaluje súbory do systémových adresárov a preto vyžaduje práva roota, preto aj vytváranie balíčku potrebuje práva roota:
checkinstall --install=0 make install
"make install" ako som spomínal sa použije aj ak by sme ho vynechali. A to je vlastne všetko, checkinstall položí pár interaktívnych otázok ak je to nutné, všetko sa snaží detekovať sám. Je vhodné tieto informácie skontrolovať a v prípade potreby pozmeniť, niekedy je napríklad nutné zmeniť nevhodný formát verzie pre balíčkovací systém, ináč proces zlyhá. Voľba install=0
udáva, že nechceme aby sa balíček po procese vytvárania hneď inštaloval.
Ďalší vylepšením tohto postupu je použitie nástroja fakeroot
, ktorý dovoľuje aj iným užívateľom než root vytvoriť balíček tým, že predstiera práva roota a inštaluje do bezpečne oddeleného adresára.
Tento nástroj je možné použiť aj v RPM distribúciách a v Slackware. Podrobnejšie informácie je možné nájsť na domovskej stránke programu. Tento program zvyčajne nezlyháva na balíčkoch používajúcich automake
/autoconf
(ak zdrojový adresár obsahuje skript configure
).
Prvý balíček
Teraz si skúsime vyrobiť balíček z ničoho a ukážeme si tak podstatu vytvárania balíčku. Na toto by malo postačiť nainštalovať balíček dh-make so svojimi závislosťami (apt-get install dh-make).
Najskôr si vytvoríme prázdny adresár balicek-0.1
a v ňom súbor balicek
s týmto obsahom:
#!/bin/sh
echo Skript z balicku je na svojom mieste!
Ďalej vytvoríme súbor Makefile
(medzera pred príkazom install je tabulátor, )
all:
install:
install -m755 balicek $(DESTDIR)/usr/bin/
# pripadne dalsie prikazy vzdy odsadene od zaciatku riadku
Toto je to najmenej čo potrebujeme na inštaláciu nášho skriptu. Dôležité je použitie premennej DESTDIR
, ktorá je veľmi dôležitá pre balíčkovacie skripty, preto je nutné existujúcim programom upravovať Makefile
aby používali túto premennú. (Ak program používa configure
skript, nie je nutné nič meniť.)
Ak nestačí obyčajné kopírovanie "cp" alebo rekurzívne pre kópiu všetkého obsahu aj s podadresármi (parameter "-R") tak používame príkaz install
– najčastejšie použitie:
"install -mUGO"
nainštaluje súbor s príslušnými právami (644, 755, …)"install -d cesta"
vytvorí zadané adresáre."install -D zdroj cieľ"
vytvorí všetky chýbajúce adresáre v cieľovej ceste, okrem posledného, ten sa použije ako cieľový názov pre zdroj.
Teraz si už len necháme vygenerovať všetko potrebné pre náš balíček:
$ dh_make -s -r -e mailbox@server.tld -c gpl
Maintainer name : Adam Sloboda
Email-Address : mailbox@server.tld
Date : Sun, 6 Jan 2008 14:07:31 +0100
Package Name : balicek
Version : 0.1
License : gpl
Type of Package : Single
Hit <enter> to confirm:
Done. Please edit the files in the debian/ subdirectory now. You should also
check that the balicek Makefiles install into $DESTDIR and not in / .
Pribudol nám adresár debian
s množstvom súborov, no netreba sa ľakať – s kľudom môžeme zmazať všetky ukážkové súbory (rm *.ex *.EX
), ktoré väčšinou nie sú potrebné.
Najskôr upravíme podľa situácie README.Debian
, changelog
a copyright
. Na obsahu týchto súbrov funkčnosť balíčka nezáleží, no mali by obsahovať dôležité informácie o balíčku, správcovi balíčku, autoroch, licencii a verziách programu.
Súbor dirs
obsahuje cestu k adresárom, ktoré Makefile
nevytvorí, ale potrebujeme ich (v našom prípade tento súbor nepotrebujeme). Súbor docs
obsahuje názvy súborov, ktoré chceme zahrnúť k dokumentácii (BUGS
, TODO
, …). Súbor compat
udáva verziu, pre balíčkovacie skripty, tento súbor necháme tak ako bol vygenerovaný.
A napokon tu ostali ešte súbory control
a rules
. Ich obsah hovorí sám za seba, spomeniem len dôležité riadky.
control
:
- Section: názov sekcie v balíčkovacom systéme
- Build-Depends: závislosti pre kompiláciu balíčku (u balíčku na jedno použitie na tom nezáleží a náš nemá žiadne mimoriadne požiadavky na knižnice a pod.)
- Architecture: názov konkrétnej architektúry počítača (je možné použiť kľúčové slovo
any
, ktoré bude nahradené aktuálnou) alebo kľúčové slovoall
, ktoré znamená, že výsledný balíček pôjde všade (skriptovacie jazyky, dáta, ...) – v našom prípade použijemeall
- Depends: závislosti balíčku (na jedno použitie tiež zbytočné) na iných balíčkoch z repozitára (vygenerovaný súbor obsahuje premenné na automatické zisťovanie vyžadovaných zdieľaných knižníc, v našom prípade to je zbytočné)
- a na konci popis balíčku (krátky a dlhý)
rules
je Makefile
samotného balíčku, to je celé tajomstvo – v našom prípade nemusíme nič meniť, je prednastavený a by spustil náš zdrojový Makefile
a vytvoril balíček. Pomocné príkazy tu použité majú aj vlastné manuálové stránky. Teraz už len ostáva spustiť príkaz fakeroot dpkg-buildpackage
(alebo priamo fakeroot debian/rules binary
) a balíček je hotový. Príkaz fakeroot debian/rules clean
uprace neporiadok, zmaže všetky automaticky vytvorené súbory (z procesu vytvárania balíčku).
Kontrola balíčku
Pretože človek nie je neomylný tak tu máme nástroje, ktoré sa pokúšajú identifikovať prehrešky voči pravidlám: lintian
a linda
. Stačí ich spustiť a ako parameter uviesť cestu k balíčku. Ak je balíček už vytvorený tak sa bude pravdepodobne aj dať nainštalovať, kontrola je de facto len pre "dobrý pocit".
Záver
Balíčky vytvorené na základe tohto návodu ešte stále nebudú spĺňať všetky normy konkrétnej distribúcie, takže pre záujemcov je vhodné konzultovať napríklad rozsiahlu príručku Debian New Maintainers&aps Guide. Na prvý pohľad sa to môže zdať zložité, no stačí sa toho nebáť a skúšať "čo to spraví", napokon je to vďaka pohodlnosti vývojárov pravdepodobne najjednoduchší balíčkovací systém.
Pre pridávanie komentárov sa musíte prihlásiť.