Urpmi na maximum — Repozitáře a práce s nimi

logo-mandrivaV 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.

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:

  • hdlist.cz binární (datový), komprimovaný (gzip), indexovaný (seřazený) seznam balíčků ve zdroji s informací o balíčku, jeho architektuře, verzi atd. Základní informace o balíčku. Používáno dříve, dnes udržován kvůli kompatibilitě s alternativními balíčkovacími programy (smart aj.);
  • MD5SUM kontrolní součet celého adresáře;
  • changelog.xml.lzma komprimovaný (LZMA) textový soubor o posledních změnách v balíčcích;
  • files.xml.lzma formát jako changelog, obsahuje seznamy instalovaných souborů obsažených v jednotlivých balíčcích;
  • info.xml.lzma, obdobné, obsahuje informace o zdrojových rpm (*.src.rpm), url výrobce, licence;
  • pubkey veřejný klíč zdroje;
  • synthesis.hdlist.cz základní soubor v media_info.

Soubor synthesis.hdlist.cz obsahuje ke každé položce (ke každému balíčku) následující informace:

  • vyžadované balíčky (závislosti);
  • velikost souboru;
  • skupina, do které je balíček zařazen (např. System/Kernel) a ve které se zobrazuje ve správci balíčků;
  • krátký popis (summary);
  • velikost souboru;
  • co poskytuje (co mohou vyžadovat jiné balíčky).

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.

Předpoklady úspěšné instalace balíčku

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.

Chci instalovat jen jeden balíček stažený z netu

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.

Žádné komentáře

Leave a comment

Sorry, you must be logged in to post a comment. Login