Hlavní navigace

Balíčkovací systém distribuce Debian GNU/Linux: seznam zdrojů

Marcel Kolaja 11. 7. 2003

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

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/dis­ts/stable/main/bi­nary-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/lis­ts/ftp.cz.debi­an.org_debian_dis­ts _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.debi­an.org/debian/po­ol/main/3/3dches­s/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.

Našli jste v článku chybu?

17. 7. 2003 23:51

Jarda Kotesovec (neregistrovaný)

chtel jsem se zeptat, jestli neexistuje nejaky elegantni zpusob, jak vratit posledni cinnost (instalaci,odinstalaci) do puvodniho stavu nez jsem to (od)instaloval, neco jako UNDO. kdyz napr. upgraduju xfree z neoficialniho zdroje, a nasledne s tim mam problemy s chodem xfree, tak jak se proste vratit k puvodni verzi, kterou jsem mel pred upgradem. Vim jak se vratit k nejake verzi, ale to se tyka jen jednotlivych balicku, ale kdyz se jich nainstaluje/upgraduje treba 30, tak proste nevim co s ti…

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Lupa.cz: Levný tarif pro Brno nebude. Radní: je to kartel

Levný tarif pro Brno nebude. Radní: je to kartel

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo