Hlavní navigace

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

30. 6. 2003
Doba čtení: 5 minut

Sdílet

Dnes se podíváme na software, který se bezesporu stal jedním ze symbolů Debianu. Teprve jeho možnosti dávají balíčkovacímu systému této distribuce tu pravou sílu. Bez jeho pomoci si nedokáže práci se systémem představit snad žádný z administrátorů Debianu. Samozřejmě se jedná o mocný "apt".

Proč nám nestačí dpkg

Pomocí dpkg můžeme s balíčky dělat téměř vše, co nás zprvu napadne. Dokážeme instalovat a deinstalovat software, propracovaný systém závislostí nás kontroluje, zda se např. nesnažíme odinstalovat balíček využívaný jinými balíčky, které jsme si nainstalovali, můžeme zjistit, ke kterému balíčku daný soubor patří atd. Má-li však být balíčkovací systém naším pomocníkem při správě softwarového vybavení našeho počítače, můžeme od něj oprávněně očekávat mnohem více. Od nástroje dpkg je velice milé, že nás upozorní, že balíček, který jsme si někde obstarali, není možné nainstalovat, protože ke svému běhu potřebuje ještě jiný balíček. Kde však máme tento balíček najít? Na to je odpověď poměrně jednoduchá. Jedním z hlavních úkolů jakékoli distribuce je poskytnout uživateli software, který pak můžeme pomocí nástrojů balíčkovacího systému instalovat. Takže naftp.debian.org najdete zcela jistě velké množství balíčků (seznam zrcadel je dostupný na www.debian.or­g/mirror/list). Avšak hledat nějaký balíček přímo na FTP serveru není zrovna uživatelsky příjemné. Naštěstí je na www.debian.or­g/distrib/pac­kages k dispozici WWW rozhraní, s jehož pomocí můžete najít balíček poněkud pohodlněji. Otázkou však zůstává, proč balíček někde hledat, když informace o tom, kde se balíček nachází, může být (a je) přímo v balíčkovacím systému. Odpověď je opět velice jednoduchá: nikde nic nehledejte a použijte apt. :-)

Co je tedy vlastně apt

V minulém dílu jsem záměrně použil termín „nástroje apt“, tedy tvar v množném čísle. Pod termínem apt, což je zkratka z anglickéhoAd­vanced Package Tool, se totiž skrývá hned několik nástrojů pro manipulaci s balíčkovacím systémem. Nejdůležitějším příkazem je bezpochyby apt-get, ale výbornými pomocníky jsou též např. programy apt-cache, apt-cdrom, apt-file, apt-zip atd. Nástroje apt nepracují přímo se soubory .deb (a ani jejich formátu nerozumí), ale pracují s informacemi dostupnými z balíčkovacího systému a na práci se soubory .deb používají dpkg.

Používáme apt-get

Jelikož je apt-get jednoznačně nejdůležitějším nástrojem při práci s balíčkovacím systémem Debianu, probereme nejdříve právě jeho možnosti. Z uživatelského hlediska je apt-get vlastně takovou nadstavbou nad dpkg, neboť nám umožňuje také instalovat a deinstalovat balíčky. Nemusíme se však starat o dopravení balíčku na náš počítač (např. z nějakého FTP serveru, instalačního CD, popř. jiného média) a dokonce nás ani příliš nezajímají závislosti mezi balíčky, neboť ty apt-get dokáže vyřešit sám. Nejjednoduší bude si vše ukázat na jednoduchém příkladu. Předpokládejme tedy, že chceme nainstalovat balíček console-log:

# apt-get install console-log
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  run
The following NEW packages will be installed:
  console-log run
0 packages upgraded, 2 newly installed, 0 to remove and 0
not upgraded.
Need to get 19.1kB of archives. After unpacking 188kB will be used.
Do you want to continue? [Y/n]

Po zadání příkazu pro instalaci balíčku (za povšimnutí stojí fakt, že jsme opravdu zadali pouze jméno balíčku, nikoli celé jméno souboru .deb) nás apt-get upozorní, že software potřebuje ke své práci ještě balíček run. Dále se dozvíme některé další detaily o instalaci a apt-get se zeptá, zda s instalací souhlasíme. Po potvrzení našeho rozhodnutí pokračuje instalace dále:

Do you want to continue? [Y/n]
Get:1 ftp://ftp.de.debian.org stable/main run 0.9.2-8 [14.1kB]
Get:2 ftp://ftp.de.debian.org stable/main console-log 0.6 [5070B]
Fetched 19.1kB in 4s (4119B/s)
Selecting previously deselected package run.
(Reading database ... 114467 files and directories currently
  installed.)
Unpacking run (from .../archives/run_0.9.2-8_i386.deb) ...
Selecting previously deselected package console-log.
Unpacking console-log (from .../console-log_0.6_all.deb) ...
Setting up run (0.9.2-8) ...

Setting up console-log (0.6) ...
Starting console-log: /var/log/exim/mainlog. /var/log/syslog.

#

Balíčky se stáhnou ze zdrojů nastavených v konfiguračním souboru a po jejich stažení je instalace dokončena. Stejným způsobem se apt-get chová při deinstalaci:

# apt-get remove run
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
  console-log run
0 packages upgraded, 0 newly installed, 2 to remove and 0
  not upgraded.
Need to get 0B of archives. After unpacking 188kB will be freed.
Do you want to continue? [Y/n]
(Reading database ... 114491 files and directories currently
  installed.)
Removing console-log ...
Stopping console-log: /var/log/exim/mainlog. /var/log/syslog.
Removing run ...
#

Příkazu apt-get můžeme samozřejmě zadat více balíčků najednou, takže je možné instalovat či deinstalovat více balíčků současně. Navíc akce

install a remove podporují suffixy -, resp. +, které modifikují význam akce. Pokud při akci install napíšeme za jméno balíčku -, balíček se odinstaluje. Analogicky obráceně se chová použití + při akci remove. Můžeme tedy instalovat a současně deinstalovat balíčky v rámci jednoho volání programu

root_podpora

apt-get:
# apt-get remove console-tools cook+
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
  console-tools
The following NEW packages will be installed:
  cook
0 packages upgraded, 1 newly installed, 1 to remove and 0
  not upgraded.
Need to get 373kB of archives. After unpacking 111kB will be used.
Do you want to continue? [Y/n]

Mezi další často používané akce patří upgrade, dist-upgrade a update. Příkaz apt-get upgrade provede upgrade všech balíčků v systému na nejnovější verzi dostupnou ze zdrojů, které jsou uloženy v konfiguračním souboru. Akce dist-upgrade se chová podobně, ale navíc se snaží inteligentně vyřešit změny v závislostech mezi balíčky (např. závisí-li balíček v nové verzi na nějakém dalším balíčku, navrhne vyřešení problému instalací daného balíčku). Pomocí dist-upgrade můžete pohodlně přejít z jedné verze distribuce na druhou za běhu systému. Velice důležitou akcí jeupdate. Tato akce provede aktualizaci informací o balíčcích ze zdrojů uvedených v konfiguračním souboru. Všechny ostatní akce už pracují s lokální kopií těchto informací na vašem počítači. Pokud tedy dojde k nějakým změnám v balíčcích v distribuci (např. bezpečnostní aktualizace), upgrade nic neprovede, dokud nespustíme apt-get update. Jak se apt-get konfiguruje a jak funguje, si podrobněji ukážeme příště.

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

Byl pro vás článek přínosný?