Několik úrovní balíčkovacího systému
Nástroje balíčkovacího systému Debianu lze rozdělit do několika úrovní. Nejnižší vrstvu tvoří program dpkg-deb. Ten neumí pracovat s balíčkovacím systémem jako celkem, ale pracuje pouze se samostatnými balíčky. S jeho pomocí můžeme nad balíčky provádět zhruba stejné operace jako s programy ara tar. Jediným rozdílem je pravděpodobně poskytnutý komfort. Další vrstvou balíčkovacího systému Debianu je program dpkg. Ten již nepracuje pouze s jednotlivými balíčky, ale provádí také operace nad celým balíčkovacím systémem (např. kontrola závislostí, instalace a deinstalace balíčků atd.). Další úrovní balíčkovacího systému jsou tzv. frontendy. Tyto frontendy mohou být buď řízené z příkazové řádky pomocí argumentů (legendární apt), nebo mohou mít plně interaktivní uživatelské rozhraní (dselect). Nad nástroji apt jsou pak nástroje ještě vyšší úrovně. Zejména se jedná o grafické frontendy (gnome-apt, synaptic) a program aptitude, který lze použít jako interaktivní i neinteraktivní rozhraní k nástrojům apt.
Nástroj velmi nízké úrovně
dpkg-deb je nástroj velmi nízké úrovně a je zřídkakdy uživatelem používán přímo. Na tom má svůj podíl i fakt, že dpkg-deb je možné vyvolat pomocí dpkg, kterému lze poskytnout argumenty určené programu dpkg-deb. Zajímá-li někoho příkaz dpkg-deb podrobněji, odkazuji ho na manuálovou stránku (popř. zdrojový kód :-)). Jako příklad použití si ukážeme zjišťování, jaké informace o balíčku jsou obsaženy v souborucontrol (o něm jsme se zmínili v minulém dílu):
$ dpkg-deb -f geg_1.0.2-4_i386.deb
Package: geg
Version: 1.0.2-4
Section: math
Priority: optional
Architecture: i386
Depends: libc6 (>= 2.3.1-1), libglib1.2 (>= 1.2.0), libgtk1.2 (>= 1.2.10-4), xlibs (>> 4.1.0)
Installed-Size: 176
Maintainer: Frederic Peters <fpeters@debian.org>
Description: a GTK+ Equation Grapher
geg is a very simple utility for parsing and plotting 2D-functions, eg
f(x) = 3 + sin(x), and much more complicated functions of course.
It is written with GTK+ and provides a neat, configurable user interface.
$
Informace o balíčku
Z předchozího příkazu dpkg-deb -f vidíme, jaké záznamy o sobě balíček obsahuje v souboru control. Odtud také čerpají informace nástroje balíčkovacího systému. Každý záznam, kterému se říká pole (field), je složen ze jména (slovo před dvojtečkou) a hodnoty (za dvojtečkou). Hodnota pole Description (Popis) se skládá ze dvou částí, krátkého a dlouhého popisu balíčku. Jména polí jsou poměrně výstižná, a proto si je nebudeme nyní podrobně vysvětlovat. Vrátíme se k nim později, až si budeme popisovat, jak se vytváří balíček. Vysvětlíme si v tuto chvíli jen to nejdůležitější, tedy závislosti mezi balíčky. Pole Depends (Závisí) obsahuje seznam balíčků (a případně jejich verzí), na kterých daný balíček závisí a nebyl by bez nich funkční. Hodnoty stejného typu (tedy seznam balíčků s jejich případným upřesněním na verzi) obsahují i pole Recommends (Doporučuje), Suggests (Navrhuje),Enhances (Rozšiřuje), Pre-Depends (Před-Závisí) a Conflicts (Je v rozporu). Tato pole opět definují závislosti mezi balíčky, avšak mají pochopitelně jiný význam, který je buď intuitivně zřejmý z jejich názvu, nebo ho můžeme najít v dokumentu Debian Policy Manual.
Nástroj střední úrovně
Pomocí příkazu dpkg můžeme provádět základní operace nad balíčkovacím systémem, tedy zejména instalovat a odstraňovat balíčky. dpkg také kontroluje závislosti a např. odmítne instalaci balíčku, pokud ke svému běhu potřebuje jiný balíček, který nemáme nainstalován. Jednou z hlavních operací je tedy instalace balíčku:
# dpkg -i geg_1.0.2-4_i386.deb
Selecting previously deselected package geg.
(Reading database ... 120877 files and directories currently installed.)
Unpacking geg (from geg_1.0.2-4_i386.deb) ...
Setting up geg (1.0.2-4) ...
#
Podobně probíhá i odinstalování balíčku:
# dpkg -r geg
(Reading database ... 120887 files and directories currently installed.)
Removing geg ...
#
dpkg nám také umožňuje klást dotazy na informace o stavu balíčku v systému. Chceme-li se tedy dozvědět informace o balíčku gettext, můžeme spustit příkaz dpkg -l gettext. Tento přepínač podporuje žolíky (wildcards), takže se můžeme také zeptat např. takto:
$ dpkg -l 'gettext*' Požadované=Neznámé/Instalovat/Odinstalovat/Odstranit/Nechat | Stav=Ne/Instalován/Konfigurační | soubory/Rozbalen/Nezkonfigurován/Nekompletní | instalace |/ Chyba?=(nic)/Nechat/Nutná přeinstalace/X=oba problémy | (Stav,Chyba: velké písmeno=chyba) ||/ Název Verze Popis +++-==============-==============-========================= ii gettext 0.10.40-8 GNU Internationalization utilities ii gettext-base 0.10.40-8 GNU Internationalization utilities for the b ii gettext-doc 0.10.40-8 Documentation for GNU gettext. ii gettext-el 0.10.40-8 Emacs po-mode for editing .po files. $
Dalším často používaným přepínačem je -L
. S jeho pomocí zjistíme, které soubory nainstalovaný balíček obsahuje:
$ dpkg -L gftp-text /. /usr /usr/bin /usr/bin/gftp-text /usr/share /usr/share/man /usr/share/man/man1 /usr/share/doc /usr/share/doc/gftp-text /usr/share/doc/gftp-text/copyright /usr/share/doc/gftp-text/TODO /usr/share/doc/gftp-text/changelog.gz /usr/share/doc/gftp-text/README.gz /usr/share/doc/gftp-text/changelog.Debian.gz /usr/share/man/man1/gftp-text.1.gz $
Posledním přepínačem, který si ukážeme, je -S. Chceme-li zjistit, do kterého balíčku patří soubor /usr/bin/giftrans, spustíme příkaz (přepínač opět podporuje žolíky, a je tedy možné klást i složitější dotazy):
$ dpkg -S /usr/bin/giftrans giftrans: /usr/bin/giftrans $
Program dpkg má sice mnohem více přepínačů a možností, aby však tento článek nevypadal jako dokumentace k dpkg, odkazuji čtenáře na manuálovou stránku tohoto programu.
Tento článek sponzoruje soLNet, s.r.o..