Portál AbcLinuxu, 13. května 2024 17:24

Balíčky pro Debian - 2 (popisy balíčků)

10. 6. 2008 | Michal Čihař
Články - Balíčky pro Debian - 2 (popisy balíčků)  

Veškeré informace o balíčku se nacházejí v souboru debian/control. Co všechno tento soubor musí obsahovat a co vše do něj můžeme napsat?

Obsah

Soubor debian/control je jednoduchý textový soubor ve formátu odpovídajícím RFC-2822, ve kterém jsou základní informace o balíčku. Informace jsou vždy zadány ve formě jméno: hodnota a bez tohoto souboru se prostě neobejdeme. Ale pojďme už od teorie a podívejme se na debian/control z našeho ukázkového balíčku photo-uploader rozebraném v minulém díle:

Source: photo-uploader
Section: graphics
Priority: extra
Maintainer: Michal Čihař <nijel@debian.org>
Build-Depends: debhelper (>= 5.0.37.2)
Build-Depends-Indep: python-dev, python-central (>= 0.5), python-pycurl
Standards-Version: 3.7.3
XS-Python-Version: current
Vcs-Svn: svn://svn.cihar.com/debian-photo-uploader
Vcs-Browser: http://viewsvn.cihar.com/debian-photo-uploader
Homepage: http://cihar.com/software/photo-uploader/

Package: photo-uploader
Architecture: all
Depends: ${python:Depends}, python-pycurl
XB-Python-Version: ${python:Versions}
description: Command line photo uploader
 Photo uploader is a command line utility (and Python module) for
 uploading photos to minilabs for printing or to any service for image
 hosting. It currently supports only a few minilab services in Czechia 
 and some hosting services like ImageShack, but can be easily extended 
 to support others.

Jak vidíte, soubor je rozdělen prázdným řádkem do dvou částí. První se týká zdrojového balíčku a informace tam uvedené budou ve výsledném zdrojovém balíčku v souboru photo-uploader_0.5-1.dsc. Druhá část binárního balíčku se při vytváření balíčku uloží do něj. Pokud by zdrojový balíček vytvářel více binárních, bude takovýchto sekcí obsahovat více, jednu pro každý binární balíček. Některé hodnoty jsou společné pro obě sekce a je možné je uvést jak u zdrojového, tak u binárního balíčku. V tom případě mají informace u binárního balíčku přednost.

Zdrojový balíček

link

První část tedy popisuje zdrojový balíček, začneme pěkně od začátku.

Binární balíček

link

Pro každý binární balíček bude v souboru debian/control právě jedna sekce se jménem balíčku uvedené za klíčovým slovem Package. Jména balíčků ne vždy přímo odpovídají tomu, jak se balený program jmenuje, protože je potřeba mít v distribuci konzistentní pojmenování podobných věcí. Proto se třeba moduly pro Python vždy jmenují python-jménomodulu a pro Perl zase libcosi-perl. Pokud nevíte, jaké jméno zvolit, a nechce se vám hledat policy pro příslušnou skupinu balíčků, najděte si něco podobného a inspirujte se.

Trochu speciálním případem jsou sdílené knihovny. U těch musí jméno balíčku odpovídat soname dané knihovny. Tím je zajištěna možnost mít současně nainstalované různé verze jedné knihovny, což je v systému používajícím rolling updates naprostá nutnost. Knihovna libc.so.6 tedy bude v balíčku libc6 a libgtkspell.so.0 zase v libgtkspell0. U vývojových balíčků už obvykle není potřeba mít současně nainstalované různé verze (ale najdou se i výjimky, třeba knihovna libdb nechvalně proslulá nekompatibilitou jednotlivých verzí), a proto stačí jediný, například libgtkspell-dev.

Další položka Architecture určuje architekturu binárního balíčku. Pokud nebalíme něco, co funguje jen na některé architektuře, vystačíme si s hodnotami all a any. Hodnota any určuje balíček, který lze kompilovat pro každou architekturu, all oproti tomu balíček nezávislý na architektuře, například data nebo dokumentaci. Jedná se o povinnou položku.

