Hlavní navigace

Potrava pro vaši Fedoru - snadno a rychle (3)

30. 12. 2004
Doba čtení: 9 minut

Sdílet

V dnešním dílu zasáhneme do konfigurace Apt, zkusíme si přidat nové repozitáře komfortně pomocí Synapticu, vybral jsem pro vás tři zajímavé příklady, od triviálního po složitější. Ve druhé části, věnované pokročilejším uživatelům, podrobně popíšeme definici repozitáře a hlavní konfigurační soubory Apt.

Dagův repozitář

Dagův repozitář je ve standardním nastavení, ale je zablokován, doufám pouze dočasně. Obsahuje jednu z největších kolekcí balíčků ze všech ostatních repozitářů, byla by škoda z něj nečerpat. V Synapticu se v menu SettingsRepositories objeví seznam všech kooperujících repozitářů. Najdeme řádek obsahující URI http://apt.sw.be/ a sekci „dag“ (u mě se jedná o třináctý řádek). Prošedivělý řádek jednoduše zašktneme a spustíme reload(apt-get update).

V seznamu je zablokováno větší množství položek. Jednak to jsou položky typu rpm-src, což jsou adresáře obsahující balíčky určené ke kompilaci, kterých si nebudemem všímat, a jednak mirror servery některých repozitářů. Na serveru atrpms.net je mirrorováno hned několik repozitářů, osobně mám dobré zkušenosti s dostupností tohoto serveru, proto ho preferuji před primárními servery.

Pozn: Trochu předbíhám, konfigurace repozitářů je uložena v /etc/apt/sources­.list, zablokování a odblokování nějakého repozitáře se technicky provede jako zapoznámkování nebo odpoznámkování definičního řádku repozitáře. Všel lze provést ručně, stačí mít právo roota.

Flash plugin pro Mozillu

Nyní si zkusíme přidat repozitář poskytující ke stažení Flash plugin pro Mozillu/Firefox, oficiální plugin na oficiálním repozitáři od Macromedie. Parametry zjistíme na stránce macromedia.re­diris.es/site_ri­.html. Zůstaneme u Synapticu a dialogu Repositories, zadáme vytvořit nový, jako URI zadáme http://macrome­dia.rediris.es/ap­t/, do distribuce „fedora/2“, do sekce „macromedia“. Jako typ repozitáře necháme rpm.

Po jakékoliv změně konfigurace repozitářů je nutné zavolat reload (načtení seznamu dostupných balíčků), buď příkazem apt-get update, nebo pomocí tlačítka reload v Synapticu, jinak se změna neprojeví.

Pokud jsme byli úspěšní, v Synapticu Status (levý sloupec) → New in repository – vpravo se objeví „flash-plugin“. A můžeme zašktrnout k instalaci. Od této chvíle si Apt bude sám hlídat, kdy se objeví nová verze ke stažení.

Instalátory pluginů jsou řešeny inteligentně a snaží se najít všechny myslitelné instalace Mozilly i Firefoxu.

Instalace RPMka od Macromedie nemá tak hladký průběh, na jaký jsme si zvykli. Před vlastní instalací se objeví licenční ujednání (EULA) k přečtení a potvrzení souhlasu – pak teprve se RPM nainstaluje. Ne každý software v repozitáři musí být nutně open-source, a tohle je ten případ.

Poznámka: nedávno jsem zjistil, že Flash plugin nabízí i DAGův repozitář, ovšem pod názvem „mozilla-flash“. Ten odbyl licenční ujednání suchým oznámením, nenápadně umístěným v popisu balíčku, že „stažením a instalací tohoto balíčku souhlasíte s uvedenou licencí“.

Instalace Firefoxu

