Vytvoření .deb balíku

Tento návod je určen pro pokročilé uživatele

Možná jste někdy vytvořili nějaký prográmek, o kterém si myslíte, že je natolik užitečný, že by byla škoda nezveřejnit ho. Potom jste určitě museli vyřešit uživatelsky komfortní způsob instalace. V Linuxu se pro tento účel používají různé balíkovací systémy a tento návod má za cíl, jak vytvořit balík v DEB formátu, používaném v Ubuntu.

:!: Tento návod se zabývá jak tvořením balíků z binárních souborů, tak tvořením ze zdrojových souborů.

Vytváříme balíky z binárek

Než začneme cokoli, musíme si nejdříve vytvořit někde na příhodném místě na disku následující adresářovou strukturu:

tmp
|-- DEBIAN
|   |-- control
|   `-- md5sums
`-- usr
    `-- share
        |-- applications
        |   `-- VasSpoustec.desktop
        |-- NazevVasehoProgramu
        `-- pixmaps
            `-- VaseIkona.png

Pro vysvětlení: control, md5sums, debian-binary a VasSpoustec.desktop jsou textové soubory, do kterých bude později nutné něco napsat. VaseIkona.png je ikona vašeho programu. NazevVasehoProgramu je jméno adresáře, ve kterém chcete mít instalován program. Na vytvoření použijeme tyto příkazy:

mkdir tmp
cd tmp
mkdir DEBIAN
mkdir usr
mkdir usr/share
mkdir usr/share/applications
mkdir usr/share/NazevVasehoProgramu
mkdir usr/share/pixmaps

Vytvořili jsme kostru, nyní bude potřeba ji naplnit daty.

  1. Složku NazevVasehoProgramu pojmenujte jak chcete a nakopírujte do ní binárku vašeho programu i se všemi potřebnými daty. Pochopitelně můžete vytvářet podsložky, jak je vám libo.
  1. Do složky pixmaps nakopírujte ikonu vašeho programu, která bude použita ve spouštěcím menu
  1. Do složky applications nakopírujte spouštěč vašeho programu. Tento spouštěč bude použit v hlavní nabídce Ubuntu případně jiné distribuce. Jde o textový soubor s příponou .desktop a následující syntaxí:
[Desktop Entry]
Name=Zobrazované jméno vaší aplikace
Comment=Komentář k vaší aplikaci
Exec=cesta/k/vasi/binarce
Terminal=false/true (terminál: ano / ne)
Type=Application
Icon=nazev_vasi_ikony_v_pixmaps.png
Encoding=UTF-8
Categories=Kategorie - viz níže

Volba Terminal značí, zda má být použit textový mód. Kategorie jsou na výběr následující:

  • Audio Video - Zvuk a Video
  • Development - Programování
  • Education - Výuka
  • Game - Hry
  • Graphics - Grafika
  • Network - Internet
  • Office - Kancelář
  • Settings - Nastavení (obvykle v samostatném menu)
  • System - Systémové nástroje
  • Utility

Na výběr je ovšem daleko více kategorií. Úplný seznam naleznete na freedesktop.org.

Ve složce DEBIAN vytvořte soubor md5sums, který obsahuje kontrolní součty umožňující ověřit integritu vašeho programu. Kontrolní součet zajistí, že balíkovací systém pozná případné poškození balíku a nepovolí instalaci. Nejlépe tak učiníte následujícím příkazem, který spustíte ve vašem pracovním adresáři.

find * -type f ! -regex '^DEBIAN/.*' -exec md5sum {} \; > DEBIAN/md5sums

Ve složce DEBIAN vytvořte soubor control. Tento soubor obsahuje informace o balíku jako jméno autora, popis, závislosti na ostatních balících, atd. Formát tohoto souboru je následující:

Package: nazev_baliku
Version: 0.01
Section: sekce - především oficiální balíky
Priority: optional (důležitost, nechte vždy optional)
Recommends: kaffe | java-virtual-machine (doporučené balíky, oddělovačem je |)
Depends: libc6 (>= 2.2.4-4) (balíky nutné pro instalaci, v závorce minimální verze)
Architecture: i386 (architektura procesoru, pokud programujete v Javě tak all)
Installed-Size: 2717 (velikost složky /usr/ v kB)
Maintainer: vase_jmeno <vase.emailova@adresa.cz>
Description: Krátký popis v AJ
 Dlouhý popis v AJ
 .
 Druhý odstavec dlouhého popisu, obvykle vaše URL

