Vytvoření .deb balíku
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
Příprava adresářové struktury
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
Nakopírování souborů
Vytvořili jsme kostru, nyní bude potřeba ji naplnit daty.
- 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.
- Do složky
pixmaps
nakopírujte ikonu vašeho programu, která bude použita ve spouštěcím menu
- 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.
Vytvoření kontrolních součtů
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
Instalační informace
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í.
Sestavení balíku
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.
Ověření balíku
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
Zdrojáky s configure scriptem
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
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.
Zdrojáky s Makefile
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.
Python zdrojáky
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.