Pro novější Firefox musíme připojit další repozitář, který není ve standardní výbavě – FedoraExtras. Firefox jsem nevybral náhodou, rád bych na něm demonstroval jeden možný zádrhel čekající na ty, kteří si dodatečně připojí jiné repozitáře. Bohužel, aktuální verze Firefoxu 1.0 stále není v žádném mně známém repozitáři dostupná :(

Repozitář připojíme standardně: Zůstaneme u Synapticu a dialogu Repositories, zadáme vytvořit nový, jako URI zadáme http://downlo­ad.fedora.us/fe­dora/, do distribuce „fedora/2/i386“, do sekce „stable“. Parametry jsem jednoduše opsal na homepage projektu FedoraExtras. A nakonec nezapomeneme „reload“ (apt-get update).

Sliboval jsem zádrhel – takže tady je. Pokud si necháte vyhledat firefox, Synaptic stále nabízí starší verzi 0.8 z DAGova repozitáře! Pokud si necháte vypsat seznam upgradable balíčků, Firefox tam vůbec nanejdete. Stejně (ne)pochodíte, pokud zavoláte apt-get z příkazové řádky v domnění, že vám zatajuje něco Synaptic. Přitom při pohledu do repozitáře přes prohlížeč, na této adrese, zjevně balíček firefox ve verzi 0.9.3 je.

Jednoduché řešení pro nedočkavé: zobrazíme si dialogové okno „properties“ (pravé myší tlačítko nebo Ctrl+O). V kartě „Versions“ nám Synaptic prozradí seznam všech dostupných verzí, které je možné stáhnout. Tady se už nová verze neutají. Dole pod listboxem je navíc popsáno, jak si konkrétní verzi vynutit. Hlavní menu – Packages – Force version. A máme novou „ohnivou lyšku v kurníku“.

Vysvětlení: v systému repozitářů Apt jsou duplicity balíčků častý případ, ještě o tom bude řeč, Apt/Synaptic se vždy snaží vybrat ten nejvhodnější balíček a s ním pak pracuje, seznam duplicit je nutné si explicitně vyžádat. Jako nejvhodnější balíček je vybrán zpravidla ten nejnovější, tedy ten, u něhož je rozpoznáno nejvyšší číslo verze. Ale můžou se uplatnit se i jiná pravidla, např. pinování.

Konfigurace Apt podrobněji

Ve druhé části tohoto dílu podrobně popíšeme definici repozitáře, která je v souboru sources.list, a hlavní konfigurační soubor apt.conf. Pro běžné používání prakticky nic bližšího o konfiguračních souborech není potřeba znát.

Ale pokud vás Apt zaujalo nebo právě řešíte nějaký zádrhel, je tu pro vás adresář /etc/apt, kde leží všechny soubory konfigurace.

sources.list – definice repozitářů

Konfigurační soubor /etc/apt/sources­.list obsahuje seznam repozitářů a jejich URL adres, tedy adres, ze kterých se budou stahovat seznamy nabízených balíčků i balíčky samotné. Má na první pohled jednoduchou strukturu – řádkově orientovaný seznam s možností poznámek.

Příklad takové řádky může vypadat takto:

rpm http://apt.physik.fu-berlin.de/ fedora/1/en/i386 at-stable at-good at-testing 

Pozor na mezery, oddělují čtyři části definice repozitáře:

  1. rpm říká, že následující repozitář obsahuje balíčky rpm.
  2. URI adresa kořene repozitáře
  3. označení distribuce (jde jednoduše o adresář relativní ke kořenu repozitáře) odděluje balíčky pro jednotlivé verze Fedory. Repozitář navíc může obsahovat i balíčky pro jinou distribuci, než je Fedora.
  4. seznam sekcí – sub-repozitářů, komponent v debianí terminologii – oddělený opět mezerami. Obvykle oddělují balíčky podle míry otestovanosti, objevují se tu výstižné názvy jako stable,unstable, testing a podobné.

Způsob označování distribuce se teprve ustaluje, zatím můžeme najít různé formy:

fedora/1/en/i386 (ATRpms, Freshrpms, ..nejčastější forma) redhat/fc1/en/i386 (Dagův repozitář) fedora/1/i386 (Planet CCRMA) 1.5/generic (Javovské aplikace na JPackage)

Apt-get převede uvedenou definici – zamění mezery za lomítka a před název sekce přidá prefix „RPMS.“ – na tři běžné URL adresy, pro každou sekci jednu:

http://apt.physik.fu-berlin.de/ fedora/1/en/i386/RPMS.at-stable
http://apt.physik.fu-berlin.de/ fedora/1/en/i386/RPMS.at-good
http://apt.physik.fu-berlin.de/ fedora/1/en/i386/RPMS.at-testing 

(Pozn. red.: mezery do URL samozřejmě nepatří –Johanka)

Zmiňovali jsme jediný typ repozitáře – rpm. O dalších variantách repozitáře: rpm-src (repozitář zdrojových balíčků), rpm-dir (zjednodušený repozitář v lokálním adresáři) a o URI začínajících na cdrom:// nebo file:// ještě bude řeč.

ATRpms obsahuje bohatý výběr kompatibilních repozitářů a minimálně pro začátek konfiguraci není nutné upravovat.

apt.conf – konfigurace celého Apt/Synapticu

Apt-get je základní konfigurační soubor rodiny programů Apt. Jak je dobrým zvykem, najdeme ho v adresáři /etc/apt. Zde se nastavují podstatné volby systému apt, chování RPM a download balíčků. Lze nastavit timeout updatu, fake balíčky atd.

Formát voleb apt má dvě formy zápisu, řádkovou a strukturovanou. Lze libovolně kombinovat. Oba následující záznamy dělají totéž:

APT::Get::Assume-Yes "true";
APT::Get::Fix-Broken "true";

znamená to samé co:

APT {
  Get {
    Assume-Yes "true";
    Fix-Broken "true";
  };
};

V souboru apt.conf se preferuje tato stukturovaná forma.

Všechny volby z apt.conf lze nastavit i do příkazové řádky programu apt-get, pouze je nutné přidat rovnítko mezi položku a její hodnotu:

apt-get -o APT::Get::Assume-Yes="true" update
apt-get -o APT::Get::Assume-Yes="true" -o
APT::Get::Fix-Broken="true" update

Více o apt.conf naleznete v manuálové stránce věnované přímo tomuto konfiguráku. Pokud dáváte přednost názorným příkladům – téměř kompletní seznam včetně vzorových hodnot je v souboru /usr/share/doc/apt-xxx/examples/con­figure-index (mám podezření, že na některé AptRpm nereaguje, například ze sekce Debug)

Pozor na znaky uvozující poznámku! V souboru apt.conf je znakem pro komentář zdvojené lomítko // jako v C++ či v Javě, v sources.listje to # (hešmark) jako v Perlu.

Špatná zpráva – zcela chybí dokumentace ke specifickým volbám pro RPM. Manuálová stránka je kompletní kopie debianího apt.conf včetně voleb pro dpkg (obdoba programu rpm, ale pro Debian) a dselect, které na Fedoře moc neužijeme. To samé platí o přiložené textové dokumentaci a vzorových souborech. Specifické dokumentace je pomálu i na Internetu, informace jsem sbíral na [GN1], [PM1] a [ARCL]

Dobrá zpráva – defaultní nastavení je většinou postačující, proxy lze nastavit pohodlně v Synapticu, potřebu upravovat budou mít pouze experimentálně ladění jedinci.

Poznámka: osobně jsem upravoval apt.conf naposledy, když jsem si experimentálně přeložil Xorg ze zdrojových balíčků a nainstaloval ho místo XFree86. Chybou v definici balíčků Xorg od RedHatu se ale porušily některé závislosti a bylo nutné nastavit ručně volbu RPM::Fake-Provides, aby si systém stále myslel, že je XFree86 nainstalováno. Novější verze to mají opraveno, taže Fake-Provides není třeba.

Pinování

Pinninig – lze hrubě popsat jako upřednostňování některých repozitářů, případně sekcí nebo jednotlivých balíčků. Upřednostňování se nastavuje v souboru /etc/apt/prefe­rences, preferenci určuje číslo pinu, zpravidla od 0 do 1000. V Apt od ATRpms je přednastavena preference repozitářů ze skupiny okolo ATRpms, ty mají piny 996 nebo 995, zatímco dodatečně přidaný repozitář FedoraExtras 500 – defaultní nastavení.

Pro pinování bohužel neexistuje jednoduchý nástroj, žádná grafická nadstavba, ani Synaptic, a problematika je celkově složitější, nebudu se jí hlouběji věnovat, více se dočtete na manuálové stránce apt_preferences a například v [RS] a [AHWT.3]. Ruční kontrola verze a funkce Force version běžnému uživateli postačí.

Poznámka pro pokročilé uživatele: pokud vyzkoušíte použít místo „Force version“ funkci „Distribution – Default archive“, stejně se nevybere verze Firefoxu z FedoraExtras – protože preferenční piny defaultních repozitářů jsou příliš vysoké a tohle je nepřebije.

Závěr

Veden ohlasy na předchozí díly, rozhodl jsem se věnovat větší část dílu teorii a osvětlit vztah mezi Rmp, Apt, Yum a Up2date a podrobněji popsat, co se přesně dělá při běžné instalaci, krok po kroku. Podrobněji si popíšeme adresářovou strukturu repozitáře.

Zdroje

[PM1] kolekce tipů a triků a nedokumentovaných vlastností Apt-Rpm od Panu Matilainena. Jsou tam i odkazy na ukázky ve skriptování v Pythonu i LUA.

[GN1] článek od Gustavo Niemeyera (autor portu Apt pro Rpm) na LWN.net o AptRmp, zajímavá diskuse, jeden z mála zdrojů k spec. parametrům a pokročilým technikám s apt-rpm. V diskusi najdete také několik srovnání Apt versus Yum.

[AHWT] Nastavování preferences – pinning, APT HOWTO na debian.org

[AHWT.3] kapitola 3, zajímavá je poslední kapitola 3.10 How to keep specific versions of packages installed (complex), dále Chapter 6 – Working with source packages.

[RS] Roderick Schertler -Using APT with more than 2 sources, problematika apt pinning v příkladech

[ML-Ar] AptRpm uživatelský mail-list, k běžným věcem vám ale bude stačit ten na ATRpms, mail-list Apt-Rpm

[RA1] Roberto Alsina – Článek o APT, jsou tam zmiňovány repozitáře jako ATRpms, FreshRPMS a KDE-RedHat na pycs.net. Trochu vnáší zmatek do terminologie, sekcím říká repozitáře atd.

[ARCL] AptRpmchangelog a hlavně starší chagelogy, oficiální changelogy projektu, mnoho informací o speciálních vlastnostech AptRpm, speciální volby, odlišnosti oproti Debianímu Apt.

[GN3] vytváříme vlastní repozitáře pomocí genbasedir, oficiální tutorial na stránkách projektu od Gustavo Niemeyera

man:/apt.conf

CS24 tip temata

man:/sources.list

man:/apt_prefe­rences