Obsah
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 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, s nímž je 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
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:
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
:
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…..
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 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, urpmi se podívá právě sem a dodá odpověď.
Instalace
Pokud instalujete program1
pomocí urpmi
urpmi program1
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) 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 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 urpmi.update nazev_zdroje )
a pak to zkuste znovu.
Jak vidíte, 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 OS Windows máte možnost spustit program z Konzoly (obvykle Menu → Nástroje → Konzole v prostředí KDE4, nebo Emulátor terminálu v prostředí GNOME ap.), což je takové to černé okénko:
:system:prikazovy_radek:konzole.png
Tady napíšete příkaz, který nefunguje, např.:
# 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:
[petos@Lizard ~]$ prikas bash: prikas: command not found
případně česky:
[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 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 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í ovládacího centra Mageia, nebo příkazem urpmi
z Konzoly:
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 zdiskuzní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 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í:
$ 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í ovládacího centra Mageia, nebo příkazem urpmi z Konzoly:
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 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:
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 rpm a závislostmi, když urpmi to elegantně dělá za nás?!
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:
rpm -e --nodeps nazev_balicku
a vzápětí nainstalovat požadovanou verzi:
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:
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ů:
rpm -va
provede kontrolu všech nainstalovaných balíčků, případně (hlásí-li množství chyb):
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 urpm*
- sekce o instalaci programů instalaci programů na této wiki