Závislosti

link

Závislosti balíčku získáme z položky Depends. Protože však jsou vývojáři tvorové líní, nemusíme tam uvádět vše, protože debhelper je schopný některé závislosti najít automaticky a pak je nahradit do tohoto pole. Pro tento účel se používají v poli Depends proměnné - tak, jako je v tomto případě použito ${python:Depends}. U kompilovaných balíčků budeme chtít použít ${shlibs:Depends}, což se nahradí jména balíčků s knihovnami, se kterými je náš program (nebo knihovna) slinkován. Takovýchto substitucí existuje více, obvykle bývá zvykem uvádět ještě ${misc:Depends} a pak ještě můžeme použít informace o verzi právě kompilovaného balíčku ve formě ${source:Version} a ${binary:Version}. Závislosti v balíčku samozřejmě povinné nejsou, ale asi se bez nich neobejdeme.

Kromě striktní závislosti umožňuje Debian ještě mnoho dalších vztahů mezi balíčky: Recommends, Suggests, Enhances, Pre-Depends a Conflicts. Conflicts značí konflikt balíčků, Pre-Depends závislost, která je potřeba již při instalaci (pokud používáme ve skriptících při instalaci nějaký nástroj, měli bychom ho tam uvést).

Recommends a Suggests jsou jen volitelné závislosti, přičemž Recommends je silnější závislost a výchozí chování APT je používat Recommends jako závislost a tyto balíčky tedy budou nainstalovány, pokud si uživatel nezvolí jinak. Závislost Suggests je nejslabší a je na uživateli, zda si tyto balíčky nainstaluje.

Poslední vztah je Enhances, což je vlastně opačná varianta Suggests. Jedná se tedy o slabou závislost, ale v opačném směru.

Další položky

link

V námi zkoumaném balíčku ještě vidíme XB-Python-Version. Platí to samé jako pro variantu s XS- ve zdrojovém balíčku, tedy týká se jen balíčků pro Python a prozatím si jí nemusíme všímat.

Další položkou, se kterou se můžeme setkat, je Essential. Pokud má hodnotu yes, je balíček považován za nezbytný k funkci systému a při jeho odstraňování musí uživatel vynaložit větší úsilí na jeho odinstalování.

Popis balíčku

link

Poslední položkou je popis balíčku - Description. První řádek určuje krátký popisek, další odsazené řádky jsou dlouhý popisek. Pokud chceme delší popisek rozdělit do odstavců, je potřeba odstavec nahradit tečkou a zachovávat odsazení, například:

Description: Some package
 Very long description of some package, which needs
 more paragraphs.
 .
 Second paragraph is completely useless here.

Závěr

link

Tím jsme probrali základní možnosti týkající se toho, co uvést v souboru debian/control a příště se podíváme do dalších.

Seriál Balíčky pro Debian (dílů: 12)

První díl: Balíčky pro Debian - 1 (úvod), poslední díl: Balíčky pro Debian - 12 (závěr aneb co se jinam nevešlo).
Předchozí díl: Balíčky pro Debian - 1 (úvod)
Následující díl: Balíčky pro Debian - 3 (další informace v balíčku)

Související články

Na co se často ptáme: Balíčkovací systémy
Seriál: Instalace softwaru v Linuxu
Seriál: Gentoo ebuild
Seriál: Rukověť baliče RPM
Seriál: Balíčkovací systém Arch Linuxu
Smart Package Manager - instalujeme chytře
Zdroje balíčkov pre Ubuntu
Balíčkovací systém Mandrake Linuxu
Balíčkovací systém Gentoo Linuxu

Odkazy a zdroje

Návod pro začínajícího balíčkáře
Příručka vývojáře
Zásady Debianu
Dokumentace pro vývojáře

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.