DEB balíček krok za krokem

Binární DEB balíčky lze vytvořit několika způsoby: od poloautomatických – konverzí z RPM (alien), ze zkompilovaných zdrojových kódů (checkinstall) – až po klasickou ruční přípravu. Ta je mírně zdlouhavější, zato obvykle bezproblémová. S oblibou používám instalaci Ubuntu ve virtuálním počítači (KVM), abych udržel svůj pracovní počítač čistý, bez zbytečných balíčků nutných pouze pro kompilaci.

Postup vychází z Debian New Maintainer’s Guide a Debian Binary Package Building HOWTO s mnoha zjednodušeními: mnou vytvářené balíčky jsou vytvářeny pro jednu konkrétní verzi jedné distribuce a nejsou určeny k dalšímu šíření.

Teď již samotný postup. Základním předpokladem je bezchybná konfigurace, kompilace a instalace programu dle jeho instalačních instrukcí. Obvykle to bude:

./configure
make
sudo make install

Pokud činí problémy závislosti nutné pro kompilaci, následující příkazy mohou pomoci nalézt potřebné balíčky:

strace -f -o /tmp/log ./configure
# or make instead of ./configure, if the package doesn't use autoconf
for x in `dpkg -S $(grep open /tmp/log|\
perl -pe 's!.* open\(\"([^\"]*).*!$1!' |\
grep "^/"| sort | uniq|\
grep -v "^\(/tmp\|/dev\|/proc\)" ) 2>/dev/null|\
cut -f1 -d":"| sort | uniq`; \
do \
echo -n "$x (>=" `dpkg -s $x|grep ^Version|cut -f2 -d":"` "), "; \
done

Funguje-li vše dle očekávání, můžeme pokračovat.

Struktura DEB souboru

DEB soubor má následující strukturu:

$ ar tv elektra-0.7.0rc3_amd64.deb
rw-r--r-- 0/0 4 Sep 14 14:46 2008 debian-binary
rw-r--r-- 0/0 476 Sep 14 14:46 2008 control.tar.gz
rw-r--r-- 0/0 847352 Sep 14 14:46 2008 data.tar.gz

Kde debian-binary obsahuje informaci o verzi formátu DEB souboru, control.tar.gz je archiv s kontrolními soubory potřebnými pro „ovládání“ DEB balíčku a data.targ.gz je archiv se samotným programem – jeho binární verzí v adresářové struktuře, do které by se měl nainstalovat.

Vytvoření DEB souboru

Příprava DEB balíčku spočívá v instalaci programu klasickou metodou make install do samostatného adresáře (tj. nikoliv mezi ostatní programy v /usr), vytvoření kontrolních souborů a spuštění příkazu na vytvoření DEB balíčku.

Nainstalujte zkompilované soubory budoucího balíčku do zvláštního adresáře $HOME/tmp/debian (prázdného):

$ make DESTDIR=$HOME/tmp/debian install

Vytvořte adresář pro kontrolní soubory:

$ mkdir $HOME/tmp/debian/DEBIAN

A umístěte do něj soubor s následujícím obsahem:

$ cat $HOME/tmp/debian/DEBIAN/control
Package: elektra
Version: 0.8.1rc3
Section: Development/Libraries
Priority: optional
Architecture: amd64
Depends: base-files
Maintainer: root
Description: Standard for configurations of software.
The Elektra Project tries to set a standard for configurations,
based on key-value pair tree of items. It is designed to be lightweight,
free of dependencies.
The Elektra Project was formerly named Linux Registry Project.

Význam jednotlivých klíčů je celkem zřejmý, možné hodnoty naleznete rozepsané v manuálu uvedeném na počátku tohoto článku. Zajímavý je především klíč „Depends“, který obsahuje seznam (oddělený čárkou) balíčků, bez kterých náš program nepoběží. Syntaxe je Depends: foo (>= 1.2), libbar1 (= 1.3.4).

Kromě něj lze použít klíč „Replaces“ , pokud balíček přepisuje soubor, který již je nainstalován jiným programem (a je-li to tak v pořádku).

Kromě povinného souboru DEBIAN/control můžeme do tohoto adresáře umístit další soubory: DEBIAN/postinst, DEBIAN/preinst. Tyto soubory jsou spuštěny po/před instalací balíčku a obsahují instrukce, které je nutné provést. Jejich základní template je:

$ ls DEBIAN/postinst
set -e
ldconfig
exit 0

Kde ldconfig je příkaz, který se vykoná po instalaci – v tomto případě slouží k aktualizaci dočasné paměti dynamického linkeru knihoven.

Máme-li všechno pohromadě, DEB balíček vytvoříme:

$ fakeroot dpkg-deb --build $HOME/tmp/debian $HOME/elektra-0.8.1rc3_amd64.deb

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..