Debian

Jak na vytváření balíčků Debian

Jak na vytváření balíčků Debian

1. Předmluva

Zodpovědnost za stroj znamená péči o hardware i softwarové komponenty. Jak je vidět v každodenním životě správce systému, je mnohem lepší instalovat software jako softwarový balíček než jako hromadu zdrojových souborů. To snižuje náklady na správnou údržbu systému.

Balíčky, které jsou k dispozici u preferovaného distributora, jsou ověřeny a kontrolovány správcem balíků. Testoval software a ujistil se, že odpovídá ostatním softwarovým balíčkům dostupným v distribuci. Balíček je dále podepsán klíčem GPG od správce balíčků. To zaručuje integritu balíčku a ukazuje, že balíček pochází z důvěryhodného zdroje.

Formát balíčku závisí na vaší distribuci Linuxu. Vybrané formáty jsou následující:

deb

Balíčky používané v: Debian GNU / Linux, Ubuntu, Armbian, Linux Mint, Knoppix

ot / min

Balíčky používané v: RedHat, Fedora, CentOS, OpenSuse

tgz a txz

Balíčky používané v: Slackware

dehet.xz

Balíčky používané v: Arch Linux

Tento dokument vysvětluje, jak stručně vytvořit balíček pro Debian GNU / Linux. Podrobné informace o formátu balíčků Debian a nástrojích pro údržbu systému Linux založeného na „deb“ najdete v příručce Debian Package Management Book [dpmb] K vytváření balíčků pro Debian GNU / Linux jsou důležité tyto dokumenty:

Balíček, se kterým budeme pracovat, se jmenuje „helloworld“ a má číslo verze 0.1. Pro demonstrační účely jednoduše obsahuje jediný skript v Pythonu, který vydává slavnou zprávu „Hello, world!„:

#!/ usr / bin / python print („Ahoj, svět!") 

2. Požadavky

2.1. Klíč GPG

Jako krok 1 si připravte klíč GPG. Později bude klíč potřebný k podepsání balíčku. Mějte na paměti, že nepodepsané balíčky jsou nedůvěryhodné a nemohou být součástí vesmíru Debianu.

V případě, že ještě nemáte klíč GPG, vytvořte si jej. Můžete postupovat podle následujících tří kroků. První příkaz vygeneruje nový klíč, druhý vyexportuje váš nový klíč do samostatného souboru a třetí přidá klíč do vašeho osobního klíčenky.

$ gpg --gen-key $ gpg -a - výstup ~ /.gnupg / YOUR_NAME.gpg --export 'VAŠE JMÉNO' $ gpg --import ~ /.gnupg / YOUR_NAME.gpg 

Během vytváření se ujistěte, že křestní jméno _YOUR NAME_ je správné. Je běžné používat kombinaci křestního jména a příjmení. Tento název bude muset být v balíčku přesně stejný, pak při vytváření „kontrolního“ souboru balíčku Debian. Více informací o GPG naleznete v příručce GNU Privacy Handbook [gph].

2.2. Řetěz balicího nástroje

K vytvoření balíčku Debian se zdrojovým kódem jsou ve vašem systému vyžadovány následující softwarové balíčky:

Jako uživatel 'root' je můžete nainstalovat pomocí následujícího příkazu:

# apt-get install build-essential autoconf automake autotools-dev dh-make debhelper devscripts fakeroot xutils lintian pbuilder 

2.3. Připravte si software, který chcete zabalit

Musíme připravit adresář pro sestavení balíčku. Vytvořte adresář a připravte prostředí, ve kterém balíček sestavíme:

$ mkdir -p ~./ build / helloworld / 0.1 

Zkopírujte 'tar.gz 'komprimovaný archiv v adresáři:

$ cp helloworld-0.1.dehet.gz ~./ build / helloworld / 0.1 

Přejděte do adresáře a rozbalte balíček:

$ cd ~./ build / helloworld / 0.1 ~ / build / helloworld / 0.1 $ tar -xzf helloworld-0.1.dehet.gz 

