Instalace, aktualizace a odinstalace programů, dotazy do db, údržba
V minulém dílu o Entropy jste se dozvěděli trochu teorie a v dnešním přistoupíme k praktickým příkladům práce s Entropy resp. jejími frontendy Equo a Sulfur. Equo je řádkový program ne nepodobný Gentoo programu emerge a naopak Sulfur je grafický program pro správu balíčků, který možná přijde vhod uživatelům, kteří nemají v lásce řádkové programy. Ale kdo někdy používal emerge, bude se s Equo cítit jako ryba ve vodě.
Jak jsem uvedl, budu se více věnovat programu Equo, protože je s ním víc legrace…. pardon, chtěl jsem říci, že má větší využití. Můžeme s ním příkazy řetězit, můžeme ho používat ve skriptech, spouštět ho v textových konzolích, a nakonec je i rychlejší, jelikož nemusí sebou tahat přítěž grafického UI. Přesto, jak uvidíme na obrázcích, není pouze jednobarevný jak byste očekávali, a tak se v něm orientuje stejně dobře jako ve výpisech Sulfuru, nebo podobně laděném Gentoo emerge, který je vlastně jeho rodičem. Synek nám, jak se zdá, nepadl daleko od stromu.
Zaměřím se v tomto článku na nejpoužívanější příkazy, které by měl každý znát. Většinu příkladů budu provádět na mém naposled instalovaném programu, který se mi nedávno podařilo protlačit do Entropy. Je to program pro práci s raw soubory fotoaparátů RawTherapee. Jako linuxový shell používám Fish. To jen kdyby vám vrtalo hlavou jak to, že je spustitelný soubor v příkazech obarvený na zeleno, jedná se totiž o vestavěnou kontrolu syntaxe.
Příprava prostředí
Update Entropy *
Před instalací programů by měla být aktuální lokální databáze Entropy. Databáze je vlastně obraz seznamu instalovatelných balíčků s informacemi o závislostech, informacemi o instalaci, verzích … atd . Pokud vám běží v upozorňovací oblasti panelu Magneto, máte Entropy nejspíš aktuální, a tak můžete rovnou přeskočit na Instalaci programů. Pokud ne, můžete spustit aktualizace ručně.
~> su # u všech dalších příkazů v článku předpokládám práva su # equo update
Upgrade systému *
Sabayon tak tuto akci nazývá, já bych se slovu upgrade vyhnul. Ale Sabayon toto slovo používá zřejmě proto, že příkaz update si již už uzurpovala předchozí akce. V tom případě je název upgrade akceptovatelný (a nic jiného nám také nezbývá).
Upgrade systému je vlastně update všech balíčků, které mají v repozitáři novější verzi. Upgrade můžete provést přes Equo příkazem
# equo upgrade
Seznam aktualizací je také možné zobrazit v Magnetu kliknutím na ikonu, a pokud preferujete grafické orgie, spusťte Sulfur tlačítkem Load Package Manager. Já zůstanu nadále u programu Equo, jelikož to je hlavní téma tohoto článku a vlastně i moje preference.
Instalace, aktualizace, odinstalace, dotazy
Instalace programů *
Nejjednodušší a zároveň nejčastější činnost kolem Entropy budou nejspíš instalace a odinstalace programů. Entropy obsahuje balíčky binární, předkompilované a tak z pohledu uživatele Gentoo, který musí programy kompilovat, je instalace z Entropy velice rychlá.
# equo install -a rawtherapee
Instalace programu zahrnuje nalezení balíčku (1) v repositáři, vyhodnocení závislostí (2) s údaji o počtech balíků které budou instalovány, velikosti stahovaných souborů, a následně zabraný prostor na disku (3). Zde je také vidět, že balíky jsou označeny písmenkem N jako nové. Dále následuje stažení všech souborů potřebných k instalaci (4) dle závislostí, a nakonec samotná instalace všech balíků (5). Pokud nepoužijeme parametr -a nebo ekvivalent –ask, instalace se nebude na nic ptát a program se rovnou nainstaluje.
Hodnota download size ukazuje skutečnou velikost instalací přenášených dat z Internetu. Jestliže jsou nějaké balíčky ve vyrovnávací paměti (cache) na disku, stahovat se znovu nebudou a může se ve výpisu vyskytnout i hodnota 0b (nula bajtů). Velikost může být důležitá při větších aktualizacích, nebo pro toho kdo je omezen přenášeným množstvím dat z Internetu.
Po instalaci programu, pokud není potřeba aktualizovat nějaké konfigurační soubory, nic nebrání začít nainstalovaný program používat. Ten v grafických okenních manažerech naleznete obvykle v menu jako na obrázku, případně je možné program nalézt přes nějaké vyhledávací mechanismy, různě integrované do menu nebo systémových panelů.
Další často používané parametry příkazu install *
--pretend - ukázka jak by příkaz proběhl, instalace se neprovede --fetch - pouze download balíčků, instalace se neprovede --clean - odstraní stažené balíčky po instalaci a neuloží je do cache
Výpis souborů z balíčku *
Pokud nepoužíváme menu, a spouštíme programy z řádku, nebo z nějakého důvodu je potřeba znát název nějakého souboru z balíku, v tomto případě spustitelné binárky, můžeme si název zjistit dotazem do Entropy.
# equo query files rawtherapee | grep bin/ >> ### /usr/bin/rt
Ve výsledku dotazu je vidět že spuštění z řádky našeho ukázkového programu RawTherapee můžeme provést příkazem rt. To byl pouze ukázkový příklad, jak zjišťovat názvy a umístění souborů z balíčku. Může pochopitelně existovat mnoho dalších potřeb proč detaily o souborech zjišťovat. Pro jiné případy použijeme jiný grep nebo použijte příkaz bez zelené části a tím budou vypsány všechny soubory, které byly balíčkem nainstalovány.
Z kterého balíčku je soubor *
Toto je velice častá otázka. Pokládám si jí často a z nejrůznějších důvodů. Zjištění balíčku z kterého soubor pochází je velice rychlé a jednoduché. Využijeme znovu query, tedy dotaz do databáze. Příklad: Znám soubor rt umístěný v adresáři /usr/bin a chci vědět ke kterému balíčku náleží.
# equo query belongs /usr/bin/rt
>> @@ Belong Search... >> @@ Package: media-gfx/rawtherapee-3.0_pre20110426 branch: 5, [__system__] >> Installed: version: 3.0_pre20110426 ~ tag: NoTag ~ revision: 0 >> Slot: 0 >> Homepage: http://www.rawtherapee.com/ >> Description: THe Experimental RAw Photo Editor >> License: GPL-3 >> Keyword: /usr/bin/rt >> Found: 1 entries
Aktualizace jednoho balíčku *
Aktualizace jednoho balíčku nemá speciální příkaz. Provádí se stejným způsobem jako instalace.
Aktualizace konfiguračních souborů *
Pokud je aktualizován program, který využívá konfigurační soubor odlišný od instalovaného (typicky námi měněné konfigurační soubory), budeme na konci aktualizace balíčku, nebo celého systému upozorněni na nutnost aktualizovat konfigurační soubor(y). Tato upozornění se objeví vždy na konci aktualizačního procesu.
Informace o aktualizovatelných konfiguračních souborech můžeme příkazem info. Zde je se ukáže, že mám nějak změněn soubor client.conf a bude potřeba ho ručně aktualizovat.
# equo conf info
Aktualizaci konfiguráků spustíme příkazem …
# equo conf update
Na obrázku je vidět příklad aktualizace výše uvedeného konfiguračního souboru client.conf z balíčku Equo. Aktualizace je podobná Gentoo programům cfg-update nebo etc-update.
Nejdříve spustíme samotný update (1). Vypíše se seznam souborů určených k aktualizaci označených čísly a seznam akcí (2), také číselně značený. V našem případě je soubor pouze jeden a tak má jedničku. Seznam akcí má záporná čísla, aby se akce odlišily od číslování souborů. Typicky nyní napíšeme číslo souboru, který chceme aktualizovat, takže stiskneme 1 a potvrdíme.
Nyní se zobrazí samotný text (3) konfiguračního souboru s názvy souborů v hlavičce tak, jak chce update soubor měnit. Jestliže je řádek na počátku označen mínusem (modré řádky) bude se odebírat, jestliže plusem (zelené), bude se přidávat. Takto je přesně vidět jak se výsledný soubor změní pokud využijeme výchozí akci, aktualizaci novým souborem. K dispozici dostaneme ale větší seznam akcí (4), které můžeme provést. Jelikož vidím v textu souboru (3), že nic nového nepřibylo, aktualizaci odstraním volbou 2. Tím zůstane původní konfigurák nezměněn. Samozřejmě jak je z proveditelných akcí vidět, je možné provést kompletní přepsání konfiguračního souboru novým aktualizovaným z instalovaného balíčku volbou 1, nebo, pokud nejsme spokojeni ani s jednou automatickou akcí, ruční interaktivní aktualizace volbou 4. Tato volba spustí diff, kde je shell rozdělen na dvě části se starým a novým souborem a my pak při postupném zobrazováním změn vybíráme levou nebo pravou polovinu do finálního souboru.
Odinstalace balíčku *
Také se někdy potřebujeme nějakých balíčků zbavit. Deinstalace se provádí magickým slůvkem remove. Jsou zde ale dvě možnosti. Odebrání balíku se všemi závislostmi parametrem deep. Pokud si potrpíme na pořádek v systému, a nechceme mít instalovaný nepotřebný balast, vždy tento parametr použijeme. Naopak v některých případech je nutné odinstalovat pouze jeden balíček, a proto v těchto případech parametr naopak nepoužijeme.
# equo remove -a media-gfx/rawtherapee >> @@ These are the chosen packages: >> # (1/1) [sabayonlinux.org] media-gfx/rawtherapee-3.0_pre20110426 [8.1MB] >> @@ Packages involved: 1 Would you like to calculate dependencies ? [Yes/No] >> @@ These are the packages that would be removed: >> ## [sabayonlinux.org] media-gfx/rawtherapee-3.0_pre20110426 [8.1MB] >> @@ Packages needing to be removed: 1 >> @@ Freed disk space: 8.1MB >> @@ Total bandwidth wasted: 2.2MB Would you like to proceed ? [Yes/No]
Na prvním příkladu je vidět deinstalace bez závislostí. Na dalším příkladu níže je vidět, jak nám Equo nabízí deinstalaci dalších programů, které jsou potřeba pro běh RawTherapee jestliže přidáme parametr deep. V obou případech budou odebrány programy vyznačené zeleně.
Odinstalaci jsem v předchozím případě neprovedl, abychom si mohli předvést další příklad. Pokud bychom chtěli provést deinstalaci programu dev-cpp/gtkmm ať už z jakéhokoli důvodu, systém zjistí, že na něm závisí RawTherapee (a ten závisí na dalších, což zjistíme při použití deep), a bude chtít správně odinstalovat všechny programy.# equo remove -a media-gfx/rawtherapee --deep >> @@ These are the chosen packages: >> # (1/1) [sabayonlinux.org] media-gfx/rawtherapee-3.0_pre20110426 [8.1MB] >> @@ Packages involved: 1 Would you like to calculate dependencies ? [Yes/No] >> @@ These are the packages that would be removed: >> ## [sabayonlinux.org] dev-cpp/pangomm-2.28.1 [1.7MB] >> ## [sabayonlinux.org] media-libs/libiptcdata-1.0.4 [2.6MB] >> ## [sabayonlinux.org] dev-cpp/gtkmm-2.24.0 [9.5MB] >> ## [sabayonlinux.org] dev-cpp/atkmm-2.22.4 [1.8MB] >> ## [sabayonlinux.org] media-gfx/rawtherapee-3.0_pre20110426 [8.1MB] >> ## [sabayonlinux.org] dev-cpp/cairomm-1.9.8 [1.6MB] >> ## [sabayonlinux.org] dev-cpp/glibmm-2.24.2-r1 [17.8MB] >> @@ Packages needing to be removed: 7 >> @@ Freed disk space: 43.0MB >> @@ Total bandwidth wasted: 8.4MB Would you like to proceed ? [Yes/No]
# equo remove -a dev-cpp/gtkmm --deep >> @@ These are the chosen packages: >> # (1/1) [sabayonlinux.org] dev-cpp/gtkmm-2.24.0 [9.5MB] >> @@ Packages involved: 1 Would you like to calculate dependencies ? [Yes/No] >> @@ These are the packages that would be removed: >> ## [sabayonlinux.org] media-gfx/rawtherapee-3.0_pre20110426 [8.1MB] >> ## [sabayonlinux.org] dev-cpp/gtkmm-2.24.0 [9.5MB] >> ## [sabayonlinux.org] dev-cpp/glibmm-2.24.2-r1 [17.8MB] >> ## [sabayonlinux.org] dev-cpp/pangomm-2.28.1 [1.7MB] >> ## [sabayonlinux.org] dev-cpp/atkmm-2.22.4 [1.8MB] >> ## [sabayonlinux.org] dev-cpp/cairomm-1.9.8 [1.6MB] >> ## [sabayonlinux.org] media-libs/libiptcdata-1.0.4 [2.6MB] >> @@ Packages needing to be removed: 7 >> @@ Freed disk space: 43.0MB >> @@ Total bandwidth wasted: 8.4MB Would you like to proceed ? [Yes/No]
Normálně bychom dali YES a spustili tak odinstalační proces. My mu to ale nedovolíme, jelikož chci systém připravit pro další test a tak balíček odinstalujeme bez všech závislostí s parametrem nodeps, čím systém uvedeme do mírné nekonzistence a zároveň se tím naučíme použití parametru nodeps.
# equo remove -a dev-cpp/gtkmm --nodeps >> @@ These are the chosen packages: >> # (1/1) [sabayonlinux.org] dev-cpp/gtkmm-2.24.0 [9.5MB] >> @@ Packages involved: 1 Would you like to remove them now ? [Yes/No] >> @@ These are the packages that would be removed: >> ## [sabayonlinux.org] dev-cpp/gtkmm-2.24.0 [9.5MB] >> @@ Packages needing to be removed: 1 >> @@ Freed disk space: 9.5MB >> @@ Total bandwidth wasted: 1.8MB Would you like to proceed ? [Yes/No]
Údržba
Konzistence Entropy *
V předchozím příkladu odpovíme YES a tím se odinstaluje jeden balíček, čímž dojde, jak jsem již psal, k simulovanému poškození závislostí. Na konci deinstalací programů prověřuji systém zda mu něco nechybí příkazem na test závislostí deptest (dependency test). Doporučuji tento příkaz spouštět vždy, když provádíte odinstalaci nějakých programů, nebo chcete prověřit konzistenci systému. Tento příkaz by také měl objevit nekonzistenci našeho příkladu.
# equo deptest >> @@ Running dependency test ... >> @@ These are the dependencies not found: >> # >=dev-cpp/gtkmm-2.12:2.4 >> # Needed by: >> # media-gfx/rawtherapee-3.0_pre20110426 >> @@ Installing available packages in 10 seconds ... >> @@ Calculating dependencies ... >> ## [N] [sabayonlinux.org] dev-cpp/gtkmm-2.24.0|0 >> @@ Packages needing to be installed/updated/downgraded: 1 ...... >> @@ Installation complete.
Na simulovaném případě je vidět jak systém chybějící balík našel a následně doinstaloval. Pokud jako já nepoužijete dotaz (parametr -a), dostaneme 10 sekund na rozhodnutí zda pokračovat či přerušit instalaci chybějících balíků. Toho si můžete všimnout na konci části zvýrazněné zeleně, v této chvíli máte čas běh programu přerušit klávesovou zkratkou Ctrl+C. Pak už se program automaticky nainstaluje. Část výpisu jsem vyřízl o nepotřebnou část a nahradil tečkami.
Čištění dočasných souborů *
Jak už jsem uvedl někde výše, mohou se stažené balíčky ukládat ve vyrovnávací paměti Entropy neboli cache. Cesta ke staženým souborům se může mírně lišit podle architektury a proměnlivou část jsem vyznačil zeleně.
/var/lib/entropy/client/packages/packages/x86/5/
Jestliže potřebujeme tyto dočasné soubory odstranit, třeba z důvodu uvolnění diskového prostoru, použijeme na to Equo
# equo cleanup
To je tak pro začátek vše to nejdůležitější z praktických hrátek s Entropy.
Luděk Melichar
- Entropy 01 – úvod
- Entropy 02 – dráždíme Equo bosou nohou
- Entropy 03 – maskování, test knihoven a přepínač jádra
- Entropy 04 – polámal se mraveneček…
- Entropy 05 – bezpečnostní aktualizace Sabayonu