Cílem programů pro čtení news je zprostředkovat uživatelům snadný a komfortní přístup k funkcím systému news, jako je předávání článků nebo sbírání obsahu diskusní skupiny. Kvalita tohoto rozhraní je předmětem váinivých debat.
Na platformu Linuxu bylo portováno několik programů pro čtení news. Dále si popíšeme základní nastavení tří nejoblíbenějších z nich, jmenovitě to budou tin, trn a nn.
Jedním z nejefektivnějších nástrojů pro čtení news získáte následujícím zápisem:
$ find /var/spool/news -name '[0-9]*' -exec cat {} \; | more
Tímto způsobem čtou news unixoví nadšenci.
Většina programů pro čtení news je však mnohem kultivovanější. Obvykle nabízí celoobrazovkové rozhraní s oddělenými úrovněmi nabízejícími zobrazení všech skupin, do kterých je uživatel přihlášen, zobrazení přehledu všech článků v jedné skupině a konečně i jednotlivých článků.
Na úrovni diskusní skupiny zobrazuje většina programů seznam článků, ve kterém je uveden předmět článku a jeho autor. Ve velkých skupinách nemůže uživatel sledovat vzájemnou provázanost článků, i když je možné vystopovat odpovědi na dřívější články.
V odpovědi je většinou zopakován předmět původního článku, před nějž je předsunut řetězec "Re:". Kromě toho je id zprávy článku vytvořeno tak, aby přímo následovalo po předchozím a mohlo být umístěno do hlavičky References:. Seřazením článků podle těchto dvou kriterší vzniknou malé shluky (ve skutečnosti se jedná o stromy) článků, kterým se říká vlákna (threads). Jedním z úkolů při psaní programu pro čtení news je vymyslet efektivní schéma pro tvorbu vláken, protože čas potřebný pro takovéto seřazení je úměrný druhé mocnině celkového počtu článků V této kapitole se však nebudeme hlouběji zabývat způsobem, jakým jsou vystavěna uživatelská rozhraní. Všechny programy pro čtení news, které jsou v současné době v Linuxu dostupné, disponují dobrou nápovědou, takže by vám práce s nimi neměla činit potíže.
Dále se budeme zabývat pouze administrativními úkoly. Většinou bude řeč o tvorbě databází vláken a evidencí.
Nejvšestrannějším programem pro čtení news s ohledem na tvorbu vláken je program tin. Napsal ho Iain Leas a je volně odvozen od staršího programu jménem tass. Propočet vláken provádí v době, kdy uživatel vstoupí do diskusní skupiny, a kromě případu, kdy používáte spojení NNTP, je poměrně rychlý.
Na počítači 486DX50 zabere setřídění 1000 článků při čtení přímo z disku zhruba 30 sekund.
Při spojení NNTP se zatíženým serverem news by tato operace zabrala více než 5 minut.
Tuto dobu je možné zkrátit pravidelnou aktualizací indexového souboru, které dosáhnete pomocí volby -u nebo spuštěním programu tin s parametrem -U.
Program tin obvykle ukládá svou databázi vláken do souboru .tin/index v domovském adresáři uživatele. Tato konfigurace však může příliš zatěžovat systémové zdroje, takže možná budete chtít udržovat jedinou kopiš těchto souborů na nějakém centrálním místě. Toho dosáhnete tak, že programu tin přidělíte například účet news nebo nějaký jiný účet s omezenými právy.
Program tin pak bude udržovat všechny databáze v souboru /var/spool/news/.index. Při každém přístupu k souboru nebo ukončení příkazového interpretu nastaví efektivní uid na skutečné uid uživatele, který ho spustil.
Lepším řešením je nainstalovat indexovacího démona tind, který bude pravidelně aktualizovat indexové soubory. Tento démon však není součástí žádné distribuce Linuxu, takže si ho budete muset i sami přeložit. Pokud provozujete lokální Síť s centrálním serverem news, můžete dokonce spouštět démona tind na tomto serveru a nechat klienty, aby si stahovali indexové soubory pomocí protokolu NNTP. K tomu samozřejmě potřebujete rozšíření protokolu NNTP. Doplňky démona nntpd, které zavádějí toto rozšíření, jsou součástí zdrojového kódu programu tin.
Verze programu tin, která byla součástí některých distribucí Linuxu, v sobě neměla zakomponovánu podporu protokolu NNTP, ale v současné době ji většina distribucí již má. Pokud program spustíte jako rtin nebo s volbou -r, pokusí se tin spojit s NNTP serverem uvedeným v souboru /etc/nntpserver nebo v proměnné prostředí NNTPSERVER. Soubor nntpserver obsahuje na jediném řádku pouze název serveru.
Program trn je také následníkem staršího programu pro čtení news, jmenovitě je to program rn (což znamená read news). Písmeno "t" v jeho názvu znamená "threaded". Napsal ho Wayne Davidson.
Na rozdíl od programu tin neumí program trn generovat svou databázi vláken za běhu.
Místo toho využívá databázi vytvořenou programem mthreads, který je pravidelně spouštěn z cron kvůli aktualizaci indexových souborů.
Když nespustíte program mthreads, neznamená to, že byste nemohli přistupovat k novým článkům, budete je ale všechny mít roztroušeny po výběrovém menu článků, místo jednoho vlákna, které by ýlo lehce přeskočit.
Budete-li chtít zapnout tvorbu vláken pro konkrétní diskusní skupinu, spustíte program mthreads a jako argumenty mu na příkazové řádce předáte seznam diskusních skupin. Seznam vytvoříte stejným způsobem, jaký jste použili při tvorbě souboru sys:
mthreads comp,rec,!rec.games.go
Výše uvedený zápis povolí vytváření vláken pro všechny skupiny comp a rec s výjimkou skupiny rec.games.go (lidé, kteří hrají hru Go, nepotřebují líbivá vlákna). Potom spustíte stejný program bez argumentů, aby mohl zařadit nově příchozí články. Uspořádání všech skupin, které máte uvedeny v souboru active, lze zapnout pomocí argumentu all, který předáte programu mthreads v příkazové řádce.
Pokud dostáváte news přes noc, budete obvykle spouštět program mthreads jen jednou, a to ráno, ale dle potřeby to může být i častěji. Systémy s velkým provozem možná budou používat program mthreads v režimu démona. Pokud ho totiž spustíte při zavádění systému s parametrem -d, umístí sám sebe na pozadí a každých deset minut bude zjiššovat, zda nedošly nějaké nové články, a pokud ano, pak je zařadí. Chcete-li spouštět program mthreads jako démona, umístěte do skriptu rc.news následující řádek:
/usr/local/bin/rn/mthreads -deav
Parametr -a zapíná automatickou tvorbu vláken pro nové skupiny, parametr -v povoluje zápis zpráv do log-souboru programu mthread, který se nazývá mt.log a je umístěn v adresáři, ve kterém máte nainstalován program trn.
Staré články, které již nejsou k dispozici, je třeba z indexových souborů pravidelně mazat. Implicitně jsou odstraňovány pouze články, jejichž číslo je pod dolním vodoznakem (water mark).
Články nad tímto číslem, jejichž doba platnosti by přesto nevypršela (protože nejstaršímu článku mohla být za pomoci hlavičkového pole Expires: přidělena dlouhá doba platnosti), lze odstranit pomocí parametru -e, který spustí tzv. pokročilé vyhodnocování doby platnosti. Pokud program mthreads běží jako démon, způsobí parametr -e, že přejde do tohoto režimu jednou denně - krátce po půlnoci.
Program nn, jehož autorem je Kim F. Storm, o sobě tvrdí, že je nástrojem, jehož cílem je nejenom umožňovat čtení news. Jeho název je zkratkou "No News" a má následující moto: "No News is good news. nn is better." ("Žádné zprávy - dobré zprávy. Program nn je lepší.")
Aby dosáhl tohoto nesmělého cíle, přichází program nn s velkou zásobou podpůrných nástrojů, které dovolují nejenom generovat vlákna, ale umožňují také intenzívní kontrolu konzistence těchto databází a účtů, získávání statistiky využití a omezení přístupů. Součástí balíku je i administrativní program nazvaný nnadmin, který dovoluje provádět tyto úkoly interaktivně. Je velmi intuitivní, takže se jím zde nebudeme zabývat a zaměříme se pouze na vytváření indexových souborů.
Databáze vláken programu nn se nazývá nnmaster. Obvykle běží jako démon spuitěný ze skriptu rc.news nebo rc.inet2. Spouští se následovně:
/usr/local/lib/nn/nnmaster -l -r -C
Tento zápis povolí vytváření vláken pro všechny diskusní skupiny, které jsou uvedeny v souboru active.
Jinou možností je pravidelně spouštět program nnmaster z cron a přitom mu předat seznam příslušných skupin. Tento seznam je podobný seznamu zapsaných skupin v souboru sys. Liší se jen v tom, že místo čárek používá jako oddělovače mezery. Místo falešného názvu skupiny all byste měli k označení všech skupin používat prázdný řetězec "it. Program lze spustit například takto:
# /usr/local/lib/nn/nnmaster !rec.games.go rec comp
Všimněte si, že v tomto zápisu záleží na pořadí prvků v seznamu. Pokud bychom uvedli řetězec !rec.games.go až za řetězcem rec, byly by vždy zpracovány všechny články z této skupiny.
Program nn nabízí několik metod pro odstraňování článků, jimž vypršela doba platnosti. První z nich provádí aktualizaci databáze tak, že projde adresáře všech diskusních skupin a zruší ty záznamy, k nimž již neexistují odpovídající záznamy. Tato operace je implicitní a lze ji aktivovat i pomocí parametru -E. Kromě případu, kdy ji provádíte prostřednictvím NNTP, je poměrně rychlá.
Druhá metoda se chová úplně stejně jako program mthreads při implicitním spuštění. Odstraní totiž pouze ty záznamy, které odkazují na články, jejichž číslo je nižší než dolní vodoznak v souboru active. Tuto metodu aktivujete pomocí parametru -e.
Konečně třetí strategie spočívá ve zrušení celé databáze a opětovném sesbírání všech článků.
Aktivujete ji, když program nnmaster spustíte s parametrem -E3.
Seznam skupin, jejichž platnost již vypršela, se předává pomocí parametru -F stejným způsobem. Pokud však spouštíte program nnmaster jako démona, musíte ho před aktualizací databáze "zabítie (pomocí parametru -k) a znovu ho spustit s původními parametry. Příslušný příkaz pro spuštění kontroly vypršení platnosti všech skupin podle první metody tedy vypadá takto:
# nnmaster -kF ""
# nnmaster -lrC
Chování programu nn je možné upravit prostřednictvím mnoha dalších parametrů. Chcete-li vědět, jak odstraňovat ýpatné články nebo provádět výtahy z článků, pak si přečtěte manuálové stránky programu nnmaster.
Program nnmaster spoléhá na soubor nazvaný GROUPS, který je umístěn v adresáři /usr/local/lib/nn. Pokud neexistuje, program si ho sám vytvoří. Pro každou diskusní skupinu obsahuje tento soubor řádek začínající názvem této skupiny, za nímž může volitelně následovat časové označení a příznaky. Úpravou těchto příznaků je možné změnit zacházení programu s touto skupinou. Nelze však změnit pořadí, ve kterém se skupiny objevují.
Přípustné příznaky a jejich význam také najdete v manuálových stránkách programu nnmaster.