Adresář nyní obsahuje zdrojový kód v samostatném adresáři i komprimovaný archiv:

~ / build / helloworld / 0.1 $ ls helloworld-0.1 helloworld-0.1.dehet.gz 

3. Debianizace

V tomto okamžiku přidáme soubory, které jsou specifické pro balíček Debian. Proto je tento krok pojmenován _Debianizace_ softwaru. To se děje v několika jednotlivých krocích.

3.1 Připravte strukturu balíčku

Přejděte do adresáře, který uchovává celý zdrojový kód balíčku. V našem příkladu balíček obsahuje soubor 'helloworld.py ', pouze:

~ $ cd build / helloworld / 0.1 / helloworld-0.1 ~ / build / helloworld / 0.1 / helloworld-0.1 $ ls helloworld.py 

Přidejte soubory, které jsou specifické pro balíček Debianu. Do hry vstupuje nástroj 'dh_make'. Přepínač „-e“ používá danou adresu jako e-mailovou adresu v poli „Údržba“ souboru „debian / control“. Při vytváření balíčku místo toho použijte vlastní e-mailovou adresu. Nezapomeňte použít stejnou e-mailovou adresu, která odpovídá vašemu klíči GPG.

Přepínač '-f' použije daný soubor jako původní zdrojový archiv a přeskočí kopírování aktuálního stromu programu na 'program.orig '.

~ / build / helloworld / 0.1 / helloworld-0.1 $ dh_make -e [chráněno e-mailem] -f… / helloworld-0.1.dehet.gz 

Na výzvu budete vyzváni k výběru typu balíčku, který má být vytvořen. Výběr _jediného binárního_typu 's'.

Typ balíčku: single binary, indep binary, multiple binary, library, kernel module, kernel patch? [s / i / m / l / k / n] s Jméno správce: Frank Hofmann E-mailová adresa: [chráněno e-mailem] Datum: So, 04. listopadu 2017 21:16:13 +0100 Název balíčku: helloworld Verze: 0.1 Licence: prázdná Typ balíčku: Single Hit  pro potvrzení: V současné době neexistuje žádný nejvyšší úroveň Makefile. To může vyžadovat další ladění. Hotovo. Upravte nyní soubory v debian / podadresáři. Měli byste také zkontrolovat, zda se makelow soubory helloworld instalují do $ DESTDIR a ne do / . 

Výsledkem je adresář s názvem 'debian':

~ / build / helloworld / 0.1 / helloworld-0.1 $ ls debian helloworld.py 

Tento adresář obsahuje všechny soubory specifické pro balíček.

3.2. Upravte kontrolní soubor

Soubor 'debian / control' udržuje závislosti, které jsou potřebné _k vytvoření_ balíčku. Pomocí příkazu 'dpkg-depcheck -d ./ configure 'obdržíte seznam se všemi požadovanými balíčky. V našem případě není potřeba žádný další balíček, protože Python je interpretovaný jazyk.

Dále musíme upravit soubor 'debian / control' a přidat hodnoty specifické pro balíček. V našem příkladu to vypadá následovně:

Zdroj: helloworld Sekce: python Priorita: volitelná Správce: Frank Hofmann <[email protected]> Build-Depends: debhelper (> = 9) Standards-Version: 3.9.5 Domovská stránka: http: // www.efho.de / # Vcs-Git: git: // anonscm.debian.org / collab-maint / helloworld.git # Vcs-Browser: http: // anonscm.debian.org /?p = collab-maint / helloworld.git; a = summary Balíček: helloworld Architecture: any Závisí: $ shlibs: Depends, $ misc: Depends, python Popis: Vytiskne Hello World v Pythonu Vytiskne Hello World v Pythonu 

3.3. Upravte soubor s autorskými právy

Soubor 'debian / copyright' obsahuje licenční informace pro softwarový balíček. Je připraven na vydání prostřednictvím GNU Public License 2 (GPLv2). Pro náš příklad to vypadá následovně:

