<!doctype debiandoc system>
<debiandoc>

<book>

<title>APT HOWTO</title>

<author>
<name>Gustavo Noronha Silva</name> <email>kov@debian.org</email>
</author>

<translator>
<name>Přeložil Aleš Nosek</name> <email>noseka1@centrum.cz</email>
</translator>

<version>1.8.11 - srpen 2005</version>

<abstract>
Tento dokument uživatele podrobně seznamuje s činností nástroje pro správu
balíčků distribuce Debian, APT. Jeho cílem je usnadnit život novým uživatelům
Debianu a pomoci těm, kteří si chtějí prohloubit znalosti administrace tohoto
systému. Dokument byl napsán pro projekt Debian pro zlepšení podpory dostupné
uživatelům této distribuce.
</abstract>

<copyright>
<copyrightsummary>
Copyright &copy; 2001, 2002, 2003, 2004 Gustavo Noronha Silva
</copyrightsummary>
<p>
Tento manuál je svobodným software; můžete jej redistribuovat a/nebo upravovat, 
pokud dodržíte podmínky uvedené v GNU General Public Licence vydané Free 
Software Foundation; buď ve verzi 2 nebo (dle vašeho výběru) jakékoliv pozdější 
verzi.
</p>

<p>
Manuál je šířen v naději, že bude užitečný, ovšem na jeho použití se 
neposkytují žádné záruky; dokonce ani předpokládané záruky obchodovatelnosti 
nebo vhodnosti pro konkrétní účel. Viz GNU General Public License.
</p>

<p>
Kopie GNU General Public License je dostupná jako 
/usr/share/common-licenses/GPL v distribuci Debian GNU/Linuxu nebo na www na 
GNU General Public Licence. Můžete si o ni rovněž napsat na adresu Free 
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 
USA.
</p>
</copyright>

<toc>

<chapt>Úvod
<p>
Na začátku byl .tar.gz. Uživatelé museli překládat každý program, který chtěli
na svém GNU/Linux systému používat. Když byl vytvořen Debian, pokládalo se
za nezbytné, aby systém obsahoval metodu pro správu instalovaných balíčků.
Systém pro správu balíčků byl nazván <prgn>dpkg</prgn>. 
Takto slavný `package' (balíček) prvně vstoupil do GNU/Linuxu, dlouho před tím, 
než se Red Hat rozhodl vytvořit svůj vlastní `rpm' systém.
<p>
Tvůrci GNU/Linuxu museli brzy řešit nové dilema. Potřebovali rychlou, praktickou
a výkonnou metodu instalace balíčků, která by automaticky řešila závislosti
a při upgradu se postarala o konfigurační soubory. V tomto opět Debian ukázal
cestu, když vytvořil APT - Advanced Packaging Tool, který byl potom pro použití
s rpm portován na Conectivu a další distribuce.
<p>
Tento manuál neobsahuje popis apt-rpm, tj. portu APT na Conectiva Linux.
Případné doplnění je však vítáno.
<p>
Tento manuál je založen na příští verzi Debianu, <tt>Sarge</tt>.
</chapt>

<chapt id="basico">Základní nastavení

<sect id="sources.list">Soubor /etc/apt/sources.list
<p>
Pro svou činnost používá APT soubor, který je seznamem 'zdrojů', ze kterých se
balíčky získávají. Tímto souborem je <tt>/etc/apt/sources.list</tt>.
<p>
Položky v tomto souboru mají obvykle tento formát:

<p>
<example>
deb http://host/debian distribution section1 section2 section3
deb-src http://host/debian distribution section1 section2 section3
</example>

<p>
Tyto položky jsou samozřejmě pouze ukázkové a v praxi je nelze použít. První
slovo na řádku, <tt>deb</tt> nebo <tt>deb-src</tt>, označuje typ archivu: zda
obsahuje binární balíčky (<tt>deb</tt>), tj. předkompilované balíčky které
normálně používáme, nebo zdrojové balíčky (<tt>deb-src</tt>), což jsou původní
zdrojové kódy programu spolu s debianím řídícím souborem <tt>.dsc</tt>
a souborem <tt>diff.gz</tt>, který popisuje změny, které je potřeba provést
k `debianizaci` programu.
<p>
Implicitní sources.list distribuce Debian vypadá obvykle takto:
<p>
<example>
# See sources.list(5) for more information, especialy
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.
deb http://http.us.debian.org/debian stable main contrib non-free
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb http://security.debian.org stable/updates main contrib non-free

# Uncomment if you want the apt-get source function to work
#deb-src http://http.us.debian.org/debian stable main contrib non-free
#deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
</example>

