====== 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: 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ěč|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 [[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. 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 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 . 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 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. 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 {{.:example.png}} 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. ===== 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.