vytvoření_.deb_balíku

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
vytvoření_.deb_balíku [2012/07/28 14:07] – vytvořeno ubuntuvytvoření_.deb_balíku [2019/02/25 17:21] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 +====== Vytvoření .deb balíku ======
  
 +{{page>konvence/pokročilý}}
 +
 +{{.:package.png}} 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:
 +<code>
 +tmp
 +|-- DEBIAN
 +|   |-- control
 +|   `-- md5sums
 +`-- usr
 +    `-- share
 +        |-- applications
 +        |   `-- VasSpoustec.desktop
 +        |-- NazevVasehoProgramu
 +        `-- pixmaps
 +            `-- VaseIkona.png
 +</code>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:
 +
 +<code>
 +mkdir tmp
 +cd tmp
 +mkdir DEBIAN
 +mkdir usr
 +mkdir usr/share
 +mkdir usr/share/applications
 +mkdir usr/share/NazevVasehoProgramu
 +mkdir usr/share/pixmaps
 +</code>
 +===== 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ěč|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í:
 +<code>
 +[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
 +</code>
 +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 [[http://standards.freedesktop.org/menu-spec/latest/apa.html|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.
 +<code>
 +find * -type f ! -regex '^DEBIAN/.*' -exec md5sum {} \; > DEBIAN/md5sums
 +</code>
 +===== 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í:
 +<code>
 +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
 +</code>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:
 +<code>
 +sudo chown -hR root:root tmp
 +sudo dpkg-deb -b tmp nazev_0.1_i386.deb
 +</code>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 [[Nautilus|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.
 +
 +<code>
 +sudo apt-get install dpkg-dev dh-make debhelper fakeroot
 +</code>
 +===== 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:
 +
 +<code>
 +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
 +</code>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.
 +<code>
 +nano debian/control
 +</code>{{.:example.png}}
 +Příklad obsahu:
 +<code>
 +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:
 +
 +</code>
 +
 +
 +
 +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
 +<code>
 +dpkg-buildpackage -b
 +</code>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.