Portál AbcLinuxu, 5. května 2025 09:18
Teď, když máme Paludis nainstalovaný, si povíme něco více o jeho použití, nastavení a keších.
Tento seriál od začátku předpokládá jakousi čtenářovu základní znalost fungování Portage, takže abych v tomto duchu pokračoval, zde je přehled přepínačů klientů paludis
a emerge
, kterými docílíte stejného nebo podobného výsledku:
emerge | paludis | poznámka |
(nic) | -i | Paludis nemá nastavenou výchozí akci na instalaci |
-C | -u | odinstaluje zadané balíčky |
-p | -p | pouze vypíše, co se bude dít, a skončí |
-a | (nic, nemá ekvivalent) | Paludis je neinteraktivní, ale lze to částečně obejít, čtěte dále |
--sync | -s, --sync | Paludis synchronizuje všechny vzdálené repozitáře |
-f | -fi | pouze stažení zdrojových souborů |
-O (velké o) | -0 (nula, zastaralé), --dl-deps-default discard |
ignorace závislostí |
-1 | -1 | nepřidávat balíky do skupiny world |
-e | -e (zastaralé), --dl-reinstall always | vynutí přeinstalování daných balíčků |
-v | (nic) | Paludis je upovídanější sám o sobě |
-q | --compact | kompaktnější výstup |
-N | --dl-reinstall if-use-changed | přeinstalovat balíčky, pokud se změnilo USE |
--keep-going | --continue-on-failure if-satisfied | v případě chyby při kompilaci skočí na další balíček (se splněnými závislostmi) |
A zde je pár ukázek toho, jak docílit různých věcí, které umíte s Portage, pomocí Paludisu.
Aktualizace všech balíčků v systému:
# Portage emerge -vuD world # Paludis paludis -i everything
Odinstalace nepotřebných balíčků. Pozor, s Portage to není bezpečné, může se pokusit odstranit potřebné balíčky. S přepínačem -p
se vypíše pouze seznam balíčků, které by byly odinstalovány.
emerge --depclean -p paludis --uninstall-unused -p
Přeinstalování všech systémových balíčků. Tento příkaz začínající uživatelé občas považují za všelék, ale není tomu tak, má dost specifické využití (aby mělo spuštění vůbec nějaký smysl).
emerge -e system paludis --dl-reinstall always -i system
Paludis umí také věci, ke kterým přímo v Portage ekvivalent nenaleznete.
Přeinstalování všech live balíčků, které jsou starší než týden:
paludis -i world --dl-reinstall-scm weekly
Výpis souborů patřících danému balíčku:
paludis -k sys-libs/glibc
Který balíček poskytuje daný soubor, zjistíte následovně:
paludis -o /usr/kde/3.5/bin/kabc2mutt
V minulém díle jsem naznačil, že konfiguraci maskovaných balíčků není třeba mít v jednom souboru, ale lze ji rozdělit do více souborů. To platí pro všechny konfigurační soubory s příponou .conf
. Například místo souboru package_mask.conf
můžete vytvořit adresář package_mask.conf.d
a všechny soubory uvnitř s příponou .conf
Paludis načte, jako kdyby šlo o jeden soubor. Můžete si například vytvořit zvlášť soubor pro balíčky, které maskujete z toho důvodu, že potřebujete jejich starší verze, a oddělit je tak od těch, které jsou rozbité (například v určité verzi Wine nefunguje vaše oblíbená hra) a podobně.
Dále bych zmínil proměnnou prostředí PALUDIS_OPTIONS
, do které můžete vypsat přepínače, které se Paludisu předají při každém spuštění. Můžete ji definovat třeba v globálním bashrc
, pokud používáte Bash. Na Gentoo je to soubor /etc/bash/bashrc
. Ještě než se rozepíšu o různých přepínačích, které byste do této proměnné mohli chtít zadat, zde je ukázkový zápis:
export PALUDIS_OPTIONS="--log-level silent --debug-build none --checks none"
Možná jste narazili na to, že Paludis občas vypisuje až moc detailů, které vás jako uživatele nezajímají. Je to tím, že je ve výchozím nastavení povolené vypisování QA informací a varování. Úplné vypnutí těchto výpisů sice vývojáři nedoporučují, ale nikdy jsem s tím neměl problém a dočasně povolit je můžete vždycky. Vypnutí docílíte předáním --log-level silent
.
Paludis ve výchozím nastavení instaluje binárky bez debugovacích informací (stripnuté) do standardních umístění (jako Portage), ale navíc ještě ukládá jejich debugovací verze odděleně do /usr/lib/debug
. Pokud si to nepřejete (tzn. pokud nejste vývojáři), lze to zakázat předáním --debug-build none
. Pokud chcete naopak instalovat pouze binárky s debugovacími informacemi, předejte --debug-build internal
. Jsou potom ovšem pochopitelně větší a často docela znatelně.
U některých balíčků se po sestavení spustí testovací fáze (v ebuildu funkce src_test()
), která ověřuje, zda se sestavený program chová tak, jak by měl. Ve výchozím nastavení se tento test spouští, pokud není explicitně zakázaný v ebuildu. Testování lze vypnout předáním --checks none
. Tolik tedy k přepínačům.
Zajímavou věcí jsou sety. Jde o skupiny balíčků, které si můžete sami definovat. Znáte například již sety system
(systémové balíčky), world
(uživatelem explicitně vyžádané balíčky) a nově everything
(všechny balíčky). Každý uživatelský set má svůj konfigurační soubor pojmenovaný ve tvaru název-setu.conf
a uložený v adresáři /etc/paludis/sets
. Například browsers.conf
s obsahem:
kde-base/konqueror www-client/elinks www-client/mozilla-firefox www-client/opera
zahrne vypsané balíčky do setu browsers. Vy pak můžete spustit třeba něco jako:
paludis -i browsers
Z toho vyplývá, že je vhodný set pojmenovat tak, aby jeho název nekolidoval s názvem nějakého balíčku. V takovém případě má totiž prioritu uživatelský set.
V části o nastavení Paludisu se nelze nezmínit o velice užitečné overlayi paludis-extras, kde najdete nejrůznější vychytávky (hooky) pro Paludis a opatchované verze různých programů, aby dovedly spolupracovat nejen s Portage, ale i s Paludisem. Popíšu některé z těch, které používám.
eselect
, sloužící ke správě hooků, které bude Paludis používat. Nezapomeňte povolit USE="paludis_hooks_eselect"
u všech hooků, se kterými má spolupracovat.-a
(--ask
), který znáte z emerge
. Pozor, v současnosti nefunguje v kombinaci s -u
(odinstalace)./usr/share/doc
) a druhý komprimuje manuály a info stránky (/usr/share/{man,info}
). Údajně může občas způsobit problémy při instalaci, zatím jsem ovšem na žádný nenarazil.eix
(čte nastavení Paludisu, ne Portage).portage-utils
, která spolupracuje s Paludisem.binutils-config
upravená pro spolupráci s Paludisem.module-rebuild
, která spolupracuje s Paludisem.* Některé programy jsou pod stejným názvem v této overlayi i v oficiálním stromu. Chcete-li zajistit, aby se vždy použila verze z overlaye, stačí přidat mezi maskované balíčky následující:
sys-devel/binutils-config::gentoo >=sys-kernel/module-rebuild-0.5::gentoo
Také nezapomeňte povolit USE="paludis"
, jinak se některé balíčky nesestaví s jeho podporou.
Keše slouží ke zrychlení různých časově (a I/O) náročnějších činností.
Toto je keš obsahující metadata. Díky ní není třeba načítat každý ebuild pokaždé, když spustíte Paludis. Oficiální strom již s touto keší přichází, takže tam ji nemusíte povolovat, nicméně většina overlayí to tak nemá. Pro povolení přidejte do konfigurace repozitáře například následující. Cestu si podle potřeb upravte a hlavně potom adresář vytvořte:
write_cache = /var/cache/paludis/metadata
Tato keš zrychluje nalezení kategorie balíčku, pokud ji na příkazové řádce nezadáte. Aktivuje se přidáním následujícího do konfigurace repozitáře. (Cesta je opět volitelná a adresář je třeba vytvořit.)
names_cache = /var/cache/paludis/names
Zrychluje načítání virtuálních balíčků. Virtuální balíček je například virtual/jdk
a závisí na něm ebuildy, které fungují s libovolnou implementací JDK. Dříve se místo virtuálních ebuildů používala proměnná PROVIDES, kterou obsahoval každý ebuild, který byl součástí nějakého virtuálního balíčku. S tím se pracuje hrozně pomalu, protože je třeba prohledat všechny ebuildy, což může trvat klidně přes minutu, kdežto s touto keší to pak netrvá ani sekundu. Aktivuje se pomocí:
provides_cache = /var/cache/paludis/provides # provides je soubor!
Přestože zde nerozebírám kompatibilitu s Portage, za zmínku stojí fakt, že pokud budete používat keše names a provides a potom k nějaké operaci z nějakého důvodu použijete Portage, tak ta je nebude používat, ale ani aktualizovat, takže to potom musíte udělat ručně pomocí příkazu:
paludis --regenerate-installable-cache # pokud používáte tyto keše i pro VDB repozitář, potom spusťte i toto: paludis --regenerate-installed-cache
case "${PN}" in foo|bar) # tady nastav cokoliv ; esac
/etc/paludis/bashrc
(jako třeba CFLAGS pro jednotlivý balíky), byl by k tomu potřeba wrapper.
emerge -pf BALÍK
a tento seznam jsem prohnal vlastním skriptem, který vynechal ty, které jsem už v distfiles měl.
Tahle funkce je neocenitelná při off-line aktualizaci.
Přidává přepínač -a (--ask), který znáte z emerge. Pozor, v současnosti nefunguje v kombinaci s -u (odinstalace).Zajimave, o vikendu jsem neco odinstalovaval a mam pocit, ze jsem ze zvyku pouzil "-a" a ono to fungovalo.
root@amd64 ~ # _paludis -au pv [...] paludis-ask> * Do you want to perform this operation ... paludis-ask> Type y/yes/ENTER to continue ... [Y/n] n Zabit (SIGKILL) /usr/local/bin/_paludis: line 3: 29505 Zabit (SIGKILL) /usr/bin/_paludis_wrapper.bash "$@" dave@amd64 ~ $
kejpi ~ # paludis -au psi Building unmerge list... done ... paludis-ask> * Do you want to perform this operation ... paludis-ask> Type y/yes/ENTER to continue ... [Y/n] n Zabit (SIGKILL)Instalace:
kejpi ~ # paludis -ai net-im/psi Building target list... Building dependency list... These packages will be installed: ... Total: 1 package (1 rebuild) paludis-ask> * Do you want to perform this operation ... paludis-ask> Type y/yes/ENTER to continue ... [Y/n] n Zabit (SIGKILL)Prijde mi to fungujici podle ocekavani...
module-rebuild * Upravená verze module-rebuild, která spolupracuje s Paludisem.Mozna by stalo za zminku, ze tonto hook je jiz zastaraly a misto neho je vhodne pouzivat "reconcilio", ktery se nainstaluje spolu s paludisem.
Ale jinak vyborny clanek. Paludis uz nejakou dobu pouzivam, ale s chuti jsem si clanek precetl, protoze se mam porad co ucit
Opatrne s tim package setem everything. Pokud se totiz pusti paludis -i everything
, muzou se nainstalovat nejnovejsi verze baliku, ktere vubec nejsou potreba. Napr. na mem systemu: gimp vyzaduje gtkhtml ve verzi 2, ale pokud bych pustil paludis -i everything
, tak se mi do slotu nainstaluje i nejnovejsi gtkhtml ve verzi 3 + vsechny jeho zavislosti uplne zbytecne.
Update systemu se provadi stejne jako s emerge - tj. paludis -i world
. Pokud chci vynutit reinstalaci vsech baliku (treba pri upgradu gcc), pouziju navic --dl-reinstall always
.
paludis -i world
je ekvivalent emerge -avu world
, když se tam přidá ještě -D (k emerge), tak už se to chová podobně jako když se předá paludisu everything (zahrne i závislosti) a o to jde.
paludis -i world
chova jako emerge -vuD world
.
paludis -pi world
nenabídl jeho aktualizaci, kdežto everything
jo.
To je pravda, samotnyho me prekvapilo, ze emerge -pvuD world
upgrade toho pv nabid (emerge sem poustel asi po roce a pul poprvy;). V tyhle situaci je teda everything
podobnejsi. Na druhou stranu, co se tyce tech zbytecnejch slotu, na ktery sem upozornoval, tak ty emerge -pvuD world
nenabizi (ale konfiguraci emerge uz moc neudrzuju, tak to muze byt i necim jinym) --- v tomhle ohledu je asi blizsi chovani paludis -pi world
. Ostatne jak pisou sami autori, paludis dela veci proste trochu jinak a stoprocentni ekvivalenty nemusi existovat.
Druha vec je, co vlastne chceme, ktery chovani vic vyhovuje. Me osobne pride chovani paludis -i world
jako to, co chci, a chovani emerge -vuD world
nebo paludis -i everything
jako horsi. Kdyz pv vyhodim z worldu, tak vzhledem k tomu, ze na nem asi tezko neco zavisi, je v systemu proste navic a neni duvod ho upgradovat a udrzovat (stejne pude pryc s nejblizsim --uninstall-unused
). Nevidim duvod simulovat hloupe chovani emerge uzitim setu everything (+ jeste problem se zbytecnymi sloty).
Problem s paludis -i everything
je v tom, ze vsechny baliky, ktere jsou nainstalovany, bere jako primarni targety. Takze ve vyse zminenym pripade (gimp a jeho zavislost na gtkhtml-2*) nainstaluje do slotu jak gtkhtml-2.x.x (protoze set everything vyzaduje gimp a gimp vyzaduje gtkhtml-2*), ale navic taky posledni verzi gtkhtml-3.y.y (protoze set everything vyzaduje gtkhtml). Ta verze 3.y.y je tam uplne zbytecne, gimp ani nic jinyho ji nepouziva, ve worldu neni. Navic mam dojem, ze paludis --uninstall-unused
funguje trochu podivne se slotama (??? kdyz je alespon jedna verze v systemu vyzadovana, tak neodinstaluje zadnou ???), takze to pak ani automaticky neodinstaluje. Podobna situace nastava vsude, kde vyzadovana a nejnovejsi verze muzou koexistovat ve slotu.
Maskovat to je samozrejme blbost. To neni situace, kdy ja _chci_ pouzivat gtkhtml a chci konkretni starou verzi. Navic si muzu v budoucnu instalovat neco, co by chtelo verzi 3; pak uz by byly ty sloty v poradku.
Jinak podle me de paludis do hloubky defaultne. paludis -i world
, upgradne vsechno, co muze. Proti everything tam chybej prave ty nesmyslny sloty s nejnovejsima verzema, na kterejch nic z worldu ani sytemu nezavisi (ani zprostredkovane, do hloubky).
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.