Věci jako vaše jméno, popis, atd. uvidí uživatel v manažeru balíků. Název balíku by měl obsahovat pouze malá písmena (bez diakritiky, samozřejmě). Seznam sekcí je možné sehnat na stránkách Debianu, nicméně u neoficiálních balíků nevyplněná sekce nevadí.

Pokud máte vše připraveno, nezbývá než provést finální sestavení balíku a jeho zabalení do souboru s příponou deb. V terminálu přejděte do složky nadřazené složce tmp (cd /home/uzivatel/) a spusťte následující příkaz:

sudo chown -hR root:root tmp
sudo dpkg-deb -b tmp nazev_0.1_i386.deb

První příkaz změní vlastníka souborů na superuživatele. Pokud by se neprvedl, bude vlastník nainstalovaných souborů uživatel se stejným UID jako uživatel, který provedl sestavení balíku, což může vyústit v bezpečnostní díru! Druhý příkaz zabalí váš balík do souboru s příponou .deb. Měl by také být spuštěn jako root.

Před případnou distribucí, například na osobních stránkách, je více než vhodné provést ověření. Jednak je potřeba zjistit, zda případný spustitelný soubor bude mít na cílovém PC bez nainstalovaného vývojového prostředí všechny knihovny. K tomu se hodí příkaz ldd <binárka>. Veškeré závislosti binárky je potřeba uvést do závislostí balíku a je rovněž vhodné ověřit, že jsou standardně k dispozici v repozitáři (případně uživatele nasměrovat na alternativní repozitář nebo použít blbuvzdorný způsob - slinkovat binárku staticky.

Dále je potřeba ověřit, zda je v pořádku samotný balíček. Příkaz lintian <balíček> vypíše veškeré nedostatky, které na vašem balíčku najde a vy je tak můžete opravit.

Nyní již jen stačí v Nautilu na váš balík poklepat a instalace může začít.

Vytvoření DEB balíku ze zdrojových souborů

Pro vytváření DEB balíků ze source je třeba první nainstalovat potřebné balíčky.

sudo apt-get install dpkg-dev dh-make debhelper fakeroot

Pokud máte adresář se zdrojáky, který se kompiluje pomocí ./configure && make && make install, popř. ./autogen.sh && make && make install, vytvořit DEB balíček není o nic těžší než klasická kompilace.

Oproti checkinstall má takový postup výhodu, že se doplní do balíku závislosti.

Proces vypadá takhle:

mv vas-adresar-se-source vas-adresar-se-source-verze(např. mv pidgin pidgin-2.4.1)
cd vas-adresar-se-source-verze
dh_make -e vas@email.com --createorig

postará se o vytvoření debian adresáře s potřebnými soubory a –createorig vytvoří kopii adresáře před dh_make, důležitý parametr.

nano debian/control

Příklad obsahu:

Source: program
Section: unknown
Priority: extra
Maintainer: pepa pepa@volny.cz
Build-Depends: debhelper (>= 7), autotools-dev
Standards-Version: 3.8.0
Homepage:

Package: program
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description:

Upravte si v něm položky „Maintainer“ a „Description“, pokud je váš balík pro „all“ architekturu, přepište. Description zakončete dvěma prázdnými řádky

dpkg-buildpackage -b

Pak se mimo složku se zdrojákem objeví finální balíček.

V tomto případě je postup stejný jako v prvním případě, pouze se nespouští configure script. Upravte si Makefile tak, aby vám vyhovovalo (instalační adresář musí směřovat do $DESTDIR), a dále pokračujte s dh_make.

Pokud máte python source se scriptem setup.py, spusťte setup.py se správným parametrem a prefix(např. /usr) a pak pokračujte s dh_make.

  • Poslední úprava: 2012/08/31 17:43
  • autor: Tomáš Jędrzejek