Formát: http: // www.debian.org / doc / návody k balení / formát autorských práv / 1.0 / Upstream-Name: helloworld Zdroj: http: // www.efho.de / Soubory: debian / * Copyright: 2017 Frank Hofmann <[email protected]> Licence: GPL-2 + Tento balíček je svobodný software; můžete jej dále šířit a / nebo upravovat podle podmínek GNU General Public License zveřejněné Free Software Foundation; buď verze 2 licence, nebo (dle vašeho uvážení) jakákoli pozdější verze ... Tento balíček je distribuován v naději, že bude užitečný, ale BEZ JAKÉKOLI ZÁRUKY; bez předpokládané záruky OBCHODOVATELNOSTI nebo VHODNOSTI PRO KONKRÉTNÍ ÚČEL. Další podrobnosti najdete v Obecné veřejné licenci GNU ... Spolu s tímto programem jste měli obdržet kopii Všeobecné veřejné licence GNU. Pokud ne, podívejte se  . Na systémech Debian najdete kompletní text GNU General Public License verze 2 v „/ usr / share / common-license / GPL-2“. 

3.4. Upravte soubor protokolu změn

Po informacích o autorských právech je třeba upravit soubor 'debian / changelog'. V našem příkladu přidáme informace „Počáteční vydání“.

helloworld (0.1-1) nestabilní; naléhavost = nízká * První vydání - Frank Hofmann <[email protected]> So, 04. listopadu 2017 21:16:13 +0100 

To je vše, co zatím potřebujeme - konečně můžeme balíček sestavit.


4. Sestavte balíček

K sestavení balíčku musíme přesunout o jeden adresář nahoru a spustit následující příkaz:

~ / build / helloworld / 0.1 / helloworld-0.1 $ dpkg-buildpackage -rfakeroot

Možnost '-rfakeroot' umožňuje 'dpkg-buildpackage' spouštět příkazy jako privilegovaný uživatel pomocí příkazu 'fakeroot'. To je nutné pro přípravu balíčku a pro vytvoření souborů a adresářů.
Výsledkem výše uvedeného příkazu je delší seznam výstupních zpráv (zobrazených zde v německém prostředí):

dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellversion 0.1-1 dpkg-buildpackage: Quelldistribution nestabilní dpkg-buildpackage: Quellen geändert durch Frank Hofmann <[email protected]> dpkg-buildpackage: Host-Architektur amd64 dpkg-source - before-build helloworld-0.1 fakeroot debian / rules clean dh clean dh_testdir dh_auto_clean dh_clean dpkg-source -b helloworld-0.1 dpkg-source: Informace: Quellformat "3.0 (deka) "wird verwendet dpkg-source: Informace: helloworld wird unter Benutzung des existierenden ./ helloworld_0.1.orig.dehet.gz gebaut dpkg-source: Informace: helloworld wird v helloworld_0.1-1.debian.dehet.xz gebaut dpkg-source: Informace: helloworld wird v helloworld_0.1-1.DSC gebaut debian / rules build dh sestavení dh_testdir dh_auto_configure dh_auto_build dh_auto_test fakeroot debian / rules binary dh binární dh_testroot dh_prep dh_auto_install dh_installdocs dh_installchangelogs dh_perl dh_link dh_compress dh_fixperms dh_strip dh_makeshlibs dh_shlibdeps dh_installdeb dh_gencontrol dpkg-gencontrol: WARNUN: Feld závisí von Paket helloworld: Unbekannte Substitutionsvariable $ shlibs : Závisí dh_md5sums dh_builddeb dpkg-deb: Paket "helloworld" wird in "... / helloworld_0.1-1_amd64.deb "gebaut. dpkg-genchanges <… /helloworld_0.1-1_amd64.changes dpkg-genchanges: kompletter Quellcode beim Hochladen hinzufügen dpkg-source --after-build helloworld-0.1 dpkg-buildpackage: Alles hochzuladen (Originalquellen enthalten) signfile helloworld_0.1-1.dsc Sie benötigen eine Passphrase, um den geheimen Schlüssel zu entsperren. Benutzer: "Frank Hofmann (Hofmann EDV) <[email protected]> „4096-bit RSA Schlüssel, ID D431AC07, erzeugt 2014-09-05 

