Tento příspěvek je 3. částí série Entropy

Maskujeme, testujeme, přepínáme

V dnešním dílu o balíčkovacím systému Sabayonu, Entropy, se podíváme na další možnosti systému, jako je maskování různých verzí balíčků, downgrade programů, oprava chybějících knihoven a na závěr, trochu netypicky, na přepínač jader. Předpokládám znalost některých příkazů z minulého dílu, na které dnes navážu.

Aktualizace 13.10.2013

Maskování

K čemu je to dobré? *

Maskování balíčků slouží ke skrytí určitých verzí balíčků z Entropy. Jakmile se balíček zamaskuje, Entropy balíček, odpovídající verzi maskované, nebude nabízet k upgradu a ani k instalaci. Pokud se pokusíte o instalaci takového zamaskovaného balíku dopadne to nějak takto

To se dá využít v mnoha případech. Obvykle ale, pokud trpí nová verze programu po aktualizaci nějakou chybou, nebo jí z nějakého důvodu nechceme. Upgrade je potom řízený, což můžeme ocenit zvláště u důležitých systémových balíků. Občas se stane, že nefunkčnost zjistíme až po instalaci aktualizace a tak musíme nejdřív provést …

Downgrade *

V případě požadovaného downgradu, neboli návratu na předchozí verzi balíčku, není situace tak růžová jako v Gentoo. Pokud balíček nižší verze je v Entropy, máme z poloviny vyhráno, ale to není příliš časté, a tak nás zachrání jedině naše cache, o které jsem se zmínil minule, v adresáři

/var/lib/entropy/client/packages/

Jestli je balíček s názvem “balicek” v cache se zjistí příkazem ls. Cesta se může lišit podle architektury.

$ ls /var/lib/entropy/client/packages/packages/x86/5/ | grep balicek

Pokud balíček v cache není bude nutné instalovat program pomocí Emerge z Portage, ale o tom jindy. Nyní uvažujeme, že v cache balíček je.

Instalace nižší verze se pak provede příkazem equo install s celou cestou k souboru s balíčkem,  jak je vidět na příkladu downgrade programu Pidgin

# equo install -a /var/lib/entropy/client/packages/packages/x86/5/net-im:pidgin-2.9.0\~1.tbz2

 

Dovngrade programu pak v konzoli vypadá nějak tak jako na obrázku.

 

V první části si všimněte že Entropy pozná, že se jedná o downgrade (1), stejně jako při kalkulaci závislostí je vidět jak Entropy balíček označí značkou [D] jako downgrade (2). Pokud by balíček nyní nebyl zamaskován, Entropy by ho nainstalovala zpět při příští aktualizaci. Proto se nyní vrhneme na maskování…

 

Jak maskovat *

Maskování se dá provádět pomocí Equo nebo ručně. Pomocí Equo je maskování velice omezené. Například nelze maskovat rozsahy, nebo verzi která není momentálně obsažená v Entropy, což může být občas svazující. Příkaz na uvedený příklad maskováním pomocí Equo pak může vypadat takto:

# equo mask net-im/pidgin-2.9.0~2

Tímto příkazem se zamaskuje vydání (release) 2 verze 2.9.0. Odmaskování se provádí stejným formátem, ale příkazem unmask. Maskování a odmaskování vypadá takto

 

Použití package.mask *

Kdo je ale zvyklý na komfortnější maskování z Gentoo, řekne si asi, že použití equo není nic pro něj, ale Entropy nabízí lepší možnosti maskování. To se ale musí provádět ručně a pravidla lze nalézt v souboru

/etc/entropy/packages/package.mask

Maskování pomocí tohoto souboru si probereme detailněji, protože to je to pravé ořechové.

Pravidla pro maskování balíčků *

Níže uvedeným příkazem v souboru /etc/entropy/packages/package.mask se …

  • nebudou nabízet instalace programu balicek verze stejné nebo větší než 1.2.3

# >=net-im/balicek-1.2.3

  • nebudou nabízet instalace programu balicek verze stejné nebo větší než 1.2.3 vydání 2

# >=net-im/balicek-1.2.3~2

  • nebudou nabízet instalace programu balicek

# net-im/balicek

  • nebudou nabízet instalace programu balicek verze menší než 1.2.3

# <net-im/balicek-1.2.3

  • nebudou nabízet instalace programu balicek ze slotu jedna

# net-im/balicek:1

  • nebudou nabízet instalace programu balicek verze stejné nebo větší než 1.2.3 verze jádra 2.6.23-sabayon-r1

# >=net-im/balicek-1.2.3#2.6.39-sabayon

Příklad použití *

Chceme li třeba zamaskovat našeho příkladového Pidgina od verze 2.9.0 release 2 spustíme jako su příkaz

# echo “>net-im/pidgin-2.9.0~1” >> /etc/entropy/packages/package.mask
nebo jiný zápis se stejným výsledkem
# echo “>=net-im/pidgin-2.9.0~2” >> /etc/entropy/packages/package.mask

Co je vlastně maskované? *

Při použití pravidel v souboru package.mask, je možné se podívat rovnou do souboru třeba příkacem cat. Maskované balíky jsou také vidět v Sulfuru, po zapnutí pokročilého módu. Překvapivě, ale nevidím maskované balíky ve výsledcích příkazů equo search nebo equo match, což mě poněkud rozladilo a tak jsem na to zkusil zadat bug na Sabayon bugzillu. Nicméně ve verbose režimu maskování zobrazené je:

