Hlavní navigace

Balíčkovací systém distribuce Debian GNU/Linux: apt-file

22. 9. 2003
Doba čtení: 3 minuty

Sdílet

V minulém dílu jsme si mj. pověděli, jak se orientovat v nepřeberném množství balíčků pomocí programu "apt-cache". V osmé části seriálu o balíčkovacím systému se dozvíme, jak klást dotazy do databáze balíčků za použití nástroje "ara". Povíme si také něco o programu "apt-file".

Vyhledávací nástroj ara

Autor šikovného nástroje ara tvrdí, že dselect je noční můrou, a tak používal na vyhledávání informací o balíčcích grep nebo lessna /var/lib/dpkg­/available, což (jak jistě sami uznáte) není dvakrát pohodlné. Další možností bylo použití grep-dctrl, to ovšem také nebylo to pravé. Proto se rozhodl vytvořit nástroj jménem ara. Program je napsán v programovacím jazyce OCaml, což je objektová implementace jazyka Caml, tedy derivátu funkcionálního jazyka ML.

Nechť D je množina popisů balíčků v souboru /var/lib/dpkg­/available. Každý popis se skládá z množin uspořádaných dvojic (f, v), kde f je jméno pole (např. Description,De­pends, …) a v je jeho hodnota. D je tedy množina množin dvojic tvořící universum. Dotazy kladené programu ara vybírají podmnožiny universa D. Pomocí voleb programu pak lze zvolit, která pole z vybrané podmnožiny universa se mají zobrazit. Dotaz tvoří kombinace atomických výrazů. Atomické výrazy mají tvar pole operator1 retezec nebo pole operator2 regularni_vyraz, kde operator1 je = !=, <, <=<, > nebo >= a operator2 je =~ nebo !~. Regulární výrazy se uzavírají do lomítek. Pro podrobnější popis programu ara odkazuji čtenáře na dokumentaci k tomuto programu a uvedeme si už jen příklad:

$ ara -borders -fields Package,Size -table
 'Depends=~/cron/ & Size<30000'
+-----------+-------+
| Package   | Size  |
+-----------+-------+
| autolog   | 19628 |
| gcrontab  | 29700 |
| kde       | 7232  |
| logcheck  | 24846 |
| logrotate | 27932 |
| lsb       | 17194 |
| post-faq  | 18222 |
+-----------+-------+
$

Vyhledávací nástroj apt-file

Program apt-file je další z užitečných nástrojů pro vyhledávání balíčků. Jeho vyhledávací síla spočívá v souborech Contents, které najdeme na mirrorech archivů balíčků distribuce Debian (např. na českém mirroru se soubor Contents pro distribuci testing a architekturu i386nachází na ftp.cz.debian­.org/debian/dis­ts/testing/Con­tents-i386.gz). Syntaxe programu apt-file je následující:

apt-file [ volby ] [ akce ] [ vzor ]

Jako akci můžeme použít update, search, list nebo

purge. Akce update provede synchronizaci souboru Contents s jeho lokální kopií v keši (tou je implicitně adresář /var/cache/apt). Přesné umístění souboru Contents na mirroru je určeno záznamy v souboru sources.list (implicitně /etc/apt/sources­.list) a konfigurací v souboru

/etc/apt/apt-file.conf. Pro oficiální archivy balíčků distribuce Debian není nutné konfiguraci měnit. Stačí apt-file nainstalovat a hned ho můžete začít používat. Akce search vypíše seznam balíčků, které obsahují soubor vzor. Můžete tak rychle zjistit, který balíček obsahujehledaný soubor, aniž byste museli použít WWW rozhraní na www.debian.or­g/distrib/pac­kages. Příkaz apt-file search je podobný příkazu dpkg -S, ovšem s tím rozdílem, že prohledává i balíčky, které nejsou nainstalovány:
$ apt-file search Cdk.pm
libcdk-perl: usr/lib/perl5/Cdk.pm
libcdk-perl: usr/lib/perl5/Cdk.pm
$

Akce list vypíše obsah balíčku vzor. Zde můžeme opět hledat stejnou analogii jako v předchozím případě. Příkaz apt-file list je podobný příkazu dpkg -L, ovšem s tím rozdílem, že prohledává i balíčky, které nejsou nainstalovány:

ict ve školství 24

$ apt-file list libcdk4
libcdk4: usr/lib/libcdk.so.4
libcdk4: usr/lib/libcdk.so.4
libcdk4: usr/lib/libcdk.so.4.0.9
libcdk4: usr/lib/libcdk.so.4.0.9
libcdk4: usr/share/doc/libcdk4/NOTES
libcdk4: usr/share/doc/libcdk4/NOTES
libcdk4: usr/share/doc/libcdk4/README.gz
libcdk4: usr/share/doc/libcdk4/README.gz
libcdk4: usr/share/doc/libcdk4/TODO
libcdk4: usr/share/doc/libcdk4/TODO
libcdk4: usr/share/doc/libcdk4/changelog.Debian.gz
libcdk4: usr/share/doc/libcdk4/changelog.Debian.gz
libcdk4: usr/share/doc/libcdk4/changelog.gz
libcdk4: usr/share/doc/libcdk4/changelog.gz
libcdk4: usr/share/doc/libcdk4/copyright
libcdk4: usr/share/doc/libcdk4/copyright
$

Poslední akcí programu apt-file je purge. Ta se postará o smazání všech souborů Contents z keše. A to už je poslední věc, kterou jsme se v tomto článku o programu apt-file dozvěděli. Více informací je možno nalézt jako obvykle v dokumentaci nebo ve zdrojovém kódu programu, který je umístěn přímo v souboru /usr/bin/apt-file, neboťapt-file je naprogramován v jazyce Perl.

Tento článek sponzoruje soLNet, s.r.o.