<p>
Tyto řádky potřebuje základní instalace Debianu. První <tt>deb</tt> řádek ukazuje
do oficiálního archivu, druhý do non-US archivu a třetí do archivu 
bezpečnostních aktualizací Debianu.
<p>
Poslední dva řádky jsou zakomentovány (přidáním `#' na začátek) a apt-get je
tedy bude ignorovat. Jsou to <tt>deb-src</tt> řádky, tj. ukazují na zdrojové
balíčky Debianu. Odkomentujte je, pokud chcete stahovat zdrojové kódy programů
pro testování nebo rekompilaci.
<p>
Soubor <tt>/etc/apt/sources.list</tt> může obsahovat několik různých typů řádků.
APT ví, jak má pracovat s archivy typu <tt>http</tt>, <tt>ftp</tt>,
<tt>file</tt> (lokální archiv, např. adresář s připojeným souborovým systémem
ISO9660) a <tt>ssh</tt>.
<p>
Po provedení změn v souboru <tt>/etc/apt/sources.list</tt> nezapomeňtě spustit
<tt>apt-get update</tt>. APT tak z uvedených zdrojů získá seznamy balíčků.
</sect>

<sect id="dpkg-scanpackages">Lokální použití APT
<p>
Můžete mít spoustu balíčků .deb, které byste rádi nainstalovali pomocí APT,
protože automaticky vyřeší závislosti.
<p>
Vytvořte tedy adresář a do něj umístěte všechny soubory .deb, které chcete
zapsat do seznamu (indexovat).
Například:
<p>
<example>
# mkdir /root/debs
</example>
<p>
Volby nastavené v řídícím souboru balíčku můžete upravit 
přímo pro váš repozitář. Použijte k tomu soubor <tt>override</tt>. V tomto
souboru můžete definovat několik voleb, které pak překryjí ty, které jsou 
přednastavené v balíčku.
Vypadá to následovně:
<p>
<example>
package priority section
</example>
<p>
package je název balíčku, priorita je low (nízká), medium (střední) nebo
high (vysoká) a sekce je ta sekce, do níž balíček patří. Název souboru není 
podstatný, můžete ho později změnit pomocí parametru programu 
<prgn>dpkg-scanpackages</prgn>. Pokud nechcete soubor <tt>override</tt> 
vytvářet, použijte při volání programu <prgn>dpkg-scanpackages</prgn> parametru 
<file>/dev/null</file>.
<p>
v adresáři /root udělejte ještě:
<p>
<example>
# dpkg-scanpackages debs <var>soubor</var> | gzip &gt; debs/Packages.gz
</example>
<p>
Na řádku výše je <var>soubor</var> soubor <tt>override</tt>, 
příkaz vygeneruje soubor <file>Packages.gz</file>, který obsahuje různé
informace o balíčcích. Tyto informace pak využívá APT. K použití balíčků
přidejte ještě do souboru <tt>/etc/apt/sources.list</tt>:
<p>
<example>
deb file:/root debs/
</example>
<p>
Po tomto můžete používat příkazy APT jako obvykle. Můžete také vygenerovat 
repozitář se zdrojovými balíčky (sources repository). Postup je stejný, 
avšak pamatujte, že musíte mít v adresáři soubory <tt>.orig.tar.gz</tt>,
<tt>.dsc</tt> a <tt>.diff.gz</tt> a musíte <tt>Packages.gz</tt> nahradit za 
<tt>Sources.gz</tt>. Program, který použijete je také jiný: 
<prgn>dpkg-scansources</prgn>.
Příkazová řádka bude vypadat takto:
<p>
<example>
# dpkg-scansources debs | gzip &gt; debs/Sources.gz
</example>
<p>
Všimněte si, že <prgn>dpkg-scansources</prgn> nepotřebuje soubor
<tt>override</tt>. Do souboru <tt>/etc/apt/sources.list</tt> přidejte řádek:
<p>
<example>
deb-src file:/root debs/
</example>
</sect>

<sect id="netselect">Výběr nejlepších zrcadel do souboru sources.list: netselect, netselect-apt
<p>
Hlavně noví uživatelé často nevědí, jak rozhodnout, "které zrcadlo (mirror) Debianu
zahrnout do <tt>sources.list</tt>?". Existuje mnoho kritérií, podle kterých se rozhodnout.
Experti pravděpodobně používají skript, který měří dobu pingu na různá zrcadla.
Existuje však program, který nám s tímto pomůže: <strong>netselect</strong>.
<p>
Pro nainstalování netselectu napište jako obvykle:
<p>
<example>
# apt-get install netselect
</example>
<p>
Pokud spustíte netselect bez parametrů, vypíše nápovědu. Pokud ho spustíte s 
mezerami odděleným seznamem hostitelů (zrcadel), vrátí vám skóre a jednoho 
z hostitelů. Při výpočtu skóre se bere v úvahu odhadovaná doba pingu a počet 
skoků - hops (tj. počet hostitelů přes který dotaz prošel, než se dostal k cíli).
Čím nižší skóre, tím je odhadovaná rychlost stahování (downloadu) vyšší.
Netselect vrací hostitele s nejnižším skóre. Pokud chcete vidět bodování všech 
zadaných hostitelů, přidejte volbu -vv.
Příklad: <p>
<example>
# netselect ftp.debian.org http.us.debian.org ftp.at.debian.org download.unesp.br ftp.debian.org.br
  365 ftp.debian.org.br
#
</example>
<p>
Ze seznamu zrcadel, který jsme programu 'netselect' předali jako parametry, byl 
<tt>ftp.debian.org.br</tt> se skórem 365 vybrán jako nejlepší zrcadlo.
(Pozor!! Měření jsem provedl na svém počítači. Topologie sítě se v různých 
místech podstatně liší, proto tato hodnota není nezbytně správná i na jiných 
počítačích.
<p>
Nyní můžete zrcadlo, které netselect vybral jako nejrychlejší, uložit do 
souboru <tt>/etc/apt/sources.list</tt> (viz <ref id="sources.list">) a 
podívat se na tipy v <ref id="apt-get">.
<p><strong>Poznámka:</strong> seznam zrcadel můžete vždycky najít v souboru 
<url id="http://www.debian.org/mirror/mirrors_full" 
name="http://www.debian.org/mirror/mirrors_full">.
<p>
Od verze 0.3.ds1 obsahuje balíček netselect skript <strong>netselect-apt</strong>, 
který provádí celý proces výběru zrcadel automaticky.
Stačí pouze zadat strom distribuce jako parametr (implicitně stable) a 
v aktuálním adresáři se vytvoří soubor <tt>sources.list</tt> s nejlepšími main 
a non-US zrcadly. Následující příklad vytvoří sources.list stable distribuce:
<p>
<example>
# ls sources.list
ls: sources.list: File or directory not found
# netselect-apt stable
(...)
# ls -l sources.list
sources.list
#
</example>
<p>
<strong>Poznámka:</strong> soubor <tt>sources.list</tt> se vytvoří v aktuálním 
adresáři. Je ho tedy třeba přesunout do adresáře <tt>/etc/apt</tt>.
<p>
Potom se podívejte na tipy <ref id="apt-get">.
</sect>

<sect id="cdrom">Přidání CD-ROM do souboru sources.list
<p>
Pokud chcete, aby APT instaloval a aktualizoval váš systém z CD-ROM, 
zapište to do vašeho <tt>sources.list</tt>. Můžete na to použít program 
<prgn>apt-cdrom</prgn> takto:
<p>
<example>
# apt-cdrom add
</example>

<p>
s CD Debianu v mechanice. CD-ROM se připojí a pokud v ní je debianí CD, vyhledají 
se informace o balíčcích, které jsou na něm uloženy. Pokud máte CD-ROM nastavenu 
nějak neobvykle, použijte následující volby:

<p>
<example>
-h           - nápověda
-d directory - bod připojení CD-ROM
-r           - přejmenování připojeného CD-ROM
-m           - nepřipojuj
-f           - rychlý mód, nekontroluj soubory s balíčky
-a           - Thorough scan mode
</example>

<p>
Například:

<p>
<example>
# apt-cdrom -d /home/kov/mycdrom add
</example>

<p>
CD-ROM můžete také určit bez toho, abyste ji přidávali do vašeho seznamu zdrojů:

<p>
<example>
# apt-cdrom ident
</example>

<p>
Program apt-cdrom pracuje jen v případě, když je vaše CD-ROM řádně nakonfigurovaná 
v <tt>/etc/fstab</tt>.
</sect>

</chapt>

<chapt id="apt-get">Správa balíčků
<sect id="update">Aktualizace seznamu dostupných balíčků
<p>
Ke sledování instalovaných, nenainstalovaných balíčků a balíčků, které jsou 
k dispozici pro nainstalování, používá balíčkovací systém soukromou databázi.
Program <prgn>apt-get</prgn> využívá tuto databázi, aby zjistil, jak má balíčky, 
které si uživatel přeje, nainstalovat a aby zjistil, které další balíčky jsou 
potřeba, aby zvolený balíček správně pracoval.
<p>
K aktualizaci této databáze použijte použijte příkaz <prgn>apt-get update</prgn>.
Tento příkaz vyhledá seznamy balíčků v archivech uvedených v souboru 
<tt>/etc/apt/sources.list</tt>; pro více informací o tomto souboru viz 
<ref id="sources.list">.
<p>
Je dobré spouštět tento příkaz pravidelně. Vy a váš systém tak budete mít stále 
přehled o možných aktualizacích balíčků, zvláště pak o bezpečnostních 
aktualizacích.
</sect>

<sect id="install">Instalace balíčků
<p>
Konečně je tu postup, na který jste všichni čekali! Nyní máte připraven 
sources.list a aktualizovanou databázi dostupných balíčků. K nainstalování 
požadovaného balíčku stačí spustit <tt>apt-get</tt>. Např.:

<p>
<example>
# apt-get install xchat
</example>

<p>
APT najde ve svojí databázi nejnovější verzi tohoto balíčku a získá jej z 
odpovídajícího archivu, jenž je zapsán v <tt>sources.list</tt>. Pokud 
instalovaný balíček závisí na jiném, což je náš případ, apt zkontroluje 
závislosti a nainstaluje potřebné balíčky. Zde je příklad:

<p>
<example>
# apt-get install nautilus
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  bonobo libmedusa0 libnautilus0 
The following NEW packages will be installed:
  bonobo libmedusa0 libnautilus0 nautilus 
0 packages upgraded, 4 newly installed, 0 to remove and 1  not upgraded.
Need to get 8329kB of archives. After unpacking 17.2MB will be used.
Do you want to continue? [Y/n] 
</example>

<p>
Balíček <package>nautilus</package> závisí na uvedených sdílených knihovnách, 
pročež je APT z archivu stáhne také. Pokud byste na příkazové řádce <tt>apt-get</tt> 
specifikovali názvy těchto knihoven, APT by se neptal, jestli chcete pokračovat;
automaticky by předpokládal, že chcete nainstalovat všechny vybrané balíčky.
<p>
Tedy APT se ptá pouze tehdy, když potřebuje potvrdit, že může nainstalovat i balíčky, 
které jste na příkazovém řádku nespecifikovali.
<p>
Následující volby programu apt-get mohou být užitečné:

<p>
<example>
-h  Tato nápověda.
-d  Pouze stáhne - neinstaluje ani nerozbaluje archívy
-f  Zkusí pokračovat, i když selže kontrola integrity
-s  Pouze simuluje prováděné akce
-y  Na všechny otázky odpovídá Ano
-u  Zobrazí také seznam aktualizovaných balíků
</example>

<p>
Na jednom řádku lze pro instalaci vybrat více balíčků.
Soubory stažené ze sítě k pozdější instalaci se umisťují do adresáře 
<tt>/var/cache/apt/archives</tt>
<p>
Na stejném řádku lze rovněž specifikovat balíčky, které chcete odstranit.
Stačí jen přidat znak '-' hned za název balíčku. Např.:

<p>
<example>
# apt-get install nautilus gnome-panel-       
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  bonobo libmedusa0 libnautilus0 
The following packages will be REMOVED:
  gnome-applets gnome-panel gnome-panel-data gnome-session 
The following NEW packages will be installed:
  bonobo libmedusa0 libnautilus0 nautilus 
0 packages upgraded, 4 newly installed, 4 to remove and 1  not upgraded.
Need to get 8329kB of archives. After unpacking 2594kB will be used.
Do you want to continue? [Y/n] 
</example>

<p>
Více informací o odstraňování balíčků najdete v sekci <ref id="remove">.
<p>
Pokud by se vám stalo, že jste balíček nějak poškodili, nebo pokud jen chcete 
balíček přeinstalovat novější verzí, která je dostupná, můžete použít volbu 
<tt>--reinstall</tt>. Např.:

<p>
<example>
# apt-get --reinstall install gdm
Reading Package Lists... Done
Building Dependency Tree... Done
0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1  not upgraded.
Need to get 0B/182kB of archives. After unpacking 0B will be used.
Do you want to continue? [Y/n]
</example>
</sect>

<sect id="remove">Odstraňování balíčků
<p>
Pokud už balíček nechcete používat, můžete jej pomocí APT odebrat ze systému.
Stačí jen napsat: <tt>apt-get remove package</tt>.
Např.:

<p>
<example>
# apt-get remove gnome-panel
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
  gnome-applets gnome-panel gnome-panel-data gnome-session 
0 packages upgraded, 0 newly installed, 4 to remove and 1  not upgraded.
Need to get 0B of archives. After unpacking 14.6MB will be freed.
Do you want to continue? [Y/n] 
</example>

<p>
Jak je vidět, APT se také postará o odebrání balíčků, jež závisí na balíčku, 
který chcete odstranit. Neexistuje způsob jak odebrat balíček bez toho, 
aby byly odstraněny i všechny balíčky, které na něm závisí.
<p>
Spuštěním <prgn>apt-get</prgn> uvedeným způsobem odstraní balíčky, ale jejich 
konfigurační soubory, pokud nějaké mají, zůstanou nedotčeny.
Pro úplné odstranění balíčku spusťte:

<p>
<example>
# apt-get --purge remove gnome-panel
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
  gnome-applets* gnome-panel* gnome-panel-data* gnome-session* 
0 packages upgraded, 0 newly installed, 4 to remove and 1  not upgraded.
Need to get 0B of archives. After unpacking 14.6MB will be freed.
Do you want to continue? [Y/n] 
</example>

<p>
Všimněte si '*' za názvy balíčků. Značí, že spolu s balíčkem budou odstraněny i 
jeho konfigurační soubory.
<p>
Stejně jako při instalaci příkazem <tt>install</tt>, můžete s příkazem <tt>remove</tt> 
použít značky k obrácení významu pro konkrétní balíček. Pokud v případě 
odstraňování připojíte hned za název balíčku <tt>'+'</tt>, balíček se bude 
místo odstranění instalovat.

<p>
<example>
# apt-get --purge remove gnome-panel nautilus+
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  bonobo libmedusa0 libnautilus0 nautilus 
The following packages will be REMOVED:
  gnome-applets* gnome-panel* gnome-panel-data* gnome-session* 
The following NEW packages will be installed:
  bonobo libmedusa0 libnautilus0 nautilus 
0 packages upgraded, 4 newly installed, 4 to remove and 1  not upgraded.
Need to get 8329kB of archives. After unpacking 2594kB will be used.
Do you want to continue? [Y/n] 
</example>

<p>
Všimněte si, že <prgn>apt-get</prgn> vypíše balíčky, které budou instalovány 
navíc (tj. balíčky, které je potřeba nainstalovat, aby požadovaný balíček správně 
fungoval), balíčky které budou odstraněny a celkově všechny balíčky, které se 
budou instalovat (znovu včetně balíčků navíc).
</sect>

<sect id="upgrade">Upgrade balíčků
<p>
Možnost upgradu balíčků je velkým úspěchem APT. Stačí napsat jediný příkaz: 
<tt>apt-get upgrade</tt>. Tento příkaz můžete použít nejen k upgradu balíčků v 
rámci stejné distribuce, nýbrž také k upgradu na novou distribuci, ačkoliv v 
druhém případě se dává přednost příkazu <tt>apt-get dist-upgrade</tt>; více 
informací najdete v sekci <ref id="dist-upgrade">
<p>
Je užitečné spouštět tento příkaz s volbou <tt>-u</tt>. S touto volbou ukáže APT 
kompletní seznam balíčků, které se budou upgradovat. Jinak byste upgradovali 
na slepo. APT stáhne poslední verze jednotlivých balíčků a nainstaluje je ve 
správném pořadí. Před upgradovaním je důležité vždy spustit <tt>apt-get update</tt>. 
Viz sekce <ref id="update">. Zde je příklad:

<p>
<example>
# apt-get -u upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages have been kept back
  cpp gcc lilo 
The following packages will be upgraded
  adduser ae apt autoconf debhelper dpkg-dev esound esound-common ftp indent
  ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev
  libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0
  libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc 
29 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Need to get 5055B/5055kB of archives. After unpacking 1161kB will be used.
Do you want to continue? [Y/n] 
</example>

<p>
Postup je velmi jednoduchý. Všimněte si, že na několika prvních řádcích 
<tt>apt-get</tt> oznamuje, že některé balíčky byly podrženy v aktuálním stavu - 
<tt>kept back</tt>. To znamená, že jsou k dispozici nové verze balíčků, které se 
ale z nějakého důvodu nebudou instalovat. Možné důvody jsou nesplněné závislosti 
(verze balíčku, na kterém náš závisí, není dostupná ke stažení) nebo nové 
závislosti (náš balíček se od poslední verze stal závislým na dalších balíčcích).
<p>
Pro první případ neexistuje "čisté" řešení. V druhém případě stačí pro daný 
balíček spustit <tt>apt-get install</tt>, což stáhne i balíčky, na kterých ten 
náš závisí. Ještě čistějším řešením je použít <tt>dist-upgrade</tt>. Viz sekce 
<ref id="dist-upgrade">.</sect>

<sect id="dist-upgrade">Upgrade na nové vydání Debianu
<p>
APT umožňuje upgrade celého systému Debian najednou, buď přes Internet nebo z 
nového CD (koupeného nebo staženého jako ISO image).
<p>
Stejný postup se rovněž používá, když se mezi instalovanými balíčky změnily 
závislosti. S <tt>apt-get upgrade</tt> by tyto balíčky zůstali nedotčeny 
(<tt>kept back</tt>).
<p>
Dejme tomu, že používáte revizi 0 stabilní verze Debianu a koupili jste si CD 
s revizí 3. K upgradu systému z nového CD můžete použít APT takto: zavolat 
<prgn>apt-cdrom</prgn> (viz sekce <ref id="cdrom">), abyste přidali CD do vašeho 
<tt>/etc/apt/sources.list</tt> a spustit <tt>apt-get dist-upgrade</tt>.
<p>
Je důležité poznamenat, že APT vždy hledá nejnovější verze balíčků. Pokud tedy 
váš <tt>/etc/apt/sources.list</tt> obsahoval archiv, ve kterém jsou novější 
verze balíčků než na vašem CD, APT stáhne balíčky odtamtud.
<p>
V příkladu, který jsme uvedli v sekci <ref id="upgrade">, jsme viděli, že byly 
některé balíčky podrženy v aktuálním stavu - <tt>kept back</tt>. Tento problém 
nyní vyřešíme s <tt>dist-upgrade</tt>:

<p>
<example>
# apt-get -u dist-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
Calculating Upgrade... Done
The following NEW packages will be installed:
  cpp-2.95 cron exim gcc-2.95 libident libopenldap-runtime libopenldap1
  libpcre2 logrotate mailx 
The following packages have been kept back
  lilo 
The following packages will be upgraded
  adduser ae apt autoconf cpp debhelper dpkg-dev esound esound-common ftp gcc
  indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0
  libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev
  liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit
  procps psmisc 
31 packages upgraded, 10 newly installed, 0 to remove and 1 not upgraded.
Need to get 0B/7098kB of archives. After unpacking 3118kB will be used.
Do you want to continue? [Y/n]
</example>

<p>
Všimněte si, že nyní se budou balíčky upgradovat a také se budou instalovat 
nové (kvůli novým závislostem). Balíček lilo je však stále držen v aktuálním 
stavu - <tt>kept back</tt>. Problém bude asi vážnější, než jen nová závislost. 
Můžeme to zjistit spuštěním:

<p>
<example>
# apt-get -u install lilo
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2
  logrotate mailx 
The following packages will be REMOVED:
  debconf-tiny 
The following NEW packages will be installed:
  cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2
  logrotate mailx 
The following packages will be upgraded
  lilo 
1 packages upgraded, 9 newly installed, 1 to remove and 31 not upgraded.
Need to get 225kB/1179kB of archives. After unpacking 2659kB will be used.
Do you want to continue? [Y/n]
</example>

<p>
Jak je vidět, lilo je v konfliktu s balíčkem <package>debconf-tiny</package>, 
což znamená, že se nemůže nainstalovat (nebo upgradovat) aniž by byl 
debconf-tiny odebrán.
<p>
Abychom se dozvěděli, co drží nebo odstraňuje balíček napíšeme:

<p>
<example>
# apt-get -o Debug::pkgProblemResolver=yes dist-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
Calculating Upgrade... Starting
Starting 2
Investigating python1.5
Package python1.5 has broken dep on python1.5-base
  Considering python1.5-base 0 as a solution to python1.5 0
  Holding Back python1.5 rather than change python1.5-base
Investigating python1.5-dev
Package python1.5-dev has broken dep on python1.5
  Considering python1.5 0 as a solution to python1.5-dev 0
  Holding Back python1.5-dev rather than change python1.5
 Try to Re-Instate python1.5-dev
Done
Done
The following packages have been kept back
  gs python1.5-dev 
0 packages upgraded, 0 newly installed, 0 to remove and 2  not upgraded.
</example>

<p>
Tímto způsobem se dá jednoduše zjistit, že balíček python1.5-dev se nemůže 
nainstalovat kvůli nesplněné závislosti na python1.5.

</sect>

<sect id="clean">Odstřanění nepoužívaných souborů balíčků: apt-get clean and autoclean
<p>
Když instalujete balíček, APT získá potřebné soubory od hostitelů uvedených v 
/etc/apt/sources.list, uloží je v lokálním repozitáři 
(<file>/var/cache/apt/archives/</file>) a potom pokračuje s instalací, viz 
<ref id="install">.
<p>
Časem se může lokální skladiště zvětšovat a zabírat na disku hodně místa. 
APT naštěstí poskytuje nástroje pro správu lokálního repozitáře.
Medoty <prgn>apt-get</prgn>: <tt>clean</tt> and <tt>autoclean</tt>.
<p>
<prgn>apt-get clean</prgn> odstraní vše kromě souborů zámků z 
<file>/var/cache/apt/archives/</file> a
<file>/var/cache/apt/archives/partial/</file>. Takže pokud budete chtít balíček 
přeinstalovat, APT ho bude muset znovu stáhnout.
<p>
<prgn>apt-get autoclean</prgn> odstraní pouze soubory balíčků, které už se 
nedají stáhnout.
<p>
Následující příklad ukazuje, jak apt-get autoclean pracuje:

<p>
<example>
# ls /var/cache/apt/archives/logrotate* /var/cache/apt/archives/gpm*
logrotate_3.5.9-7_i386.deb
logrotate_3.5.9-8_i386.deb
gpm_1.19.6-11_i386.deb
</example>

<p>
V /var/cache/apt/archives jsou dva soubory balíčku 
<package>logrotate</package> a jeden balíčku <package>gpm</package>.

<p>
<example>
# apt-show-versions -p logrotate
logrotate/stable uptodate 3.5.9-8
# apt-show-versions -p gpm
gpm/stable upgradeable from 1.19.6-11 to 1.19.6-12
</example>

<p>
<prgn>apt-show-versions</prgn> ukazuje, že aktuální verzí balíčku 
<package>logrotate</package> je <file>logrotate_3.5.9-8_i386.deb</file>, pročež 
je soubor <file>logrotate_3.5.9-7_i386.deb</file> zbytečný. Soubor 
<file>gpm_1.19.6-11_i386.deb</file> je také zbytečný, neboť lze získat novější 
verzi tohoto balíčku.

<p>
<example>
# apt-get autoclean
Reading Package Lists... Done
Building Dependency Tree... Done
Del gpm 1.19.6-11 [145kB]
Del logrotate 3.5.9-7 [26.5kB]
</example>

<p>Posléze <tt>apt-get autoclean</tt> odstranil pouze staré soubory.
Více informací o apt-show-versions naleznete v <ref id="apt-show-versions">.
</sect>

<sect id="dselect-upgrade">Použití APT spolu s dselect
<p>
<prgn>dselect</prgn> je program, který uživatelům pomáhá s výběrem debianích 
balíčků k instalaci. Je považován za poněkud složitý a poněkud nudný, ale s trochou cviku 
si na jeho konsolové ncurses rozhraní zvyknete.
<p>
Dselect umí využít schopnosti debianích balíčků "doporučovat" a 
"navrhovat" jiné balíčky k instalaci. Program spusťte jako root příkazem 
<tt>`dselect'</tt>. Jako přístupovou metodu zvolte 'apt'. Není to nezbytně 
nutné, pokud však nepoužíváte CD-ROM a chcete balíčky stahovat z Internetu, 
je 'apt' nejlepší možnost.
<p>
Pokud se chcete s dselectem naučit dobře pracovat, přečtěte si dokumentaci uvedenou 
na stránkách Debianu
<url id="http://www.debian.org/doc/ddp" name="http://www.debian.org/doc/ddp">.
<p>
Potom, co jste si pomocí dselectu vybrali, napište:

<p>
<example>
# apt-get -u dselect-upgrade
</example>

<p>
jako v níže uvedeném příkladě:

<p>
<example>
# apt-get -u dselect-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
  lbxproxy 
The following NEW packages will be installed:
  bonobo console-tools-libs cpp-3.0 enscript expat fingerd gcc-3.0
  gcc-3.0-base icepref klogd libdigest-md5-perl libfnlib0 libft-perl
  libgc5-dev libgcc300 libhtml-clean-perl libltdl0-dev libsasl-modules
  libstdc++3.0 metamail nethack proftpd-doc psfontmgr python-newt talk tidy
  util-linux-locales vacation xbill xplanet-images 
The following packages will be upgraded
  debian-policy 
1 packages upgraded, 30 newly installed, 1 to remove and 0  not upgraded.
Need to get 7140kB of archives. After unpacking 16.3MB will be used.
Do you want to continue? [Y/n]
</example>

<p>
Porovnejme výpis s tím, který se zobrazí spustěním apt-get dist-upgrade na 
stejném systému:

<p>
<example>
# apt-get -u dist-upgrade   
Reading Package Lists... Done
Building Dependency Tree... Done
Calculating Upgrade... Done
The following packages will be upgraded
  debian-policy 
1 packages upgraded, 0 newly installed, 0 to remove and 0  not upgraded.
Need to get 421kB of archives. After unpacking 25.6kB will be freed.
Do you want to continue? [Y/n]
</example>

<p>
Všimněte si, že se spousta výše uvedených balíčků instaluje, protože je jiné 
balíčky "doporučily" nebo "navrhly". Ostatní se instalují nebo odstraňují 
(viz např. lbxproxy) podle výběru, který jsme procházením seznamu balíčků 
pomocí dselectu vytvořili. Dselect je při použití v kombinaci s APT velice 
silným nástrojem.
</sect>

<sect id="default-version">Jak udržovat smíšený systém
<p>
Uživatelé občas používají jednu verzi Debianu jako hlavní distribuci 
systému a jeden či více balíčků z jiné větve.
<p>
Nastavení vaší hlavní verze Debianu proveďte v souboru 
<file>/etc/apt/apt.conf</file> (pokud tento neexistuje, vytvořte jej), 
kam napište následující řádku:
<p>
<example>
APT::Default-Release "<var>version</var>";
</example>
<p>
<var>version</var> je verze Debianu, kterou chcete používat jako hlavní 
distribuci. Vybrat si můžete z možností <tt>stable</tt>, <tt>testing</tt> a 
<tt>unstable</tt>. 
K instalovaní balíčků z jiné verze použijte APT takto:

<p>
<example>
# apt-get -t <var>distribution</var> install <var>package</var>
</example>
<p>

Aby to ale fungovalo, musíte mít pro distribuci, ze které balíček chcete, záznam 
v souboru <file>/etc/apt/sources.list</file>. Balíček se pak musí v daném zdroji 
vyskytovat.
<p>
Můžete také požadovat určitou konkrétní verzi balíčku, pomocí tohoto zápisu:

<example>
# apt-get install <var>package</var>=<var>version</var>
</example>

Např. následující řádek nainstaluje verzi <tt>2.2.4-1</tt> balíčku 
<package>nautilus</package>:

<example>
# apt-get install nautilus=2.2.4-1
</example>

<p>
<em>DŮLEŽITÉ</em>: `unstable' verze Debianu je verze, do které se nejnovější 
verze balíčků vkládají nejdřív. Distribuce tak zažívá všechny změny, jimiž balíčky 
procházejí. Změny jsou jak malé tak i velké, které ovlivňují spousty balíčků nebo 
dokonce celý systém. Z toho důvodu by tuto verzi distribuce <em>neměli</em> 
používat nezkušení uživatelé nebo ti, kteří chtějí mít zajištěnu stabilitu.
<p>
`testing' distribuce není nutně lepší než `unstable', protože se v ní 
bezpečnostní aktualizace neprovádějí rychle. Pro servery a jiné produkční 
systémy by se měla vždy používat verze stabilní - `stable'.
</sect>

<sect id="apt-show-versions">Jak upgradovat balíčky z konkrétních verzí Debianu
<p>
<prgn>apt-show-versions</prgn> poskytuje uživatelům smíšených distribucí 
bezpečnou cestu, jak upgradovat systém bez toho, aby dostali z méně stabilní 
distribuce více, než chtěli. Po nainstalování balíčku 
<package>apt-show-versions</package> lze například upgradovat pouze nestabilní 
balíčky spuštěním:
<p>
<example>
# apt-get install `apt-show-versions -u -b | grep unstable | cut -d ' ' -f 1`
</example>
</sect>

<sect id="pin">Jak udržet nainstalované určité verze balíčků
<p>
Možná, že jste potřebovali změnit něco v balíčku a nemáte čas, nebo nechcete, 
přenášet tyto změny do nové verze programu. Nebo jste například upgradovali 
svoji distribuci Debianu na verzi 3.0, ale chcete i nadále používat určité 
balíčky ve verzi z Debianu 2.2. Můžete označit (přiřadit "pin" - přišpendlit) verzi,
kterou jste nainstalovali, takže se nebude upgradovat.
<p>
Použití tohoto prostředku je jednoduché, stačí jen editovat soubor 
<tt>/etc/apt/preferences</tt>.
<p>
Formát souboru je prostý:
<p>
<example>
Package: &lt;package&gt;
Pin: &lt;pin definition&gt;
Pin-Priority: &lt;pin's priority&gt;
</example>
<p>
Každá položka musí být od ostatních oddělena odřádkováním.
Například pro podržení balíčku <package>sylpheed</package>, který jsem upravil 
aby používal "reply-to-list", ve verzi 0.4.99, jsem přidal záznam:
<p>
<example>
Package: sylpheed
Pin: version 0.4.99*
</example>
<p>
Všimněte si, že jsem použil <tt>*</tt> (hvězdička). Vznikla tak maska, která 
říká, že přiřazený "pin" platí pro všechny verze začínající na 0.4.99.
Učinil jsem tak proto, že Debian v označení verzí svých balíčků užívá tzv. číslo 
revize a já se nechtěl vyhnout instalaci možných revizí.
Takže například verze 0.4.99-1 a 0.4.99-10 se nainstalují hned, jak budou k 
dispozici. Uvědomte si, že pokud jste balíček upravili, není tento způsob vhodný.
<p>
'Pin-Priority' pomáhá určit, jestli bude balíček vyhovující řádkům "Package:" 
a "Pin:" instalován. Čím vyšší priorita, tím vyšší pravděpodobnost, že se vyhovující 
balíček nainstaluje. Zevrubný rozbor priorit najdete v 
<manref name="apt_preferences" section="7">. Uvedu pár příkladů, které 
ilustrují základní myšlenku. V následujícím popíšu, jaký efekt by měla změna hodnoty 
priority v předcházejícím příkladě se sylpheed.
</p>
<p>
<taglist>
<tag>1001</tag>
<item>
APT verzi 0.4.99 balíčku sylpheed nikdy nenahradí. Pokud je dostupná, 
APT nainstaluje verzi 0.4.99 dokonce i když tím nahradí již nainstalovaný balíček s vyšší verzí. 
Pouze balíčky s prioritou vyšší než 1000, můžou downgradeovat tento balíček.
</item>
<tag>1000</tag>
<item>
Stejný efekt jako priorita 1001, s výjimkou toho, že APT zamítne downgrade nainstalované 
verze na verzi 0.4.99
</item>
<tag>990</tag>
<item>
Verze 0.4.99 bude nahrazena pouze vyšší verzí z vydání označeného pomocí 
proměnné "APT::Default-Release" jako preferované. (viz 
<ref id="default-version">, nahoře).
</item>
<tag>500</tag>
<item>
Upřednostní jakoukoliv vyšší verzi sylpheed než je 0.4.99, dostupnou v jakémkoliv 
vydání. Verze 0.4.99 však bude mít stále přednost před nižšími verzemi.
</item>
<tag>100</tag>
<item>
Jakákoliv vyšší verze balíčku sylpheed z jakéhokoliv vydání, jakož i jakákoliv 
nainstalovaná vyšší verze budou mít přednost před verzí 0.4.99. Tj. verze 0.4.99 
se bude instalovat, pouze pokud ještě žádná verze nebyla instalována. Tuto 
prioritu mají nastavenu nainstalované balíčky.
</item>
<tag>-1</tag>
<item>
Dovoleny jsou i záporné priority. Tyto zcela zamezují instalaci verze 0.4.99.
</item>
</taglist>
<p>
Pin může být specifikován u <tt>verze</tt> balíčku, <tt>release</tt> balíčku, 
nebo <tt>původce</tt>.
<p>
Při použití pinu na <tt>verzi</tt> balíčku, viz výše, lze zadat přesné číslo verze 
nebo použít masku k označení několika verzí najednou.
<!-- what's available?  standard shell globs?  ?*[]   or more? -->
<p>
Volba <tt>release</tt> závisí na souboru Release v repozitáři APT nebo na CD. 
Pokud repozitář tento soubor neobsahuje, nedá se tato volba použít. Můžete si 
prohlédnout Release soubory, které máte v adresáři <tt>/var/lib/apt/lists/</tt>. 
Parametry releasu jsou:
<tt>a</tt> (archiv), <tt>c</tt> (komponenta), <tt>v</tt> (verze),
<tt>o</tt> (zdroj) a <tt>l</tt> (label - jmenovka).
<p>
Příklad:
<p>
<example>
Package: *
Pin: release v=2.2*,a=stable,c=main,o=Debian,l=Debian
Pin-Priority: 1001
</example>
<p>
V tomto příkladu jsme zvolili verzi Debianu 2.2* (což může být 2.2r2,
2.2r3 -- spolu s tečkovanými vydáními, které typicky obsahují bezpečnostní 
záplaty a další velmi důležité aktualizace), repozitář <tt>stable</tt>, 
sekci <tt>main</tt> (oproti <tt>contrib</tt> nebo <tt>non-free</tt>) a původce i 
jmenovku Debian. Zdroj (o=) udává tvůrce Release souboru, jmenovka (l=) udává 
název distribuce: Debian pro vlastní Debian a Progeny pro Progeny například. Zde 
je ukázka Release souboru:
<p>
<example>
$ cat /var/lib/apt/lists/ftp.debian.org.br_debian_dists_potato_main_binary-i386_Release
Archive: stable
Version: 2.2r3
Component: main
Origin: Debian
Label: Debian
Architecture: i386
</example>
</sect>
</chapt>

<chapt id="helpers">Velmi užiteční pomocníci
<sect id="equivs">Jak instalovat lokálně kompilované balíčky: equivs
<p>
Někdy chce člověk používat určitou verzi programu, která je však dostupná pouze 
v podobě zdrojového kódu. Debianí balíček není k dispozici. S balíčkovacím 
systémem pak můžou být problémy. Představte si, že chcete kompilovat novou verzi 
Vašeho emailového serveru. Všechno je vpořádku až na to, že spousta balíčků v 
Debianu závisí na MTA (Mail Transport Agent). Protože jste nainstaloval něco, 
co jste si zkompiloval sám, balíčkovací systém o tom neví.
<p>
To je místo, kde <package>equivs</package> přichází na scénu. Abyste ho mohl 
použít, nainstalujte stejnojmenný balíček. Equivs dělá to, že vytvoží prázdný 
balíček, který slouží ke splnění závislostí. Balíčkovací systém se pak domnívá, 
že jsou závislosti splněny.
<p>
Než začneme, je dobré připomenout, že jsou bezpečnější cesty jak nainstalovat 
program, který už má v Debianu balíček zkompilovaný s jinými nastaveními, a že by 
člověk neměl používat equivs k nahrazování závislostí, pokud neví, co přesně dělá. 
Více informací je v sekci <ref id="sourcehandling">.
<p>
Pokračujme s MTA příkladem. Právě jste nainstaloval svůj nově zkompilovaný 
<prgn>postfix</prgn> a pokračujete s instalací <package>mutt</package>. Náhle 
zjistíte, že balíček <package>mutt</package> chce nainstalovat jiný MTA. Ale vy 
už máte svůj.
<p>
Přesuňte se do nějakého adresáře (<file>/tmp</file> například) a spusťte:

<p>
<example>
# equivs-control <var>název</var>
</example>

<p>
<var>název</var> nahraďte jménem řídícího souboru, který chcete 
vytvořit. Vytvořený soubor bude vypadat následovně:

<p>
<example>
Section: misc
Priority: optional
Standards-Version: 3.0.1

Package: &lt;vlože jméno balíčku; implicitně je equivs-dummy&gt;
Version: &lt;vložte číslo verze; implicitně je 1.0&gt;
Maintainer: &lt;vaše jméno a emailová adresa; implicitně je uživatelské jméno&gt;
Pre-Depends: &lt;balíčky&gt;
Depends: &lt;balíčky&gt;
Recommends: &lt;balíčky&gt;
Suggests: &lt;balíček&gt;
Provides: &lt;(virtuální)balíček&gt;
Architecture: all
Copyright: &lt;soubor s copyrightem; implicitně je GPL2&gt;
Changelog: &lt;soubor changelog; implicitně je všeobecný changelog&gt;
Readme: &lt;README.Debian soubor; implicitní je všeobecný&gt;
Extra-Files: &lt;dodatečné soubory pro doc adresář, oddělené čářkou&gt;
Description: &lt;krátký popis; implicitně jsou to nějaká moudrá slova&gt;
 dlouhý popis a informace
 .
 druhý odstavec
</example>

<p>
Toto potřebujeme jenom upravit, aby to dělalo, co chceme. Podívejte se na formát 
polí a jejich popis, není tu nutné nic vysvětlovat, udělejme, co je potřeba:

<p>
<example>
Section: misc
Priority: optional
Standards-Version: 3.0.1

Package: mta-local
Provides: mail-transport-agent
</example>

<p>
Ano, to je vše. <package>mutt</package> závisí na 
<package>mail-transport-agent</package>, což je virtuální balíček poskytovaný 
všemi MTA. Mohl jsem ten balíček jednoduše nazvat 
<package>mail-transport-agent</package>, ale upřednostnil jsem schéma 
s virtuálními balíčky použitím Provides.
<p>
Nyní pouze potřebujeme balíček vytvořit:

<p>
<example>
# equivs-build <var>name</var>
dh_testdir
touch build-stamp
dh_testdir
dh_testroot
dh_clean -k
# Add here commands to install the package into debian/tmp.
touch install-stamp
dh_testdir
dh_testroot
dh_installdocs
dh_installchangelogs
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb: building package `<var>name</var>' in `../<var>name</var>_1.0_all.deb'.

The package has been created.
Attention, the package has been created in the current directory,
</example>

<p>
A nainstalovat výsledný <tt>.deb</tt>.
<p>
Jak je vidět, je spousta možností, jak využít <prgn>equivs</prgn>. Například 
byste si mohl vytvořit balíček <tt>my-favorites</tt>, 
který by závisel na programech, které obvykle instalujete. Jen popusťte uzdu 
fantazie, ale buďte opatrní.
<p>
Nutno poznamenat, že příklady řídících souborů jsou v 
<file>/usr/share/doc/equivs/examples</file>. Vyzkoušejte je!
</sect>

<sect id="localepurge">Odstranění nepoužívaných lokalizačních souborů: localepurge
<p>
Spousta uživatelů Debianu používá jen jednu locale. Brazilský uživatel Debianu 
například obvykle celou dobu používá <tt>pt_BR</tt> locale a o <tt>es</tt> locale 
se nestará.
<p>
<package>localepurge</package> je pro tyto uživatele velmi užitečný nástroj.
Můžete uvolnit spoustu místa tím, že budete mít pouze locales, které opravdu 
používáte. Udělejte jen <tt>apt-get install localepurge</tt>.
<p>
Konfigurace je velmi jednoduchá, debconf provede uživatele konfigurací krok za 
krokem. Přece jenom buďte opatrní při odpovědi na první otázku. Špatná odpověď 
může způsobit odstranění všech souborů locale, dokonce i těch které používáte. 
Jediná možnost, jak tyto soubory dostat zpátky, je přeinstalování všech balíčků, 
které je poskytují.
</sect>

<sect id="helper-show-versions">Jak poznat, které balíčky lze upgradovat
<p>
<prgn>apt-show-versions</prgn> je program, který ukáže, které balíčky v systému 
lze aktualizovat (updatovat) a některé další užitečné informace.
Volba <tt>-u</tt> zobrazí seznam balíčků, které je možno upgradovat:

<p>
<example>
$ apt-show-versions -u    
libeel0/unstable upgradeable from 1.0.2-5 to 1.0.2-7
libeel-data/unstable upgradeable from 1.0.2-5 to 1.0.2-7
</example>
</sect>

</chapt>

<chapt id="search">Získávání informací o balíčcích
<p>
Pro systém APT existují některé front-endové programy, které značně zjednodušují 
zjišťování seznamu balíčků dostupných pro instalaci nebo už nainstalovaných, stejně 
jako zjištění sekce, do které balíček patří, jakou má prioritu, jaký je jeho 
popis apod.
<p>
Ale... naším cílem je naučit se používat čisté APT. Tak tedy, jak můžete zjistit 
jméno balíčku, který chcete instalovat?
<p>
Pro řešení této úlohy máme spoustu prostředků. Začneme s <tt>apt-cache</tt>. Tento 
program využívá systém APT pro údržbu svojí databáze. Letmo se podíváme na 
některé možnosti jeho praktického využití.

<sect id="cache">Zjišťování názvů balíčků
<p>
Předpokládejme například, že si chcete připomenout staré dobré časy Atari 2600. 
Chcete použít APT k nainstalování emulátoru Atari a potom ke stažení nějakých 
her. Můžete udělat:

<p>
<example>
# apt-cache search atari
atari-fdisk-cross - Partition editor for Atari (running on non-Atari)
circuslinux - The clowns are trying to pop balloons to score points!
madbomber - A Kaboom! clone
tcs - Character set translator.
atari800 - Atari emulator for svgalib/X/curses
stella - Atari 2600 Emulator for X windows
xmess-x - X binaries for Multi-Emulator Super System
</example>

<p>
Našli jsme několik balíčků, jež se vztahují k tomu, co jsme hledali, spolu s 
krátkým popisem. K získání více informací o konkrétním balíčku, mohu použít:

<p>
<example>
# apt-cache show stella  
Package: stella
Priority: extra
Section: non-free/otherosfs
Installed-Size: 830
Maintainer: Tom Lear &lt;tom@trap.mtview.ca.us&gt;
Architecture: i386
Version: 1.1-2
Depends: libc6 (&gt;= 2.1), libstdc++2.10, xlib6g (&gt;= 3.3.5-1)
Filename: dists/potato/non-free/binary-i386/otherosfs/stella_1.1-2.deb
Size: 483430
MD5sum: 11b3e86a41a60fa1c4b334dd96c1d4b5
Description: Atari 2600 Emulator for X windows
 Stella is a portable emulator of the old Atari 2600 video-game console
 written in C++.  You can play most Atari 2600 games with it.  The latest
 news, code and binaries for Stella can be found at:
 http://www4.ncsu.edu/~bwmott/2600
</example>

<p>
Výstupem je spousta detailních informací o balíčku, který chcete (nebo nechcete) 
instalovat, spolu s plným popisem balíčku. Pokud je už balíček v systému 
nainstalován a existuje novější verze, uvidíte informace o obou verzích. 
Například:

<p>
<example>
# apt-cache show lilo
Package: lilo
Priority: important
Section: base
Installed-Size: 271
Maintainer: Russell Coker &lt;russell@coker.com.au&gt;
Architecture: i386
Version: 1:21.7-3
Depends: libc6 (&gt;= 2.2.1-2), debconf (&gt;=0.2.26), logrotate
Suggests: lilo-doc
Conflicts: manpages (&lt;&lt;1.29-3)
Filename: pool/main/l/lilo/lilo_21.7-3_i386.deb
Size: 143052
MD5sum: 63fe29b5317fe34ed8ec3ae955f8270e
Description: LInux LOader - The Classic OS loader can load Linux and others
 This Package contains lilo (the installer) and boot-record-images to
 install Linux, OS/2, DOS and generic Boot Sectors of other OSes.
 .
 You can use Lilo to manage your Master Boot Record (with a simple text screen)
 or call Lilo from other Boot-Loaders to jump-start the Linux kernel.

Package: lilo
Status: install ok installed
Priority: important
Section: base
Installed-Size: 190
Maintainer: Vincent Renardias &lt;vincent@debian.org&gt;
Version: 1:21.4.3-2
Depends: libc6 (&gt;= 2.1.2)
Recommends: mbr
Suggests: lilo-doc
Description: LInux LOader - The Classic OS loader can load Linux and others
 This Package contains lilo (the installer) and boot-record-images to
 install Linux, OS/2, DOS and generic Boot Sectors of other OSes.
 .
 You can use Lilo to manage your Master Boot Record (with a simple text screen)
 or call Lilo from other Boot-Loaders to jump-start the Linux kernel.
</example>

<p>
Všimněte si, že první ve výpisu je dostupný balíček a druhý je balíček, který 
je již instalován. Pro více obecných informací o balíčku můžete použít:

<p>
<example>
# apt-cache showpkg penguin-command
Package: penguin-command
Versions: 
1.4.5-1(/var/lib/apt/lists/download.sourceforge.net_debian_dists_unstable_main_binary-i386_Packages)(/var/lib/dpkg/status)

Reverse Depends: 
Dependencies: 
1.4.5-1 - libc6 (2 2.2.1-2) libpng2 (0 (null)) libsdl-mixer1.1 (2 1.1.0) libsdl1.1 (0 (null)) zlib1g (2 1:1.1.3) 
Provides: 
1.4.5-1 - 
Reverse Provides: 
</example>

<p>
A ke zjištění na kterých balíčcích závisí:

<p>
<example>
# apt-cache depends penguin-command
penguin-command
  Depends: libc6
  Depends: libpng2
  Depends: libsdl-mixer1.1
  Depends: libsdl1.1
  Depends: zlib1g
</example>

<p>
Celkem tedy máme široký rozsah zbraní, které můžeme použít ke zjištění názvu 
balíčku, který chceme.
</sect>

<sect id="dpkg-search">Použití dpkg k nalezení názvů balíčků
<p>
Jedna z možností, jak najít název balíčku, je znát název některého důležitého 
souboru nacházejícího se uvnitř balíčku. Například abychom nalezli název balíčku, 
který obsahuje konkrétní <tt>".h"</tt> soubor, který potřebujeme pro kompilaci, 
můžeme spustit:

<p>
<example>
# dpkg -S stdio.h
libc6-dev: /usr/include/stdio.h
libc6-dev: /usr/include/bits/stdio.h
perl: /usr/lib/perl/5.6.0/CORE/nostdio.h
</example>

<p>
nebo:

<p>
<example>
# dpkg -S /usr/include/stdio.h
libc6-dev: /usr/include/stdio.h
</example>

<p>
Pro zjištění názvů balíčků nainstalovaných ve vašem systému, což je užitečné 
například pokud plánujete pročistit váš disk, můžete spustit:

<p>
<example>
# dpkg -l | grep mozilla
ii  mozilla-browse 0.9.6-7        Mozilla Web Browser
</example>
<p>
Problém tohoto příkazu je, že může "uříznout" konec názvu balíčku. V příkladu výše 
je plný název balíčku <tt>mozilla-browser</tt>. K opravení tohoto můžete použít 
proměnnou prostředí <tt>COLUMNS</tt> takto:

<p>
<example>
[kov]@[couve] $ COLUMNS=132 dpkg -l | grep mozilla
ii  mozilla-browser             0.9.6-7                     Mozilla Web Browser - core and browser
</example>

<p>
nebo popis nebo jeho část takto:

<p>
<example>
# apt-cache search "Mozilla Web Browser"
mozilla-browser - Mozilla Web Browser
</example>
</sect>

<sect id="auto-apt">Jak instalovat balíčky "na vyžádání"
<p>
Kompilujete program a znenadání bum! Je tu chyba, protože je potřeba <tt>.h</tt> 
soubor, který nemáte. Program <prgn>auto-apt</prgn> vás může takovýchto situací 
ušetřit. Zastaví kompilační proces a zeptá se vás na instalaci potřebných 
balíčků. Jakmile je balíček nainstalován, nechá proces pokračovat. 
<p>
V podstatě musítě udělat následující:

<p>
<example>
# auto-apt run příkaz
</example>

<p>
Kde `příkaz' je vykonávaný příkaz, který může potřebovat nějaké nedostupné 
soubory. Například:

<p>
<example>
# auto-apt run ./configure
</example>

<p>
auto-apt se pak zeptá, jestli chcete nainstalovat potřebné balíčky a automaticky zavolá 
apt-get. Pokud používáte X, program místo implicitního textového rozhraní 
nabídne grafické.
<p>
Auto-apt používá databáze, které, aby byl efektivní, je potřeba udržovat aktuální.
Toho lze dosáhnout voláním příkazů <tt>auto-apt update</tt>, 
<tt>auto-apt updatedb</tt> a <tt>auto-apt update-local</tt>.
</sect>

<sect id="apt-file">Jak zjistit, ke kterému balíčku soubor patří
<p>
Když chcete instalovat balíček a nemůžete zjistit jeho název pomocí 
<prgn>apt-cache</prgn> a přitom znáte název souboru vlastního programu nebo 
název některého jiného souboru, který k balíčku patří, pak můžete k nalezení 
názvu balíčku použít <prgn>apt-file</prgn>. Pracuje se s ním takhle:

<p>
<example>
$ apt-file search <var>filename</var>
</example>

<p>
Program funguje podobně jako <tt>dpkg -S</tt>, ale zobrazí i odinstalované 
balíčky, které hledaný soubor obsahují. Lze ho také použít ke zjištění, 
které balíčky obsahují potřebné hlavičkové soubory, které chybí při kompilaci 
programu. Avšak <prgn>auto-apt</prgn> je mnohem lepší způsob, jak řešit takovéto 
problémy, viz <ref id="auto-apt">.
<p>
Obsah balíčku si také můžete nechat zobrazit spuštěním:

<p>
<example>
$ apt-file list <var>packagename</var>
</example>

<p>
<prgn>apt-file</prgn> používá stejně jako auto-apt databázi, ve které je uloženo, 
které soubory jednotlivé balíčky obsahují. Databázi je třeba udržovat aktuální. 
Aktualizace se provádí spuštěním:

<p>
<example>
# apt-file update
</example>

<p>
Implicitně používá <prgn>apt-file</prgn> stejnou databázi jako 
<prgn>auto-apt</prgn>, viz <ref id="auto-apt">.

</sect>

<sect id="apt-listchanges">Jak zjistit změny v balíčcích
<p>
Každý balíček instaluje do svého adresáře s dokumentací 
(<tt>/usr/share/doc/packagename</tt>) soubor s názvem 
<tt>changelog.Debian.gz</tt>, který obsahuje seznam změn provedených v balíčku 
od jeho poslední verze. Tyto soubory si můžete prohlédnout např. pomocí 
<tt>zless</tt>. Po kompletním upgradu systému však už není hledání všech 
nových souborů se seznamy změn tak snadné.
<p>
Je tu způsob, jak tuto úlohu zautomatizovat - nástrojem nazvaným 
<prgn>apt-listchanges</prgn>. Nejprve nainstalujte balíček 
<package>apt-listchanges</package>. Během instalace balíčku ho Debconf 
nakonfiguruje. Některé z otázek neuvidíte, záleží na prioritě, kterou jste pro 
Debconf nastavil. Na otázky odpovězte podle uvážení.
<p>
První otázka se ptá, jakým způsobem vás má apt-listchanges o změnách 
informovat. Můžete si je nechat posílat na mail, což je výhodné při 
automatických upgradech, nebo si je můžete nechat ukázat pomocí filtru, jakým 
je např. <prgn>less</prgn>, takže si můžete změny prohlédnout ještě před tím, 
než necháte upgrade pokračovat. Pokud nechcete, aby se 
<prgn>apt-listchanges</prgn> při upgradech spouštěl automaticky, odpovězte 
<tt>none</tt>.
<p>
Po nainstalování apt-listchanges, jakmile apt stáhne balíčky (resp. získá 
z CD nebo připojeného disku), před tím, než se budou instalovat, vypíše 
apt-listchanges seznam změn v těchto balíčcích.
</sect>
</chapt>

<chapt id="sourcehandling">Práce se zdrojovými balíčky
<sect id="source">Stažení zdrojových balíčků
<p>
Ve světě svobodného software je běžné studovat zdrojový kód nebo dokonce 
opravovat chyby v tomto kódu. K tomuto budete potřebovat zdrojový 
kód programu stáhnout. APT systém poskytuje jednoduchý způsob, jak získat 
zdrojové kódy k mnoha programům obsaženým v distribuci, včetně všech souborů 
potřebných k vytvoření balíčku .deb.
<p>
Jiný obvyklý způsob užití zdrojových balíčků Debianu je upravení novější 
verze programu např. z unstable distribuce pro použití v stable distribuci. 
Kompilováním balíčku oproti stable distribuci, vygenerujete .debs se 
závislostmi upravenými tak, že pasují k ostatním balíčkům této distribuce.
<p>
Abyste toho dosáhli, měla by položka <tt>deb-src</tt> ve vašem 
<tt>/etc/apt/sources.list</tt> ukazovat na unstable distribuci. Musí být 
rovněž povolena (odkomentována). Viz sekci <ref id="sources.list">.
<p>
Ke stažení zdrojového balíčku použijte příkaz:

<p>
<example>
$ apt-get source packagename
</example>
<p>
Tím se stáhnou tři soubory: <tt>.orig.tar.gz</tt>, <tt>.dsc</tt> a 
<tt>.diff.gz</tt>. Pokud byl balíček vytvořen přímo pro Debian, nebudou 
dva posledně jmenované soubory staženy a první soubor nebude mít v názvu 
<tt>"orig"</tt>.
<p>
Soubor <tt>.dsc</tt> používá dpkg-source pro rozbalení zdrojového balíčku 
do adresáře <var>packagename-version</var>. Uvnitř každého staženého 
zdrojového balíčku je adresář <tt>debian/</tt>, který obsahuje soubory 
nutné k vytvoření .deb balíčku.
<p>
Pro automatický vytvoření balíčku, který jste si stáhli, přidejte <tt>-b</tt> 
na příkazový řádek takto:

<p>
<example>
$ apt-get -b source packagename
</example>

<p>
Pokud jste se rozhodli nevytvářet .deb balíček hned při stahování, můžete ho 
vytvořit později spuštěním:

<p>
<example>
$ dpkg-buildpackage -rfakeroot -uc -b
</example>

<p>
z adresáře, který byl pro balíček vytvořen po stažení. Pro nainstalování balíčku 
vytvořeného výše uvedenými příkazy musíte správce balíčků použít přímo. Takto:

<p>
<example>
# dpkg -i <var>file.deb</var>
</example>

<p>
Je rozdíl mezi <prgn>apt-get</prgn> metodou <tt>source</tt> a ostatními apt-get 
metodami. Metodu <tt>source</tt> může použít i běžný uživatel bez speciálních 
rootovských práv. Soubory se stáhnou do adresáře, ze kterého byl příkaz 
<tt>apt-get source package</tt> volán.
</sect>

<sect id="build-dep">Balíčky nutné pro kompilaci zdrojového balíčku
<p>
Pro kompilaci zdrojového balíčku jsou obvykle nutné určité hlavičkové soubory 
a sdílené knihovny. Každý zdrojový balíček má ve svém řídícím souboru (control 
file) uvedeno políčko 'Build-Depends:', která udává, které dodatečné balíčky 
jsou pro kompilaci tohoto zdrojového balíčku potřeba.
<p>
APT nabízí jednoduchý způsob stažený těchto balíčků. Spusťte 
<tt>apt-get build-dep balíček</tt>, kde `balíček' je název balíčku, který 
budete kompilovat. Například:

<p>
<example>
# apt-get build-dep gmc
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
  comerr-dev e2fslibs-dev gdk-imlib-dev imlib-progs libgnome-dev libgnorba-dev
  libgpmg1-dev 
0 packages upgraded, 7 newly installed, 0 to remove and 1  not upgraded.
Need to get 1069kB of archives. After unpacking 3514kB will be used.
Do you want to continue? [Y/n]
</example>

<p>
Balíčky, které se budou instalovat, jsou nutné, aby se <package>gmc</package> 
řádně zkompiloval. Nutno poznamenat, že příkaz nehledá zdrojový balíček 
programu, který chcete kompilovat. Musíte jej tedy stáhnout zvlášť spuštěním 
<tt>apt-get source</tt>.

<p>
Pokud byste se chtěl pouze podívat, které balíčky jsou pro kompilaci 
daného balíčku nutné, je tu varianta příkazu <tt>apt-cache show</tt> (viz 
<ref id="search">), která mezi jinými informacemi zobrazí řádek 
<tt>Build-Depends</tt>, na kterém jsou tyto balíčky uvedeny.

<p>
<example>
# apt-cache showsrc <var>package</var>
</example>

</sect>
</chapt>

<chapt id="erros">Jak se vypořádat s chybami
<sect id="erros-comuns">Běžné chyby
<p>
Chyby budou vždycky vznikat, spousta z nich nepozorností uživatele. Následuje 
seznam některých velmi častých chyb s popisem, jak se s nimi vypořádat.
<p>
Pokud se snažíte spustit <tt>apt-get install package</tt> a obdržíte chybu, 
která vypadá podobně jako tahle ...

<p>
<example>
Reading Package Lists... Done
Building Dependency Tree... Done
W: Couldn't stat source package list 'http://people.debian.org unstable/ Packages' (/var/state/apt/lists/people.debian.org_%7ekov_debian_unstable_Packages) - stat (2 No such file or directory)
W: You may want to run apt-get update to correct these missing files
E: Couldn't find package penguineyes
</example>

<p>
zapomněl jste po editaci souboru <tt>/etc/apt/sources.list</tt> spustit 
<tt>apt-get update</tt>.
<p>
Pokud chyba vypadá jako tahle

<p>
<example>
E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
</example>

<p>
při pokusu o spuštění kterékoliv metody <prgn>apt-get</prgn> vyjma 
<tt>source</tt>, nemáte rootovská práva, tj. jste přihlášen jako běžný uživatel.
<p>
Podobná chyba nastane, pokud spouštíte dvě verze programu <prgn>apt-get</prgn> 
najednou, nebo pokud se dokonce snažíte spustit <prgn>apt-get</prgn> zatímco 
je <prgn>dpkg</prgn> proces aktivní. Jedinou metodou, kterou lze použít zaroveň 
s jinými, je metoda <tt>source</tt>.
<p>
Pokud se instalace uprostřed zastaví a vy zjistíte, že už není možno instalovat 
nebo odstraňovat balíčky, zkuste použít tyto příkazy:

<p>
<example>
# apt-get -f install
# dpkg --configure -a
</example>

<p>
A potom to zkuste znovu. Může být nezbytné spustit druhý výše jmenovaný příkaz 
více než jednou. Je to důležitá lekce pro dobrodruhy, kteří používají `unstable'.

<p>
Pokud za běhu <tt>apt-get update</tt> obdržíte chybou hlášku 
"E: Dynamic MMap ran out of room", přidejte následující řádek do 
<file>/etc/apt/apt.conf</file>:

<example>
APT::Cache-Limit 10000000;
</example>

</sect>

<sect id="help">Kde najdu pomoc?
<p>
Pokud máte pocit, že ničemu nerozumíte, podívejte se do obsáhlé dokumentace, 
která je pro balíčkovací systém Debianu k dispozici. Velmi pomoci vám může 
<tt>--help</tt> a manuálové stránky, stejně jako dokumentace obsažená v 
adresářích <tt>/usr/share/doc</tt> nebo <tt>/usr/share/doc/apt</tt>.
<p>
Pokud vám ani tato dokumentace nepomůže, zkuste odpověď najít v mailových 
konferencích Debianu. Více informací o konkrétních uživatelských konferencích 
můžete najít na stránkách Debianu: <url id="http://www.debian.org"
name="http://www.debian.org">.
<p>
Uvědomte si, že tyto konference a zdroje by měli využívat pouze uživatelé 
Debianu; uživatelé ostatních systémů najdou lepší podporu v komunitních 
zdrojích své vlastní distribuce.
</sect>
</chapt>

<chapt id="distros">Které distribuce podporují APT?
<p>
Zde je seznam několika distribucí, které používají APT:
<p>
Debian GNU/Linux (<url id="http://www.debian.org" name="http://www.debian.org">) 
- právě pro tuto distribuci byl APT vyvinut
<p>
Conectiva (<url id="http://www.conectiva.com.br" name="http://www.conectiva.com.br">) 
- toto byla první distribuce, která portovala APT pro používání s 'rpm'
<p>
Libranet (<url id="http://www.libranet.com" name="http://www.libranet.com">)
<p>
Mandrake (<url id="http://www.mandrake.com" name="http://www.mandrake.com">)
<p>
PLD (<url id="http://www.pld.org.pl" name="http://www.pld.org.pl">)
<p>
Vine (<url id="http://www.vinelinux.org" name="http://www.vinelinux.org">)
<p>
APT4RPM (<url id="http://apt4rpm.sf.net" name="http://apt4rpm.sf.net">)
<p>
Alt Linux (<url id="http://www.altlinux.ru/" name="http://www.altlinux.ru/">)
<p>
Red Hat (<url id="http://www.redhat.com/" name="http://www.redhat.com/">)
<p>
Sun Solaris (<url id="http://www.sun.com/" name="http://www.sun.com/">)
<p>
SuSE (<url id="http://www.suse.de/" name="http://www.suse.de/">)
<p>
Yellow Dog Linux (<url id="http://www.yellowdoglinux.com/"
name="http://www.yellowdoglinux.com/">)
</chapt>

<chapt id="agradecimentos">Credits
<p>
Velký dík patří mým přátelům z projektu Debian-BR a Debianu samotného, kteří 
mi jsou stálou oporou a dodávají mi sílu pokračovat v dobročinné práci, stejně 
jako mi pomáhají v mém cíli zahránit svět. :)
<p>
Chtěl bych rovněž poděkovat CIPSGA za obrovskou pomoc našemu projektu a všem 
svobodným projektům, které vycházejí ze skvělých myšlenek.
<p>

Zvláštní poděkování patří:
<p>
Yooseong Yang &lt;yooseong@debian.org&gt;
<p>
Michael Bramer &lt;grisu@debian.org&gt;
<p>
Bryan Stillwell &lt;bryan@bokeoa.com&gt;
<p>
Pawel Tecza  &lt;pawel.tecza@poczta.fm&gt;
<p>
Hugo Mora &lt;h.mora@melix.com.mx&gt;
<p>
Luca Monducci &lt;luca.mo@tiscali.it&gt;
<p>
Tomohiro KUBOTA &lt;kubota@debian.org&gt;
<p>
Pablo Lorenzzoni &lt;spectra@debian.org&gt;
<p>
Steve Langasek &lt;vorlon@netexpress.net&gt;
<p>
Arnaldo Carvalho de Melo &lt;acme@conectiva.com.br&gt;
<p>
Erik Rossen &lt;rossen@freesurf.ch&gt;
<p>
Ross Boylan &lt;RossBoylan@stanfordalumni.org&gt;
<p>
Matt Kraai &lt;kraai@debian.org&gt;
<p>
Aaron M. Ucko &lt;ucko@debian.org&gt;
<p>
Jon &Aring;slund &lt;d98-jas@nada.kth.se&gt;
</chapt>

<chapt id="novas">Nové verze tohoto návodu
<p>
Tento návod byl vytvořen v rámci projektu <url id="http://www.debian-br.org"
name="Debian-BR">, jehož cílem je pomoci při každodenním používání Debianu.
<p>
Nové verze tohoto dokumentu budou dostupné na stránce Debian Documentation 
Project na adrese <url id="http://www.debian.org/doc/ddp" 
name="http://www.debian.org/doc/ddp">. 
<p>
Komentáře a kritiku posílejte přímo mně na 
<email>kov@debian.org</email>.
</chapt>

</book>

</debiandoc>
