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/Linuxpo 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
- 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