Linux/Debianizace

(přesměrováno z Debianizace)

Dejme tomu že narazíte na aplikaci, která ve vaší distribuci dosud schází a vám se přitom jeví velmi užitečná. Není to vaše první aplikace a už víte jak to s balíčky zhruba chodí. V takovém případě se můžete stát tzv. Maintainerem.

Maintainer (neboli správce balíčku) může, ale nemusí být jeho autor. Může to být kdokoliv, kdo provede jeho debianizaci. Patří-li mezi oficiální správce balíčků projektu Debian, tak se tím v podstatě zaváže udržovat tento instalační balíček i do budoucna aktuální (dokud jej nenahradí někdo jiný). Abyste se vůbec stali oficiálním správcem balíčku, je třeba:

  1. Prokousat se obsahem stránky http://www.debian.org/devel/join/newmaint
  2. Přihlásit se do seznamu čekatelů (applicant) a absolvovat celý autorizační proces

Druhou možností jak zpřístupnit své balíčky je, založit si vlastní repository (zdroj instalačních balíčků).

Debianizace

editovat

Není nic jiného než úprava a doplnění softwarového balíčku se zdrojovým kódem do takové formy, aby byla možná jeho rekompilace do binární formy na jiném stroji.

I když to zavání složitým procesem, nemusí tomu tak být, pokud už máte určité zkušenosti s kompilací a instalací software ze zdrojových kódů.

Debian má řadu nástrojů, které debianizaci usnadňují. Také doporučuji stáhnout a probádat jak jsou debianizovány některé instalační balíčky aplikací podobných té, kterou chcete debianizovat.

Existují také různé instalační utility, které umožňují jednoduše vytvořit instalační balíček během instalace (např. checkinstall). Lze je považovat za rychlou pomoc, pokud potřebujete něco nainstalovat a nechcete tak učinit naprudko, rovnou do systému, bez vědomí vašeho instalátoru. Ovšem takto vytvořené balíčky nelze považovat za debianizované.

Příprava nového instalačního balíčku pro debianizaci v bodech

editovat
  1. ve svém domovském adresáři vytvořím adresář, který pojmenuji 'deb' nebo také 'debian', zkrátka aby v tom neměl chaos a do něj zkopíruju stažený zdrojový kód aplikace, kterou hodlám debianizovat např. ve formě balíku (gentoo-0.9.12beta.tar.bz2), nebo adresář z svn či cvs repository. Pokud je zdroják v komprimovaném balíčku, tak ho rozbalím, abych si ověřil že není poškozený.
  2. vytvořím podadresář s názvem budoucího balíku a číslem jeho verze, např. gentoo-0.9.12. Sem přesunu zdrojový kód. Pak tento čistý zdrojový kód zabalím do balíku gentoo-0.9.12.tar.gz (ten se mi pak při použití příkazu dpkg-source, kterým se dělá zdrojový balíček zkopíruje a dostane navíc příponu .orig)
  3. pečlivě prostuduji informace o tom, jak aplikaci zkompilovat a nainstalovat. Informace o tom co a jak, obvykle najdete v souboru pojmenovaném README*, INSTALL*, *.lsm nebo *.html.
  4. dnes se většinou před vlastní kompilací aplikace používá nějaký konfigurační skript, který ještě před vlastní kompilací provede příslušná nastavení podle systému pro který je aplikace sestavovaná. Teprve pak se spouští vlastní kompilace a po ní instalace. Výchozím adresářem, do kterého se aplikace defaultně instaluje je adresář /usr/local tzn. neurčíte-li při konfiguraci jinak, nainstaluje se aplikace sem.
  5. pak zkuste staženou aplikaci zkompilovat a nainstalovat, ještě bez toho že byste z ní dělali instalační balík. Pokud vše proběhlo v pořádku, tj. aplikace se zkompilovala a lze ji normálně spouštět, tak ji zase odinstalujte a zdrojový kód do původního stavu. Tady můžete narazit na kámen úrazu. Obvykle se instalují aplikace tzv. svatou trojicí, sérií příkazů
user@stroj:~$ ./configure
user@stroj:~$ make
user@stroj:~$ make install
ale nemusí tomu tak být vždy. Stejně tak i odinstalování a vyčištění zdrojového kódu do původního stavu se obvykle řeší příkazy
user@stroj:~$ make uninstall
user@stroj:~$ make clean # nebo lépe je použít následující...
user@stroj:~$ make distclean
Kámen úrazu je v tom, že to nemusí fungovat vždy. Autor aplikace třeba ve skriptu Makefile nemusel pravidla pro odinstalování aplikace uvést. V takovém případě nezbývá, než si ohlídat co se kam instaluje ručně, a stejně tak ručně bude třeba i vyčistit zdrojový kód. U debianizovaného balíčku už pak na tom zase tolik nezáleží, protože tam už si to ohlídá instalátor.

Debianizace balíčku v bodech

editovat

