Balíčkovací systém distribuce Debian GNU/Linux: seznam zdrojů
V minulém dílu jsme si vysvětlili, jakým způsobem nám může být užitečný apt, a ukázali jsme si základní použití programu apt-get. Dnes si ukážeme, jak se konfiguruje seznam zdrojů, a podíváme se blíže, jakým způsobem funguje aktualizace seznamu balíčků.
Seriál Balíčkovací systém distribuce Debian GNU/Linux
- Balíčkovací systém distribuce Debian GNU/Linux, část druhá
- Balíčkovací systém distribuce Debian GNU/Linux: apt
- Balíčkovací systém distribuce Debian GNU/Linux: seznam zdrojů
- Balíčkovací systém distribuce Debian GNU/Linux: volby "source" a "build-dep"
- Balíčkovací systém distribuce Debian GNU/Linux: dokončení "apt-get"
Konfigurace zdrojů s balíčky
Do našeho systému můžeme instalovat balíčky z různých zdrojů. Nejčastěji používanými zdroji jsou archivy balíčků na FTP nebo HTTP serverech, můžeme však použít i jiné zdroje (např. instalační CD). Seznam zdrojů nakonfigurujeme v souboru /etc/apt/sources.list. Soubor může obsahovat libovolný počet zdrojů, přičemž typy zdrojů lze libovolně kombinovat. Není tedy problémem např. používat primárně k instalaci balíčků instalační CD, a přesto aplikovat bezpečnostní aktualizace z HTTP serveru v Internetu. Každý zdroj je nadefinován na jednom řádku v následujícím formátu:
typ URI argumenty
Nejčastěji používaným typem je deb (definuje zdroj binárních balíčků), dalším typem je deb-src (definuje zdroj zdrojových balíčků). URI určuje místo, kde se balíčky nacházejí. Existuje několik typů URI, nejpoužívanějšími typy jsou cdrom, file, ftp a http. Argumenty, následující URI, pro zdroje typu deb i deb-src
určují distribuci a komponenty. Distribucí bývá typicky stable, testing nebo unstable a komponentami mohou být např. main, contrib nebo non-free. URI, distribuce a komponenty spolu dohromady tvoří umístění, ze kterých může apt-get
čerpat informace o balíčcích. Komponent může být pro jeden zdroj uvedeno více a ve speciálním případě, kdy distribuce definuje přesnou cestu (v takovém případě musí končit znakem „/“), může být určení komponenty vynecháno. Formát řádku pro zdroj typu deb (analogicky platí pro typ deb-src) je tedy:deb URI distribuce [komponenta_1] [komponenta_2] [...]
Obvyklý obsah souboru sources.list pro vývojovou větev stableje:
deb ftp://ftp.cz.debian.org/debian stable main contrib non-free deb ftp://ftp.cz.debian.org/debian-non-US stable/non-US main contrib non-free deb http://security.debian.org stable/updates main contrib non-free deb http://security.debian.org/debian-non-US stable/non-US main contrib non-free
Aktualizace informací o balíčcích
Při většině operací nad balíčkovacím systémem nepracují nástroje apt přímo se zdroji balíčků, ale s informacemi, které mají dostupné lokálně. Tyto informace se synchronizují s aktuálním stavem zdrojů příkazem apt-get update. Nyní si zhruba popíšeme, co tento příkaz vykonává. Pro vysvětlení budeme předpokládat, že v souboru sources.list máme řádek:
deb ftp://ftp.cz.debian.org/debian stable main contrib non-free
V takovém případě bude příkaz apt-get update vypisovat řádky:
Get:1 ftp://ftp.cz.debian.org stable/main Packages [1777kB] Get:2 ftp://ftp.cz.debian.org stable/main Release [96B] Get:3 ftp://ftp.cz.debian.org stable/contrib Packages [49.2kB] Get:4 ftp://ftp.cz.debian.org stable/contrib Release [99B] Get:5 ftp://ftp.cz.debian.org stable/non-free Packages [65.4kB] Get:6 ftp://ftp.cz.debian.org stable/non-free Release [100B]
Zmíněný zdroj (řádek v souboru sources.list) totiž určuje celkem tři adresáře (pro každou komponentu jeden), ze kterých má apt-get čerpat informace. Konkrétně se jedná o tyto adresáře (pracujeme s architekturou i386):
ftp://ftp.cz.debian.org/debian/dists/stable/main/binary-i386/ ftp://ftp.cz.debian.org/debian/dists/stable/contrib/binary-i386/ ftp://ftp.cz.debian.org/debian/dists/stable/non-free/binary-i386/
Podíváme-li se do těchto adresářů, zjistíme, že každý z nich obsahuje celkem tři soubory: Packages, Packages.gz a Release. Z našeho pohledu je zajímavý soubor Packages.gz, což je (jak z jeho názvu vyplývá) zkomprimovaná varianta souboru Packages. Nahlédneme-li např. do souboru ftp.cz.debian.org/debian/dists/stable/main/binary-i386/Packages.gz, uvidíme specifikace balíčků, které jsou obsaženy v komponentě maindistribuce stable (je jich skutečně mnoho :-)). Jednotlivé specifikace jsou od sebe odděleny prázdným řádkem. Jako příklad si uvedeme specifikaci balíčku 3dchess:
Package: 3dchess Priority: optional Section: games Installed-Size: 144 Maintainer: Stephen Stafford <bagpuss@debian.org> Architecture: i386 Version: 0.8.1-9 Depends: libc6 (>= 2.2.4-4), xaw3dg (>= 1.5-6), xlibs (>> 4.1.0) Filename: pool/main/3/3dchess/3dchess_0.8.1-9_i386.deb Size: 31466 MD5sum: 03cdc2c944551aa3ecdd0d3979071e77 Description: 3D chess for X11 3 dimensional Chess for X11R6. Three boards, 96 pieces and 26 directions.
Z této specifikace je zřejmé, že soubor Packages.gz je jádrem informací o balíčcích, neboť z těchto údajů lze získat vše od informativního popisu balíčku až po definici závislostí. Proto je jeho kopie uložena v dekomprimované podobě lokálně na disku (v našem případě pod názvem /var/lib/apt/lists/ftp.cz.debian.org_debian_dists _stable_main_binary-i386_Packages). Důležitou informací, kterou lze ze souboru Packages.gz získat, je umístění jednotlivých balíčků. Tuto informaci nese hodnota pole Filename. Zřetězíme-li URI definované v souboru sources.list s hodnotou pole Filename, získáme URI, na kterém je dostupný požadovaný balíček. V našem případě to tedy jeftp.cz.debian.org/debian/pool/main/3/3dchess/3dchess0.8.1–9_i386.deb. Nyní je nám tedy jasné, jak je možné, že nás apt-get při spuštění příkazu apt-get install console-log např. informuje o skutečnosti, že je potřeba nainstalovat ještě balíček run, a jaktože ví, odkud má balíčky instalovat.
Tento článek sponzoruje soLNet, s.r.o.
Školení: TCP/IP síť na Linuxu II
V tomto školení prohloubíte svoji znalost síťování na Linuxu a vyzkoušíte si pokročilejší techniky. Školení je určené mimojiné i pro správce poskytovatelských sítí.
- Průřez technologiemi TCP/IP
- Stavba testovací sítě
- Dynamický routing: OSPFv2 a OSPFv3
- Bridging, proxy ARP, proxy NDP
- Různé metody překladu adres
- NAT traversal v praxi
- Přepis paketů
- Tunelování a VPN
- Troubleshooting, situace z praxe
Podrobnější informace a přihláška
Seriál Balíčkovací systém distribuce Debian GNU/Linux
- Balíčkovací systém distribuce Debian GNU/Linux, část druhá
- Balíčkovací systém distribuce Debian GNU/Linux: apt
- Balíčkovací systém distribuce Debian GNU/Linux: seznam zdrojů
- Balíčkovací systém distribuce Debian GNU/Linux: volby "source" a "build-dep"
- Balíčkovací systém distribuce Debian GNU/Linux: dokončení "apt-get"
Přehled názorů
Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

