Linux/Nástroje pro tvorbu instalačních balíčků

Utility z balíčku dpkg-dev

editovat

Tyto utility jsou primárně určeny pro použití v souboru rules, který je jakýmsi scénářem pro sestavení deb balíčku.

822-date

editovat

Utilita vrací datum v RFC2822 formátu, ale patří mezi nedoporučené (deprecated). Stejnou službu udělá příkaz date s paramerem -R

dpkg-architecture

editovat

Vrací ve formě proměnných systémové informace o platformě, na které probíhá sestavení balíčku.

dpkg-buildpackage

editovat

dpkg-distaddfile

editovat

dpkg-gencontrol

editovat

Utilita, kterou se generuje soubor control, ve kterém jsou uvedeny základní informace o balíku. Jeho název, závislosti, popis, atp.

dpkg-genchanges

editovat

Utilita zachycuje zprávy generované při sestavování deb balíčku a ukládá je do souboru s příponou .changes

Tento soubor lze pak analyzovat pomocí utilit lintian nebo linda, a odhalené nedostatky opravit.

dpkg-checkbuilddeps

editovat

dpkg-name

editovat

Tato utilita slouží pro přejmenování .deb balíčku na jeho plné a správné jméno

dpkg-parsechangelog

editovat

dpkg-scanpackages

editovat

dpkg-scansources

editovat

dpkg-shlibdeps

editovat

dpkg-source

editovat

Utilita slouží pro vytvoření rozdílového souboru zdrojového balíčku, po debianizaci původního zdrojáku. Spouští se v adresáři, který je nad adresářem s debianizovaným zdrojovým kódem a pro úspěšné provedení je třeba mít v v tomto adresáři také původní, čistý, neupravený a zabalený zdroják.

user@stroj:~$ ls -1
balik-1.0
balik-1.0.tar.gz
user@stroj:~$ dpkg-source -b balik-1.0
user@stroj:~$ ls -1
balik-1.0
balik_1.0.orig.tar.gz
balik-1.0.tar.gz
balik_1.0-1.diff.gz
balik_1.0-1.dsc

dh_make

editovat

Nástroj pro debianizaci zdrojáku.

Má řadu voleb a nastavení, takže pro jeho plné využití doporučuji prostudovat manuál. Ale pro naši potřebu stačí seznámit se s těmi základními.

  • Příkaz se spouští pouze jednou. V případě že nejste s jeho výsledkem spokojeni, odstraňte jím vytvořený podadresář debian a teprve pak jej má smysl spustit znovu
  • Adresář, ve kterém se příkaz spouští, by měl obsahovat zdrojový kód budoucí aplikace a měl by být pojmenován podle následující konvence <název balíčku>-<číslo verze>.
<název balíčku> ; může obsahovat pouze malá písmena a čísla, a svou délkou by neměl přesáhnout 20 znaků.
<číslo verze> ; číslo verze by mělo obsahovat pouze čísla a tečky. Pokud aplikace není verzována číslem, tak lze použít třeba datum stažení zdrojového kódu, např.: 0.0.20070225 (pro zdrojový kód stažený k 25. únoru 2007)
Pokud původní název adresáře se zdrojákem této konvenci neodpovídá, je třeba jej přejmenovat.

Volby a parametry

Můžete předat buď přes vyexportované proměnné, nebo přímo na příkazové řádce. Pokud nenajde příkaz příslušné údaje jako parametry, ani mezi proměnnými, tak se se vás na ně po spuštění vyptá.

Výjimkou je spuštění s parametrem

-c --copyright
typ licence pod jakou je aplikace uvolněna
-e --email
adresa na Maintainera - tedy vaše. Pozor, ačkoliv adresa bude do šablon doplněna, odpovídající jméno nikoliv.
-f --file
cesta k originálnímu balíčku se zdrojovým kódem. dh_make pak nepoužije aktuální obsah adresáře, ale zkopíruje do souboru s přidanou příponou .orig původní balíček.
-a --addmissing
pokud chybí, tak doplní do adresáře debian soubory
-t --templates <adresář>
-o --overlay <adresář>
místo výchozích šablon použije ke zkopírování šablon do adresáře debian šablony z předaného adresáře
-p --packagename <název pro balíček>
Pokud se balíček bude jmenovat jinak, než se jmenuje adresář
-d --defaultless
přeskočí zkopírování vzorových šablon do adresáře debian

Typ balíčku: určuje jaký bude výsledek kompilace zda jeden či více balíčků a také jejich použití

-l --library
balíček s knihovnami
-s --single
balíček s binárními soubory
-m --multi
sada balíčků
-k --kmod
balíček s jaderným modulem
-b --cdbs

linda a lintian

editovat

Jsou nástroje pro analýzu souboru s příponou .changes vytvořeného během sestavovaní balíčku příkazem dpkg-buildpackage. Oba se používají podobně, ale protože každý z nich analyzuje tento soubor trochu jinak, jejich výstup se může lišit, viz příklad použití:

user@stroj:~/debian$ lintian gentoo_0.0.20070221-1_amd64.changes
W: gentoo source: dh-make-template-in-source debian/menu.ex
W: gentoo source: dh-make-template-in-source debian/manpage.1.ex
W: gentoo: binary-without-manpage gentoo
W: gentoo: binary-or-shlib-defines-rpath ./usr/bin/gentoo /usr/lib
E: gentoo: spelling-error-in-description alot a lot
W: gentoo: unknown-section multimedia
E: gentoo: unknown-priority normal
W: gentoo: changelog-file-not-compressed ChangeLog
user@stroj:~/debian$ linda gentoo_0.0.20070221-1_amd64.changes
E: gentoo; Package contains dh-make or such example files.
E: gentoo; Package contains dh-make or such example files.
E: gentoo; Priority normal is unknown, or incorrect.
E: gentoo; Package is in section multimedia, which is unknown.
E: gentoo; No manual page for binary gentoo.
W: gentoo; Package's README.Debian seems to be a template.
W: gentoo; File /usr/doc/gentoo/AUTHORS in package has zero size.
W: gentoo; Binary /usr/bin/gentoo compiled with an RPATH of /usr/lib.

V ukázce byly zcela záměrně ponechány některé zprávy, kterými se výstupy těchto příkazů liší. W označuje varování, tj. to co není až tak závažnou chybou a E chybu, tj. problém, který by mohl vyvolat za určitých okolností problémy.

Jak si vlastně tyto výstupy vyložit?

  • Zatímco linda pouze oznámila, že jsou v balíčku zapomenuty nějaké vzorové soubory, které do adresáře debian vložil dh_make. Lintian rovnou vypsal, o které se jedná. (menu.ex a manpage.ex)
  • Obě aplikace upozornily na to, že pro binární soubor s názvem gentoo, který byl vytvořen, schází odpovídající manuálová stránka
  • Lintian navíc provedl kontrolu pravopisu, a objevil v souboru control překlep
  • Naopak linda navíc upozorňuje, že soubor AUTHORS nemá žádný obsah (nulová délka)
  • Obě utility pak varují, že v souboru control je chybně uveden název neexistující sekce a že priorita "normal" také neexistuje