Pokud příprava proběhla v pořádku, balíček se zkompiloval bez chyb, funguje a vše potřebné pro jeho kompilaci, instalaci a fungování máte v systému k dispozici, můžete přikročit k vlastní debianizaci.

  1. skočte na konzoli do adresáře se zdrojovým kódem (v našem případě ~/debian/gentoo-0.9.12) a spusťte příkaz dh_make. Ten vytvoří nový adresář debian a v něm sadu základních souborů nezbytných pro debianizaci. Ty byste pochopitelně mohli vytvořit také ručně, ale otázka zní proč si přidělávat práci, že? Tomuto příkazu můžete také hned zkraje předat prostřednictvím parametrů některé základní údaje, které sám automaticky doplní tam kam patří. Abyste je nemuseli zadávat pokaždé znovu, můžete si svoje proměnné jako DEBEMAIL, DEBFULLNAME, atp., přednastavit např. v souboru .bashrc, tak aby se načetly automaticky při přihlášení.
  2. Příkaz dh_make vytvoří podadresář s názvem debian a do něj umístí sadu vzorových souborů, které však je třeba dále doplnit a upravit. Nejdůležitější z nich jsou soubory:
    changelog - záznam v tomto souboru je důležitý nejen z hlediska změn které jste při debianizaci museli provést se zdrojovým kódem aplikace, ale také jím ovlivníte číslo revize binárního balíčku
    control - tento soubor v sobě nese všechny informace o balíčku, nezbytné pro jeho instalaci. Název, kontakt na správce balíčku (Maintainera - tedy na vás), závislosti nezbytné pro úspěšnou kompilaci, atp.
    rules - zajišťuje samotný proces sestavení balíčku. Je to v adresáři debian jediný spustitelný soubor
  3. O tom co kde jak vyplnit pojednává obsáhlý manuál Debian policy. Základní seznámení s obsahem těchto souborů můžete najít v kapitolce Soubory pro debianizaci tak najdete příklady obsahu těchto souborů a popis významu jednotlivých částí pro sestavení balíčku.

Sestavení balíčku

editovat

Po provedené debianizaci můžeme přikročit k pokusům o sestavení balíčku.

Nejprve si jej zkuste zkompilovat..

user@stroj:~$ fakeroot debian/rules build

Podotýkám, že soubor rules musí mít práva pro spuštění. Chyby, které se objeví při sestavení průběžně opravujte. Např. pokud je nutné doinstalovat některý balík, tak jej nezapomeňte uvést v závislostech, v souboru control, nebo pokud je nutné provést opravu ve zdrojovém kódu doplňte příslušný patch.

Teprve až vám sestavení proběhne až do konce, zkuste sestavit binární balíček..

user@stroj:~$ fakeroot debian/rules binary

Po úspěšném sestavení naleznete v rodičovském adresáři příslušné binární instalační balíčky, které již můžete normálně nainstalovat příkazem Linux:dpkg. Teprve až doladíte i veškeré nutné závislosti, přistupte k následujícími kroku - sestavení balíčku pomocí příkazu dpkg-buildpackage

Kontrola chyb sestavení

editovat

Pro kontrolu chyb sestavení binárního balíčku můžete použít několik utilit. Především jsou to utility lintian a linda které analyzují soubor s příponou .changes vytvořený během sestavovaní balíčku příkazem dpkg-buildpackage

user@stroj:~$ cd balik-1.0
user@stroj:~$ dpkg-buildpackage
...
user@stroj:~$ cd ..
user@stroj:~$ lintian balik_1.0-1_amd64.changes
W: balik source: native-package-with-dash-version
W: balik: non-standard-dir-in-usr usr/balik/
W: balik: file-in-unusual-dir usr/balik/balik.la
...

Teprve až máte vychytané všechny mouchy, které by nějakým způsobem mohly zhatit sestavení balíku, přikročte k vytvoření zdrojového instalačního balíčku, který bude možné umístit do zdroje (repozitory)

Vytvoření zdrojového balíčku

editovat

Zdrojový balíček tvoří zakomprimovaný rozdílový soubor, soubor s popisem a kontrolními součty příslušných souborů a balíček s originálním zdrojovým kódem. Příklad vytvoření tohoto balíčku najdete u popisu utility dpkg-source, kterou se to provádí.

Nezapomeňte předtím adresář po předchozím sestavení pořádně vyčistit. Zda proběhne rovněž korektní vyčištění zjistíte spuštěním..

user@stroj:~$ fakeroot debian/rules binary

Aktualizace balíčku

editovat

Na závěr se věnujme chvilku aktualizaci balíčků.

Možná jste se již sami setkali s tím, že některý balíček nejde instalovat kvůli chybám v závislostech, a nepomůže kvůli nějaké chyby ani jeho rekompilace. Pokud odhalíte příčinu problému, je vhodné o ní informovat:

  • v případě že jde o chybu v aplikaci autora aplikace
  • v případě že jde o chybu v lokalizaci autora lokalizace
  • v případě že jde o chybu při sestavení balíčku vlastníka balíčku (Maintainera)

Zcela běžně se vyskytují balíčky "osiřelé", tj. takové, které někdo někdy debianizoval a z nejrůznějších příčin v tom již nepokračuje. U takových balíčků, pokud se chcete stát oficiálním správcem balíčků projektu Debian, můžete jejich vlastnictví převzít, a místo nové debianizace kódu pouze aktualizovat stávající debianizaci. Ovšem dříve než začnete něco podobného dělat, je třeba vědět jak na to.

Pokud si provádíte úpravu balíku sami, tak před jeho sestavením spusťtě příkaz..

user@stroj:~$ dch -i

Ten vám otevře k editaci soubor changelog, doplněný o aktuální čas, vaše nacionále, atp. Tam doplňte informaci o změnách které jste ve zdrojáku balíku provedli a potom normálně příkazem dpkg-buildpackage proveďte jeho sestavení.