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

Z Wikiknih
(přesměrováno z Linux:dh make)
Skočit na navigaci Skočit na vyhledávání

DEB[editovat]

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

RPM[editovat]

TGZ[editovat]