4.1. Ověření balíčku

Gratulujeme - podařilo se vám sestavit balíček Debianu - ano! Nyní se podívejme na balíček blíže. Zde vstupuje do hry „lintian“. Tento nástroj ověří váš balíček, aby zjistil porušení přísných pravidel, která musí balíčky Debianu splňovat.

Chcete-li spustit testy, zadejte následující příkaz:

lintian helloworld_0.1-1_amd64.deb 

Nástroj nenajde porušení pravidel, ale také pravopisné chyby a nesprávné znaky. Přepínač „-pedantický“ požaduje, aby „lintian“ byl mnohem kritičtější než obvykle. Jak vidíte níže, „lintian“ je trochu nevrlý a objevil tři varování a jednu chybu.

S výjimkou prvního varování můžeme snadno „lintianovi“ udělat radost a upravit obsah balíčku podle sady pravidel. Varování 'new-package-should-close-itp-bug' znamená, že proti balíčku ITP neexistuje žádná zpráva o chybě (ITP znamená _intended to package_). U běžného balíku Debianu musí být zpráva o chybě zaslána do bugtrackeru pro balíček ITP, aby informoval ostatní, že máte v úmyslu začít tento software balit.

4.2. Varování: 'readme-debian-contains-debmake-template

Soubor „README.Debian 'má uchovávat další poznámky týkající se tohoto balíčku. 'dh_make' vytvořil tento soubor pro nás:

helloworld pro Debian ---------------------  -- Frank Hofmann <[email protected]> So, 04. listopadu 2017 21:16:13 +0100 

V našem příkladu nemáme další informace, takže můžeme soubor smazat.

4.3. Varování: 'description-začíná-s-přední-mezery'

Toto varování je vyvoláno, protože delší popis našeho balíčku v souboru 'debian / control' začíná více než jednou mezerou. Jakmile odstraníme jedno místo, varování zmizí.

4.4. Chyba: „description-synopsis-is-duplicated“

Každý balíček vyžaduje krátký i delší popis v debian / control. Tato chyba je vyvolána, protože oba popisy jsou identické. Jakmile jsme prodloužili delší popis, chyba je pryč.


5. Odkazy a reference

- [ddr] Andreas Barth, Adam Di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: The Debian Developer's Reference
- [dnmg] Josip Rodin, Osamu Aoki: Průvodce novým správcem Debianu
- [dpmb] Axel Beckert, Frank Hofmann: Kniha správy balíků Debian
- [dpm] Manuál zásad Debianu
- [dpt] Výukový program pro Debian Packaging
- [gph] Příručka o ochraně osobních údajů GNU
- [lushpaiPackage] Alex Lushpai: Jak vytvořit balíček debian ze zdroje


6. Poděkování

Autor by chtěl poděkovat Axelovi Beckertovi a Geroldovi Rupprechtovi za podporu a kritikům při přípravě tohoto článku.

Hry Jak vyvíjet hru na Linuxu
Jak vyvíjet hru na Linuxu
Před deseti lety by jen málo uživatelů Linuxu předpovídalo, že jejich oblíbený operační systém bude jednoho dne populární herní platformou pro komerčn...
Hry Porty komerčních her s otevřeným zdrojovým kódem
Porty komerčních her s otevřeným zdrojovým kódem
Zdarma, s otevřeným zdrojovým kódem a multiplatformní herní enginy lze hrát staré i některé z poměrně nedávných herních titulů. Tento článek uvede sez...
Hry Nejlepší hry z příkazového řádku pro Linux
Nejlepší hry z příkazového řádku pro Linux
Příkazový řádek není při používání Linuxu jen vaším největším spojencem - může být také zdrojem zábavy, protože jej můžete použít k hraní mnoha zábavn...