V minulém díle byly představeny základy práce se zdroji softwaru. Vysvětlili jsme, kde systém uchovává informace o nainstalovaných balíčcích, k čemu jsou repozitáře a jaké druhy repozitářů existují. V tomto díle se na repozitáře podíváme ještě jednou, a to konkrétně na to, jak urpmi pracuje se zdroji.
Začněme s terminologií. Jako zdroj (či repozitář) bývá označován adresář, kde jsou umístěny rpm soubory. V tomto adresáři obvykle bývá podadresář jménem media_info, v němž se pak nachází další soubory:
Soubor synthesis.hdlist.cz obsahuje ke každé položce (ke každému balíčku) následující informace:
S tímto souborem pracuje urpmi lokálně; při aktualizaci zdroje si stáhne aktuální soubor synthesis.hdlist.cz do uživatelova počítače a v něm vyhledává balíčky a základní informace o nich. S informacemi o balíčcích lze tedy pracovat i po odpojení od internetu.
Soubory obsahující doplňkové informace (tedy ostatní výše uvedené *.lzma soubory) si urpmi stáhne jen v případě, že dotaz uživatele je možné zodpovědět pouze po nahlédnutí do tohoto souboru.
Můžete si to snadno vyzkoušet. Zkuste se podívat, jaké soubory obsahuje balíček mplayer:
# urpmq -l mplayer $MIRRORLIST: media/main/release/media_info/20090424-151034-files.xml.lzma
/etc/mplayer
/etc/mplayer/menu.conf
/etc/mplayer/mplayer.conf
/usr/bin/midentify
/usr/bin/mplayer
/usr/share/doc/mplayer
…. (následují další soubory z balíčku mplayer)
Co se vlastně stalo? Systém urpmi zjistil, že požadovanou informaci nemá. Proto se podíval do svých záznamů, zjistil, ve kterém zdroji se balíček mplayer nachází, a z příslušného zdroje si stáhl soubor files.xml.lzma obsahující požadované informace. Vychází se z toho, že nemá smysl stahovat do počítače informace, které jsou zapotřebí jen výjimečně. V případě potřeby se příslušný (a aktuální) soubor stáhne a informace se v něm dohledá. Pokud je soubor již stažen, nic se samozřejmě stahovat nemusí.
Soubory s informacemi o balíčcích jsou nazývány v různých systémových nápovědách odlišně; někdy soubory se syntézou, jindy indexy a ještě jindy (nesprávně) databáze urpmi. Jediná databáze je databáze rpm a udržuje ji program rpm.; s xml soubory stahovanými z internetu souvisí jen nepřímo.
Chcete-li instalovat nějaký balíček z internetového repozitáře, je potřeba mít funkční připojení k internetu, dále mít aktuální lokální soubor synthesis.hdlist.cz. Instalace balíčku (nebo závislých balíčků) může selhat, pokud je v repozitáři balíček novější verze, než je uvedeno v lokálním seznamu (synthesis.hdlist.cz). Balíčky totiž v celém názvu obsahují i číslo verze. Jména souborů pak nesouhlasí. Aktualizaci indexu (tedy stažení aktuálního souboru synthesis.hdlist.cz do vašeho počítače) zajistí příkaz urpmi.update nazev_zdroje a nebo pro všechny zdroje příkaz: urpmi.update -a.
Urpmi si stáhne z repozitáře nezbytný soubor synthesis.hdlist.cz, eventuelně i další *.xml.lzma soubory, přidá je do svých indexů a následně můžete s novým rpm souborem pracovat pomocí systému urpmi jak v grafické nástavbě (Drakrpm neboli gurpmi) tak pomocí konzolových příkazů urpmi.
Instalace je sice námět, který bude podrobně rozebírán příště, ale bude užitečné něco zmínit nyní, v souvislosti s právě probíraným účelem repozitářů a jejich indexů.
Instalaci jednoho rpm souboru, který jste si stáhli z internetu, lze zařídit pomocí příkazu urpmi tak, že jej spustíte v adresáři s balíčkem a jako parametr příkazu zadáte celé jméno včetně čísla verze a přípony rpm. Například mám na lokálním disku v adresáři /home/user/Dokumenty/mandriva_repo soubor lyx-1.6.0-1hbl2009.0.i586.rpm. Přesunu se do příslušného adresáře a napíšu:
urpmi lyx-1.6.0-1hbl2009.0.i586.rpm
Případné závislosti (balíčky) se stáhnou z ostatních repozitářů. Pokud jste stáhli nějaký balíček, využívající v závislostech další speciální balíčky od tvůrce programu, v distribučních zdrojích se pravděpodobně nenajdou. Budete je muset stáhnou také samostatně, nebo si přidejte všechny balíčky jako zdroj (pokud to server umožňuje – pokud obsahuje indexové soubory). Pokud ne, musíte je stáhnout všechny a v adresáři s balíčky zadáte příkaz:
urpmi *.rpm
Nainstalují se všechny rpm balíčky obsažené v adresáři. Pokud si nevytvoříte místní repozitář a zároveň nepoužijete celé jméno souboru, bude urpmi hledat balíček ve svých indexech a instalace skončí chybou. Instalací pomocí urpmi se informace o balíčku dostanou do databáze rpm a jsou využity např. při dalších instalacích (např. může zajišťovat pro jiné balíčky závislost), ke korektnímu odinstalování ap.
»» celý článek