Hlavní navigace

Balíčkovací systém distribuce Debian GNU/Linux, část druhá

12. 6. 2003
Doba čtení: 4 minuty

Sdílet

V minulém dílu jsme se mj. dozvěděli, jak vypadá balíček Debianu uvnitř. Ukázali jsme si, jak lze s balíčky pracovat pomocí příkazů "ar" a "tar". S balíčky se ovšem pomocí těchto programů běžně neoperuje. Proto se dnes, kromě dalšího průzkumu nitra balíčkovacího systému, podíváme na základní operace pomocí nástrojů "dpkg-deb" a "dpkg".

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),En­hances (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):

ict ve školství 24

$ 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..