V entropy jsou maskované balíčky zobrazeny přehledně, i když ne příliš detailně

Hledání duchů – libtest

Minule jsme se naučili kontrolovat chybějící závislosti a dnes se naučíme hledat chybějící knihovny.

Celkem nedávno jsem viděl nefunkční WM XFCE na jednom PC s Sabayonem, kvůli jedné knihovně. Žádné reinstalace balíčků nepomáhaly. Bylo tedy nutné hledat pomoc jinde, a nalezl jsem ji právě ve zmíněném příkazu.

Nemusí ale v systému knihovny chybět, mohou i přebývat. Na příkladu z mého systému na kterém píšu článek je vidět knihovna, která nikam nepatří a kontrola k ní nenašla odpovídající balíček. To se nám hodí a použijeme to rovnou jako ukázkový příklad.

Jestli knihovna opravdu nemá žádného rodiče prověříme  příkazem který jsme se učili minule equo query belongs.

Následně je možné knihovnu ze systému smazat a znovu otestovat konzistenci příkazem libtest. Nyní to vypadá lépe a přebývající zatoulaná knihovna z výpisu zmizela.

Přepínač jádra – kernel-switcher

Přepínač jádra přímo souvisí s upgrady jádra v Entropy a tak jsem ho zařadil do této série i když by se mohlo zdát, že je tu toto téma poněkud navíc. V Sabayonu by nemělo docházet k automatickému upgradu na vyšší verzi jádra. Je to především ochrana samotného uživatele před nechtěným přepnutím jádra. Jelikož jsem již viděl jeden případ nefunkčnosti modulu wifi karty v novější verzi jádra, považuji ochranu uživatele sice za užitečnou,  ale přesto věřím jen sobě a proto mám pojistku v souboru s maskováním, jak jste si mohli všimnout výše 😉 Ale dost řečí, jdeme na věc.

Seznam dostupných jader vypíšeme listem

# kernel-switcher list

aby nebyl výpis kilometrový pokusím se ho zkrátit

# kernel-switcher list -q
[sabayonlinux.org] sys-kernel/linux-openvz-2.6.32.11.1
[sabayonlinux.org] sys-kernel/linux-openvz-2.6.32.8.1
[sabayonlinux.org] sys-kernel/linux-rt-2.6.33.9-r31
[sabayonlinux.org] sys-kernel/linux-rt-3.0-r3
[sabayonlinux.org] sys-kernel/linux-sabayon-2.6.36-r1
[sabayonlinux.org] sys-kernel/linux-sabayon-2.6.37-r3
[sabayonlinux.org] sys-kernel/linux-sabayon-2.6.38-r6
[sabayonlinux.org] sys-kernel/linux-sabayon-2.6.39-r9
[sabayonlinux.org] sys-kernel/linux-server-2.6.34
[sabayonlinux.org] sys-kernel/linux-server-2.6.35-r6
[sabayonlinux.org] sys-kernel/linux-server-2.6.36
[sabayonlinux.org] sys-kernel/linux-server-2.6.37-r3
[sabayonlinux.org] sys-kernel/linux-server-2.6.38-r6
[sabayonlinux.org] sys-kernel/linux-server-2.6.39-r9
[sabayonlinux.org] sys-kernel/linux-server-3.0-r4
[sabayonlinux.org] sys-kernel/linux-vserver-2.3.0.36.31
[sabayonlinux.org] sys-kernel/linux-xen-dom0-2.6.34-r4
[sabayonlinux.org] sys-kernel/linux-xen-domU-2.6.34-r4

Jelikož nová verze větve linux-sabayon není, zkusím přepnout pokusně na starší

# kernel-switcher switch sys-kernel/linux-sabayon-2.6.38-r6

Na počátku zkráceného výpisu jsou vidět výpočty závislostí (1) a instalovat se budou i balíky příslušné k instalované verzi jádra, na konci obrázku pak pokyn k restartu počítače (2). Před restartem, ale je třeba provést ještě některé úkony.

Zkontrolujte, že máte vybráno nejnovější jádro a parametrem set případně změňte, podobně jako v dalších příkladech.

# eselect bzimage list

Někdy je potřeba přepnout OpenGL z výchozích knihoven zpět.

 # eselect opengl list
Available OpenGL implementations:
[1] nvidia
[2] xorg-x11 *

a přepneme na nvidii

# eselect opengl set 1
Switching to nvidia OpenGL interface… done

Zkontrolovat symbolické linky na zdrojáky nového jádra a případně přepnout opět, jako v minulém případě parametrem set.

# eselect kernel list
Available kernel symlink targets:
[1]   linux-2.6.37-sabayon
[2]   linux-2.6.38-sabayon *
[3]   linux-2.6.39-sabayon

A na závěr obě kontrolní rutiny pro kontrolu konzistence systému

# equo deptest
# equo libtest

Nyní je možné restartovat počítač

před restartem:

$ uname -a
Linux 2.6.39-sabayon #1 SMP Mon Jul 25 16:45:41 UTC 2011 i686 Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz GenuineIntel GNU/Linux

po restartu po vybrání příslušné položky v grubu:

$ uname -a
Linux 2.6.38-sabayon #1 SMP Sat Jul 30 17:10:18 UTC 2011 i686 Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz GenuineIntel GNU/Linux

Po restartu máme zvolenou verzi jádra funkční.

Screeny byly pořízeny s nedokončenou verzí češtiny pro Entropy
Luděk Melichar