This is an old revision of the document!
Není žádný med instalovat Tred
Tak už je to tady. Na můj počítač (zen
) dorazilo nové Ubuntu 14.04. A leccos přestalo fungovat. Programy, které jsou napsané v Perlu a závisí na spoustě knihoven, potřebují ty správné knihovny pro daný operační systém (14.04) a danou verzi Perlu. Knihovny stahované z internetových úložišť se totiž většinou kompilují; kdyby tam ležely jen Perlí zdrojáky, byl by to mnohem menší problém, ale samozřejmě by to běželo pomaleji.
Dosud jsme na ÚFALu udržovali repozitáře knihoven (“perl repo”), ale do nich to taky někdo musel nainstalovat a toto řešení mělo své nevýhody. Martin teď nově objevil nástroj Perlbrew, který umožňuje celkem bezbolestně přepínat mezi jednotlivými verzemi Perlu a instalovat do nich centrálně knihovny z CPANu, i když člověk nemá práva správce. V obou případech tu ale máme problém, který jsme zatím nevyřešili: knihovnu Tk, která poskytuje grafické uživatelské rozhraní a závisí na ní Tred.
Když se Tk nainstaluje z CPANu na Ubuntu 14.04 (cpanm Tk
), tak nenajde správné fonty. Projeví se to hned, i menu a popisky oken vypadají dost hrozně, dají se ale alespoň přečíst. Když ale v Tredu otevřete třeba arabský strom, tak nemáte šanci z něj cokoliv poznat. Sice se zdá, že to je nějaký font, který arabštinu obsahuje, ale Tk ho zobrazí v hrozném rozlišení, kostičkovaně a bez antialiasingu. Platí to pro všechny tři verze Perlu, které momentálně náš Perlbrew obsahuje. Problém je zřejmě spíš v Ubuntu: z logu build.log
, který vypíše cpanm
, to vypadá, že neexistují nějaké cesty a/nebo céčkové hlavičkové soubory, které podle názvu zřejmě s fonty souvisí.
Zbývá ještě jedna cesta: použít předpřipravený instalační balíček pro Ubuntu:
sudo apt-get install perl-tk
Jak je zřejmé, jsou k tomu potřeba nadstandardní práva, takže to může udělat pouze správce, případně uživatel, kterého správce oprávnil. Současně to ale znamená, že bych tuhle knihovnu měl používat pouze ve spojení s tím systémovým Perlem nainstalovaným v /usr/bin
(v Ubuntu 14.04 je to Perl verze 5.18.2). Čili si např. musím upravit $PATH
tak, aby přednost nedostal /opt/bin/perl
, což je momentálně verze 5.12.2. A taky bych tohle Tk neměl volat z jiných strojů, např. z clusteru, kde máme zatím Ubuntu 10.04. Vzhledem k interaktivní povaze té knihovny to naštěstí není nezbytné. Nejdůležitější je, že tahle knihovna má fonty v pořádku.
Tak a konečně můžeme přistoupit k instalaci vlastního Tredu. Na jeho nepříliš udržovaném webu je k dispozici balíček, který se dá stáhnout a nainstalovat. Protože balíček není instalován z centrálních repozitářů pro Ubuntu, je trochu komplikovanější získání všech dalších knihoven, na kterých závisí. Dělá se to ve dvou krocích: nejdřív pustíme instalaci, o které víme, že skončí neúspěchem, předtím však stihne ve správci balíčků vyjmenovat balíčky, na kterých závisí. Potom zavoláme správce balíčků, aby chybějící závislosti vyřešil s pomocí centrálních repozitářů a instalaci tak dokončil.
sudo dpkg -i ./tred_2.5049_all.deb sudo apt-get -f install
Ani to neproběhne bez škobrtnutí. Druhý z obou příkazů totiž na závěr vede na volání cpanm
(instalace Perlích modulů z CPANu) a některé moduly se odmítnou nainstalovat:
- Modul UNIVERSAL::DOES je sám o sobě v pořádku, ale má testy, které s Perlem 5.18 již nejsou kompatibilní. Je to nahlášený bug od počátku roku 2014, ale zatím s ním nikdo nic neudělal. Změnila se logika něčeho kolem datových typů, takže modul sice hlásí správné informace (podle nové logiky), ale test si myslí, že tyto informace jsou špatně, protože je posuzuje starou logikou. Řešením je pustit
cpanm –force
, aby se modul nainstaloval navzdory testům, na to ale moje sudo práva nestačí (instalujeme knihovny do systémového Perlu), takže musel vypomoci Milan.- Kdybychom na ÚFALu měli, jako že nemáme, správce Tredu, tak by měl předělat instalační balíček tak, aby se modul UNIVERSAL::DOES instaloval bez testů.
- Následovala instalace Treex::PML, která na tomhle závisela, ta už sice žádný nekompatibilní test nemá, ale na konci měla nějaký problém s přístupovými právy, takže to opět bylo na Milanovi.
Nakonec se to povedlo a instalace doběhla, chyběla ale důležitá informace, totiž kde je teď ten Tred, který chci pustit? Existuje sice nějaký program /usr/bin/tred
, ale to je jakýsi grafový nástroj od Graphvizu a s naším Tredem nemá nic společného. V cestě nemám ani btred
a ntred
. Nakonec se ukazuje, že ten správný název je (zřejmě pouze kvůli kolizi s Graphvizem) /usr/bin/start_tred
. Na webu Tredu to nebylo napsáno, teď jsem to tam sice dopsal, ale bylo by potřeba to změnit někde jinde, protože tahle stránka se automaticky přegenerovává vždy při vydání nové verze Tredu.
Heuréka, máme Tred s čitelnými fonty! Bohužel to ještě není konec trápení.
Easy Treex
V dnešní době je Tred jen takovým chudinkou, pokud neumí zobrazit Treexové soubory. Takže musíme nainstalovat rozšíření Easy Treex. To ale není tak easy, jak název napovídá. Při instalaci rozšíření se dozvím, že není k dispozici nějaká metoda z Treex::Core::Config; Treex::Core se nepodařilo správně nainstalovat… a má zase spoustu závislostí, např. Moose. Takže i když je to náš software, bylo by dobré ho nainstalovat z CPANu, tím by se ty závislosti vyřešily.
cpanm Treex::Core
Vzhledem k tomu, že nemám správcovská práva, se tyhle moduly už neinstalují do systémových cest, ale do /home/zeman/perl5
. Takže si musím upravit prostředí, aby je Perl dokázal najít:
export PERL5LIB=/home/zeman/perl5/lib/perl5
(Vyzkoušel jsem, že PERLLIB nestačí, musel to být PERL5LIB.)
Po dalším spuštění Tredu se už rozšíření Easy Treex inicializovalo správně, tedy alespoň to o sobě tvrdilo. Otevřít Treexový soubor (/net/data/pcedt2.0/data/00/wsj_0001.treex.gz
) se mi však nadále nedaří. Tred tvrdí, že nemohl otevřít soubor se schématem PML treex_schema.xml
. Přitom ten soubor mám v /home/zeman/.tred.d/extensions/easytreex/resources
, on ale zřejmě neví, že by ho tam měl hledat. ALE! Když jsem Tred zavřel a pustil znova, tak při inicalizaci hlásil “Resource path” a tam tuhle cestu měl. A když jsem ho nechal znova otevřít inkriminovaný Treexový soubor, tak už to najednou šlo!