====== Instalace softwaru v systému urpmi ====== ====== ÚVOD - aneb proč nepoužívat rpm ====== Pro správu balíčků (instalace, deinstalace, reinstalace, vyhledávání, vypisování vlastností atd) a pro správu zdrojů balíčků je v Mageii systém [[rpm#urpmi|urpmi]]. V uvedeném odkazu najdete pod odkazy k jednotlivým příkazům seznamy dostupných parametrů. Název má znamenat něco jako "uživatelský rpm", tedy něco, co je snadno použitelné a co zároveň řeší některé nedostatky v návrhu samotného rpm systému. S touto ideou přišla jako první právě Mandriva, obdobné nástroje pak začaly vytvářet i ostatní distribuce.\\ Systém [[rpm#rpm|rpm]], s nímž je [[rpm#urpmi|urpmi]] úzce provázáno neřeší problém závislostí. To znamená, že ''program1'', který pro svoji funkci vyžaduje např. knihovnu ''libabcd'' se při použití instalačního příkazu [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] rpm -i program1 nenainstaluje, ale systém zahlásí první nalezený nedostatek - chybějící knihovnu ''libabcd''. Provedete tedy prohlídku internetu, naleznete požadovanou knihovnu, stáhnete si ji do počítače a zadáte: [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] rpm -i libabcd Když budete mít štěstí (ale moc s tím nepočítejte), knihovna ''libabcd'' nebude vyžadovat jiný balíček. Takže sláva, budeme pokračovat v instalaci ''programu1'': [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] rpm -i program1 a vyskočí hláška, že je zapotřebí ''libabdc''. A kolečko začíná nanovo. Pochopitelně že lze zjistit např. příkazem ''rpm -q jmeno_balicku –whatrequires'' všechny závislosti a potřebné balíčky si instalovat, ale i tak to někdy bývá téměř nekonečné, protože totéž musíte udělat pro: \\ * všechny balíčky, které vyžaduje ''program1'' a pro * všechny balíčky které vyžadují balíčky, které vyžaduje ''program1'' a pro * všechny balíčky, které vyžadují balíčky, požadované balíčky, které vyžaduje ''program1'' a pro * všechny..... 8-O Tomu se říká "dependecy hell", neboli peklo závislostí.\\ Při případné deinstalaci vám pak v systému zbude hromada zcela nepotřebných souborů, které jen zabírají místo a vy už vůbec nevíte, k čemu patří či patřily.\\ ====== Řešení závislostí s urpmi ====== Systém [[rpm#urpmi|urpmi]] na to jde jinak. Stáhne si z internetu soubor, který obsahuje jména balíčků a některé další informace, vytvoří si z těchto dat indexy a pak pracuje s těmito soubory. Pokud hledáte informace o nějakém balíčku, [[rpm#urpmi|urpmi]] se podívá právě sem a dodá odpověď. ===== Instalace ===== Pokud instalujete ''program1'' pomocí [[rpm#urpmi|urpmi]] [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] urpmi program1 [[rpm#urpmi|urpmi]] se ozve, a je několik možností: * Balíček program1 je již nainstalován nebo * Žádný balíček s názvem program1 Následující balíčky obsahují: program1: program11, program110, program120, ... Chcete-li použít všechny, použijte volbu "-a" a vy si vyberete ten pravý ořechový ''program1YZ'' Aby byly splněny závislosti, budou nainstalovány následující balíčky: Balíček Verze Vydání Arch. (zdroj "Core Release (distrib1)") libabcd 1.1.0 1.mga1 i586 libabdc 1.1.0 1.mga1 i586 Navíc bude použito 13MB dodatečného diskového prostoru. Pokračovat v instalaci 2 balíčků? (A/n) Jednoduše reagujete podle okolností. Ovšem je zapotřebí chápat některé souvislosti. Práce s indexy je rychlá a pohodlná, ale funguje jen tehdy, jsou-li indexy odkazující na skutečné balíčky někde na netu, aktuální. Proto je nutné čas od času tyto indexy (tzv. [[:zdroje|zdroje]]) balíčků aktualizovat, tedy stáhnout aktuální verze. Pokud index ukazuje například na soubor ''ftp://mageia.mirror.dkm.cz/pub/mageia/distrib/1/i586/media/core/release/program1'', ale na webu je už verze ''program1.0.12.5'', tak se soubor nenalezne a nenainstaluje. ==== Možné problémy ==== Pokud tedy nejde nainstalovat nějaký program, který v [[:zdroje|repozitáři]] (seznamu balíčků) určitě máte, zkontrolujte si: \\ - zda je funkční připojení k internetu a zda je server funkční (např. příkaz ''ping'' na server, kde jsou balíčky uloženy) - zaktualizujte si indexy balíčků (příkaz [[rpm#urpmi_update|urpmi.update nazev_zdroje]] ) a pak to zkuste znovu. Jak vidíte, [[rpm#urpmi|urpmi]] za vás řeší mnoho obtíží a je skutečně velmi snadný na použití. ==== Chybová hlášení a co s nimi ==== Nejde spustit program. Na rozdíl od [[wp>cs:windows|OS Windows]] máte možnost spustit program z [[:konzole|{{:wiki:icons:konzole.png?20|Konzoly}}]][[:konzole|Konzoly]] (obvykle **Menu** → **Nástroje** → **Konzole** v prostředí [[:system:kde4|KDE4]], nebo **Emulátor terminálu** v prostředí [[:system:gnome|GNOME]] ap.), což je takové to černé okénko: {{popup> :system:prikazovy_radek:konzole.png?400 |}} Tady napíšete příkaz, který nefunguje, např.: [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] # kmixer bash: kmixer: příkaz nenalezen # A nyní vidíte, proč se program nespustil: v systému není přítomen (není nainstalován). Programy vypisují při svém spuštění všechny možné druhy informací, ale zejména jsou důležité případné chybové hlášky, které umožňují identifikovat problém a najít řešení. == bash: prikas: command not found == Jedna z nejčastějších hlášek, které vídá i zkušený uživatel. Po zadání příkazu ''prikas'' dostanete tuto hlášku: [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] [petos@Lizard ~]$ prikas bash: prikas: command not found případně česky: [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] [petos@Lizard ~]$ prikas bash: prikas: příkaz nenalezen Systém zde říká: ''bash: prikas: příkaz nenalezen''. Co je špatně? Nejspíše překlep (''prikaz'' se píše se ''z'' ne ''s''). __Řešením tedy je:__ * překontrolujte si, že jste napsali ''prikaz'' správně (nejčastější chyba = překlep) * není-li ''prikas'' dostupný pouze pro [[:root|roota - správce systému]]. Zpravidla se jedná o příkazy spravující systém. Překontrolujte to spuštěním příkazu s [[:system:prikazovy_radek:vlastnictvi|právy]] roota. * máte-li nainstalovaný balíček, který obsahuje ''prikas'' Vámi volaný příkaz: urpmf --files prikas balicek:/usr/bin/bin Textový řetězec na začátku řádku před dvojtečkou je název balíčku, ve kterém se soubor nachází. V tomto případě je to ''balicek''. Nyní uvedený balíček nainstalujeme buď pomocí [[:mcc|{{:wiki:icons:drakconf-icon.png?20|Ovládací centrum Mageia}}]][[:mcc|ovládacího centra Mageia]], nebo příkazem ''urpmi'' z [[:konzole|Konzoly]]: [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] urpmi balicek Některé názvy programů/příkazy jsou poměrně dlouhé a tak se snadno může udělat překlep. Linux má proti tomu jednoduchou obranu: po napsání několika prvních znaků stisněte klávesu Tab a název se doplní, případně se vypíšou dostupné možnosti: $ fir /ZDE JSEM STISKL TAB/ fire firefox /JSOU DOSTUPNÉ DVA PROGRAMY - FIRE A FIREFOX/ $ fire /PÍSMENO "E" SE DOPLNILO AUTOMATICKY/ $ firef /DOPLNIL JSEM PÍSMENO "F" A ZNOVU STISKL TAB/ $ firefox a nyní stačí příkaz odeslat klávesou Enter a příkaz se spustí. Rozšířené možnosti doplňování zajistí balíček ''bash-completion'' (pro nainstalování zadejte: ''urpmi bash-completion''). == cannot open shared object file: No such file or directory == Potřebný soubor neexistuje. Pravděpodobně v systému chybí nějaký balíček, takže bude potřeba ho doinstalovat. Konkrétní příkaz z[[http://forum.mandrivalinux.cz/index.php?topic=9467.msg51659#msg51659|diskuzního fóra]]: > program se mi vůbec nespustí. Vypíše to tohle: > [martin@localhost ~]$ epsxe /home/martin/.epsxe/epsxe: error while loading shared libraries: libgtk-1.2.so.0 : cannot open shared object file: No such file or directory Dotyčnému chybí v systému soubor ''libgtk-1.2.so.0''. Je to proto, že spouštěný program nebyl instalován systémem [[:system:prikazovy_radek:rpm|rpm]] a tudíž nejsou zajištěny příslušné závislosti. Dá se to ale celkem snadno dořešit. Nejprve musíme zjistit, ve kterém balíčku se soubor ''libgtk-1.2.so.0'' nachází: [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] $ urpmf --files libgtk-1.2.so.0 libgtk+1.2:/usr/lib/libgtk-1.2.so.0 libgtk+1.2:/usr/lib/libgtk-1.2.so.0.9.1 $ Textový řetězec na začátku řádku před dvojtečkou je název balíčku, ve kterém se soubor nachází. V tomto případě je to balíček ''libgtk+1.2''. Nyní uvedený balíček nainstalujeme buď pomocí [[:mcc|{{:wiki:icons:drakconf-icon.png?20|Ovládací centrum Mageia}}]][[:mcc|ovládacího centra Mageia]], nebo příkazem [[rpm#urpmi|urpmi]] z [[:konzole|Konzoly]]: [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] urpmi libgtk+1.2 Po nainstalování znovu zkuste spustit problémový program. Pokud se rozeběhne, je vyhráno (v uvedené diskuzi to stačilo), pokud ne, najdete ve výpisu v konzoly další příčinu (možná další chybějící soubor). V takovém případě postupujte podle obsahu chybového hlášení. ===== Deinstalace ===== Obdobným způsobem pracuje [[rpm#urpme|urpme]], tedy příkaz z rodiny ''urpm*'' používaný pro odinstalování balíčků. ''Urpme'' nejprve ve své databázi nainstalovaných balíčků zjistí, zda příslušný balíček nějakým způsobem nesouvisí s některými jinými. V našem příkladu: [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] urpme libabcd vygeneruje zprávu: Aby byly splněny závislosti, budou odebrány 2 balíčky (13MB): program1-1.0.0-mga1.i586 libabdc-1.0.0-mga1.i586 (z důvodu chybějícího libabcd1.0.0-mga1.i586) Odstranit 3 balíčky? (a/N) a pokud zadáte a Enter, máte v systému čisto jak od ''libabcd'', tak od ''programu1'', který by zůstal bez knihovny nefunkční, tak i od další závislé knihovny ''libabdc''. Pokud je ovšem knihovna ''libabdc'' potřeba ještě pro ''program11'', který zůstal nainstalovaný, odinstalována nebude.\\ \\ Nu řekněte sami, jestli má smysl se lopotit s příkazy [[:system:prikazovy_radek:rpm|rpm]] a závislostmi, když [[rpm#urpmi|urpmi]] to elegantně dělá za nás?! 8-) ==== Možné problémy ==== === Příliš mnoho závislých balíčků === Nestává se to až tak často, ale některé programy či knihovny jsou skutečně klíčové pro celý systém, nebo jeho část (např. zvukovou, grafickou ap.), takže s jeho odstraněním by se stal systém v podstatě nefunkčním. ŘEŠENÍ: neodinstalovávat.\\ \\ Pokud chcete je vyměnit soubor za jinou verzi, pak je možné soubor odstranit příkazem: [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] rpm -e --nodeps nazev_balicku a vzápětí nainstalovat požadovanou verzi: [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] urpmi nazev_balicku Jde to i jednodušeji, jedním příkazem, který natvrdo přepíše nainstalovaný balíček jiným, který požadujeme: [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] urpmi --allow-force nazev_noveho_balicku a je to. === Některé balíčky nenalezeny === Nebudu vám šahat do svědomí, co jste to se systémem prováděli, ale pokud se to stane (a nemusí to být nezbytně vaší vinou), pak je asi nutné provést obnovu indexu nainstalovaných souborů: [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] rpm -va provede kontrolu všech nainstalovaných balíčků, případně (hlásí-li množství chyb): [[:konzole|{{:wiki:icons:konzole.png?40 |Konzole}}]] rpm --rebuilddb provede obnovu databáze nainstalovaných balíčků. ** POZOR!! Pokud příkaz nedoběhne do konce v pořádku, tak se s rpm systémem můžete rozloučit - čeká vás reinstalace systému!!** ====== Další informace: ====== * programy z rodiny [[rpm#zakladni_prehled|urpm*]] * sekce o instalaci programů [[:software:instalace|instalaci programů]] na této wiki