Moin! Helge Philipp cantello@gmx.net Da in letzter Zeit ab und zu mal Fragen zu slrn bzw.

slrnpull aufkamen, hab ich mich mal an eine kurze Einf�hrung gemacht. Der erste Teil ist f�r's Kompilieren und alles so einrichten, da� es l�uft. Das korrekte Arbeiten mit slrn kommt dann sp�ter (Wo-Ende oder so). Ich hoffe, es ist alles einigerma�en verst�ndlich... :-) ======================================================== slrn & slrnpull - eine kurze Einf�hrung 1. Teil ======================================================== Ich beschreibe jetzt mal, wie alles von Grund auf mit dem Quellcode hergestellt wird. Die Sourcen zu slrn, slang und slrnpull gibt es z.B. bei ftp://ftp.uni-stuttgart.de/pub/unix/misc/slang/slrn/ Im Einzelnen sind dies: ftp://ftp.uni-stuttgart.de/pub/unix/misc/slang/v1.4/slang-1.4.1.tar.gz und ftp://ftp.uni-stuttgart.de/pub/unix/misc/slang/slrn/slrn-0.9.6.2.tar.gz Fertige Versionen sind unter http://www.fortytwo.uni-oldenburg.de/~philipp/slrn-beos.zip zu bekommen. Wenn diese Dateien auf dem heimischen Rechner sind und in ein Verzeichnis entpackt wurden, kann man ans Kompilieren von slang gehen. cd slang-1.4.1 configure make Falls die Verzeichnisse noch nicht vorhanden sind: mkdir ~/config/lib mkdir ~/config/include Dann die kompilierten slang-Bibliotheken an die richtigen Stellen kopieren cp ./src/slang.h ~/config/include cp ./src/objs/libslang.a ~/config/lib Das war's mit slang, jetzt kommt slrn an die Reihe. F�r die aktuelle Version gibt es einige inoffizielle Patches, die z.B. das Datumsformat erheblich versch�nern und au�erdem auch einige

Bugfixes durchf�hren. Diese Patches bekommt man bei Thomas Schultz und Felix Schueller (http://www.netcologne.de/~nc-schuelfe/slrn/patches/index-de.html), die genaue Datei ist http://www.netcologne.de/~nc-schuelfe/slrn/patches/slrn-0.9.6.2-commo... Diese wird in das Verzeichnis gepackt, in dem sich auch slrn befindet und mit cd .. cd slrn-0.9.6.2 patch -p1 < slrn-0.9.6.2-common.diff werden die Patches ausgef�hrt. Nun kann slrn mit configure --includedir=/boot/home/config/include --libdir=/boot/home/config/lib zum Kompilieren vorbereitet werden. In src/slrnfeat.h und src/Makefile k�nnen dann noch einige Optionen gesetzt werden, wobei die Standard-Einstellung vollkommen okay ist. Einziger Haken: Auf Zeile 102 von src/Makefile mu� am Ende "-lm" gel�scht werden, da gcc sonst beim Kompilieren meckert. libm ist eine mathematische Bibliothek, die unter BeOS in die Standardbibliothek libbe integriert wurde. nun kann's losgehen: make cp ./src/objs/slrn ~/config/bin cp ./doc/slrn.rc ~/ make slrnpull cp ./src/objs/slrnpull ~/config/bin Damit sollten alle ben�tigten Programme an den richtigen Stellen liegen. Jetzt wollen wir mal daran gehen, einige Artikel f�r slrn mit slrnpull herunterzuladen. Erstmal mu� ein Verzeichnis eingerichter werden, daf�r nehme ich jetzt mal /boot/home/news. In diesem Verzeichnis m�ssen zun�chst zwei Dateien erstellt werden, slrnpull.conf und authinfo. authinfo enth�lt nur zwei Zeilen, auf der ersten Zeile den Benutzernamen f�r den Newsserver, auf der zweiten das zugeh�rige Passwort. Wer f�r den jeweiligen Server keine Authentifizierung ben�tigt, kann authinfo komplett weglassen. slrnpull.conf legt fest, welche Gruppen vom Server geholt werden und wie lange die Artikel lokal gehalten werden. Das Format ist wie folgt: de.comp.os.be ^ Gruppenname 100 ^ wieviele der letzten Artikel geholt werden 14 ^ wielange die Artikel aufbewahrt werden [Tage]

Wenn alle Artikel geholt werden oder die Artikel nie expiren (=gel�scht) sollen, den jeweiligen Wert auf 0 setzen. Nun ist alles bereit, um zum ersten Mal Artikel holen zu k�nnen. slrnpull -h mein.news.server.de -d ~/news slrnpull sollte jetzt Verbindung zum Server aufnehmen, den Benutzer einloggen und die letzten 100 Artikel der Gruppe de.comp.os.be holen. Die n�tigen Verzeichnisstrukturen werden beim ersten Starten von slrnpull erstellt. Nun das Wichtigste: Die slrn.rc korrekt einstellen. Ich habe die wichtigsten �nderungen gegen�ber der migelieferten Version mal kurz aufgelistet. hostname "domain.name" set username "Name" set realname "Mein Name" <- Domain-Name meiner Mail-Adresse <- linker Teil meiner Mail-Adresse <- wohl selbsterkl�rend... :-)

F�r mich w�re das folgenderma�en: hostname "fortytwo.uni-oldenburg.de" set username "helge.philipp" set realname "Helge Philipp" set non_Xbrowser "NetPositive '%s' &" <- f�r Opera anpassen

set save_posts "/boot/home/news/my_posts" set save_replies "/boot/home/news/my_replies" set sendmail_command "mail me...@mail.adresse" <- bei mir funktioniert es, scheint aber nicht immer zu gehen scorefile "news/scorefile" set decode_directory "news/decoded" set save_directory "news/news_archive" <- die Verzeichnisse m�ssen existieren set postpone_directory "news/postponed" set editor_command "gvim +%d '%s'" <- guter Editor f�r slrn, zu bekommen unter http://www.bebits.com/app/546 F�r andere Editoren einfach anpassen, z.B. "StyledEdit '%s'" oder "Eddie '%s'". F�r pe mu�te man sich etwas M�he machen, um UTF mit ISO in Einklang zu bringen. set set set set set set set set set set use_tmpdir 1 charset isolatin <- sollte aber auch schon default sein use_metamail 0 <- gibt's nicht unter BeOS use_slrnpull 1 <- logisch, wollen wir ja server_object "spool" spool_inn_root "/boot/home/news" spool_root "/boot/home/news/news" spool_nov_root "/boot/home/news/" spool_active_file "data/active" spool_activetimes_file "data/active.times"

set spool_newsgroups_file "data/newsgroups" set spool_nov_file ".overview" Und zu guter Letzt noch einige, wie ich finde angenehme Farben, da mir die Standardeinstellung �berhaupt nicht gefiel. color color color color color color color color color color color color color color color color color color color color color color color color color color color color color color header_number header_name normal error status group article cursor author subject headers menu menu_press tree quotes thread_number high_score signature description tilde response_char frame selection box quotes0 quotes1 quotes2 quotes3 boldtext underlinetext "green" "red" "black" "red" "yellow" "black" "black" "blue" "blue" "black" "black" "yellow" "blue" "black" "blue" "black" "red" "blue" "blue" "green" "red" "yellow" "blue" "blue" "blue" "red" "blue" "red" "red" "red" "white" "white" "white" "white" "blue" "white" "white" "yellow" "white" "white" "white" "blue" "yellow" "white" "white" "white" "white" "white" "white" "white" "white" "blue" "yellow" "white" "white" "white" "white" "white" "white" "white"

Und noch die Sachen einstellen, die durch die Patches erm�glicht werden (eigentlich nur das einheitliche Datumsformat): header_display_format 0 "%F%-4S%-4l:%t%s%-40g[%23r] %D " set overview_date_format "%d.%m. %H:%M" Die Abst�nde sind f�r ein 116 Zeichen breites Terminalfenster gedacht und meinen Vorlieben angepa�t. So, das war die slrn.rc, jetzt kann's ja losgehen. slrn --spool -create woraufhin die einzige Gruppe, die vorhanden ist mit den vorher angegebenen 100 Artikeln auftauchen sollte. Mit 's' kann sie permanent subscribed werden, die restlichen Tastenbelegungen k�nnen mit '?' abgefragt werden. Ich habe relativ viele Tasten umbelegt, wer daran Interesse hat, dem kann ich das ja mailen. Wenn jetzt einige Artikel geschrieben wurden, landen diese alle

in ~/news/out.going, bis slrnpull ein weiteres Mal aufgerufen wird. Dabei kann man dann nur Artikel verschicken und keine neuen holen, damit es schneller geht. slrnpull -h mein.news.server -d ~/news --post-only So, das war's. Alle Artikel sind abgeschickt. Bei Fragen, Fehlern oder anderem Krams, fragt ruhig. :-) Viel Spa�, Helge. slrn/slrnpull - Teil 2 ====================== So, mittlerweile sollte ja alles laufen, es fehlen haupts�chlich noch einige kosmetische Verbesserungen, die das Newslesen angenehmer machen. Zum einen w�re da die Tastaturbelegung. Ich konnte mich mit der urspr�nglichen nie so richtig anfreunden, darum einige Hilfestellungen, wie sie zu �ndern ist. Die Belegung wird wie fast alles in der .slrnrc ge�ndert, wobei das Format jeweils setkey [group/article] Kommando Tastaturcode

lautet. 'group' steht dabei f�r die Gruppen�bersicht und 'article' kommt zum Tragen, sobald ein Artikel oder die Artikel�bersicht angezeigt wird. Ich nehme z.B. [Home] und [End] zum seitenweisen Bl�ttern in der Artikel�bersicht und [PgUp]/[PgDown] zum zeilenweisen Scrollen in einem Artikel. Das sind wenigstens Tasten, die n�her beisammen liegen und daher bequem zu bedienen sind. Die Codes f�r die einzelnen Tasten sind folgende: Home: End: "\e[1~" "\e[4~"

PgUp: "\e[5~" PgDown: "\e[6~" Die Einstellungen wie oben beschrieben w�re also setkey setkey setkey setkey article article article article pageup pagedn article_lineup article_linedn "\e[1~" "\e[4~" "\e[5~" "\e[6~"

Das soll nur eine Anregung sein, schlie�lich hat jeder Mensch eigene Vorlieben bei der Bedienung von Programmen. Ein weiterer Punkt, bei dem slrn sich recht m�chtig zeigt, ist Scoring. Mit Scoring kann man einfach bestimmte Schlagw�rter hervorheben, Autoren, die man gerne liest einfacher erkennen, unliebsame Zeitgenossen ausblenden oder auch Antworten auf eigene Postings leicht finden. Einem Artikel wird dabei aufgrund bestimmter Header ein Zahlenwert zugewiesen, an dem man dann die (Un-)Wichtigkeit erkennen k�nnte.

Sobald man in der Artikelliste ist, kann man mit 'K' (klein oder gro� ist glaube ich egal) den Artikel scoren. Dann w�hlt man aus, auf welchen Aspekt man scoren m�chte (From => Absender, Subject oder Edit => Scorefile wird zum �ndern ge�ffnet) und gibt einen Wert ein, den dieser Artikel erhalten soll. Dann wird der neue Score auf die Artikel angewendet und meist sieht man schon sofort ein Ergebnis. Eine Anwendung daf�r, die ich gerne mag, ist das Auffinden von Antworten auf eigene Artikel. Eigene Artikel besitzen eine Message-ID, die bei nachfolgenden Artikeln in den References auftaucht. Auf diese References kann man dann scoren und so Antworten leicht finden. Gut dran sind die Leute, die entweder �ber einen statischen Hostnamen verf�gen oder bei einem Newsserver posten, der f�r jeden User eindeutige Msg-IDs vergibt, z.B. news.cis.dfn.de. F�r die sieht ein Eintrag im Scorefile dann z.B so aus: [*] Score: =999 Message-ID: <[a-z0-9-\.]*@ip97\.fortytwo\.uni\-oldenburg\.de> Score: =888 References: <[a-z0-9-\.]*@ip97\.fortytwo\.uni-oldenburg\.de>$ ~From: Helge Philipp Score: =666 References: <[a-z0-9-\.]*@ip97\.fortytwo\.uni-oldenburg\.de>\s<[a-z0-9\.]*@[a-z0-9-\.]*>$ ~From: Helge Philipp Der Stern zu Beginn sagt, da� dieser Eintrag f�r alle Gruppen gilt. Das Gleichheitszeichen vor dem Wert gibt an, da� dem Artikel absolut dieser Wert zugeordnet wird, normal w�re ein Hinzuaddieren. Der wichtige Eintrag ist die n�chste Zeile. Der Eintrag vor dem '@' sagt, da� beliebig oft (daf�r das '*' nach den eckigen Klammern) eine Folge von allen Buchstaben (gro� oder klein ist egal), allen Ziffern, dem Minuszeichen und dem Punkt (dieses Zeichen muss 'escaped' werden, d.h. mit einem Backslash voran geschrieben werden, da sie sonst nicht als Zeichen, sondern als Befehle verstanden werden) vorkommen k�nnen. Nach dem '@' kommt dann der Hostname, auf den man scoren m�chte. Die n�chsten Zeilen beziehen sich dann auf Antworten auf eigene Postings, der Unterschied ist (au�er dem Score), da� jetzt auf References untersucht und geguckt wird, ob sich am Ende der References (daf�r das '$' am Ende) eine Msg-ID mit besagtem Hostname befindet. Zus�tzlich wird abgefragt, ob der Artikel nicht auch noch von einem selbst stammt (Selbstgespr�che halt), damit er nicht doppelt gescored wird. Die letzte Zeile bezieht sich auf Antworten auf Antworten, deshalb mu� zwischen der gew�nschten Message-ID und dem Ende noch eine andere, beliebige Msg-ID liegen. Damit all dies klappt, mu� f�r den Fall, da� ein statischer Hostname vorhanden ist nichst gemacht werden (slrn unter BeOS generiert per default Message-IDs), f�r den Fall, da� weder ein fester Hostname vorhanden, noch �ber cis.dfn gepostet wird, ebenfalls nicht. Wenn �ber cis.dfn geschrieben wird, mu� in der .slrnrc

set generate_message_id 0 gesetzt sein. Dann erzeugt der Newsserver selbst Message-IDs in dem Format <blahb...@ID-XXXX.news.cis.dfn.de>, wobei XXXX gleich der Benutzernummer ist. Auf diese IDs l��t sich dann auch hervorragend scoren. F�r eine dynamische Hostnamenvergabe wird es etwas schwieriger, da die Zuordnung nicht mehr so einfach ist. Meistens funktioniert es, da slrn die Message-IDs so vergibt: <zuf�lliges_Krams.vorderer_Teil_der_Mail-Adre...@Dial-In-Name.des.Providers> Damit kann man dann wie folgt scoren: ".*helge\.philipp@.*stuttgart\.ipdial\.viaginterkom\.de Als Beispiel (v�llig aus der Luft gegriffen, ich habe einfach mal ein paar Dial-Up-Hostnamen angeguckt) sollte das ausreichen, wie genau das Format auszusehen hat, mu� sich jeder selbst angucken. Andere Anwendungsm�glichkeiten sind dann zum Beispiel bestimmte Autoren markieren. Ein Eintrag sieht dann einfach so aus: [de.comp.os.be] Score: 20 From: J\.Seemer@gmx\.de (Joachim Seemer) Score: 20 From: From: MIKoe...@web.de (Michael Koenig) Alles nat�rlich willk�rlich ausgew�hlt aus einem absolut nichtexistenten Scorefile. :-) Genauere Beschreibungen sind in der slrn-Dokumentation unter slrn-0.9.6.2/docs/score.txt und SCORE_FAQ zu finden. Es ist ebenso m�glich mit slrnpull gleich beim Herunterladen der Artikel zu scoren, meiner Meinung nach ist das aber zu viel Arbeit f�r zu wenig Nutzen, zumal, die meisten gr��eren deutschen Newsserver recht gut Spam und �hnliches herausfiltern. So, nun zum n�chsten, einfacheren Punkt. Wenn man GUI-Newsreader unter Windows gew�hnt ist, vermi�t man mit slrn meist eine gute Suchfunktion. Gut, man kann per 's' die Subjects, mit 'a' die Autoren und mit ESC-l die Message-IDs durchsuchen, aber da man ja eh' schon die ganzen Artikel per slrnpull lokal gespeichert hat, kann man die doch auch gleich durchsuchen. Dazu gibt es bei slrn mitgeliefert auch ein Skript, was dies erledigt. in slrn-0.9.6.2/macros liegt search.sl, welches man irgendwo hinkopiert, wo man es wiederfindet. Dann wird in die .slrnrc eingetragen, da� man dieses (S-Lang-)Skript gerne ausf�hren m�chte: interpret /boot/home/config/scripts/search.sl (der Pfad ist nur ein Beispiel, dort habe ich es hinkopiert) Dann kann man in der Artikelliste mit '$' einen Suchbegriff eingeben,

nach dem dann die Bodies ausgehend von dem gerade aktiven Artikel abw�rts durchsucht werden. Dies klappt leider nicht immer ganz so, wie ich das m�chte, nur hab ich noch keine Regelm��igkeit entdecken k�nnen. Au�erdem sucht search.sl nur in der aktuellen Gruppe und nicht zum Beispiel �ber mehrere Gruppen hinweg. Eine andere M�glichkeit ist es, den Artikelbestand mit Shell-Methoden zu durchforsten. Dazu ist folgendes Kommando n�tzlich: find ~/slrnnews/news -type f -print | xargs grep Suchbegriff wobei der Pfad, wo sich die Artikel befinden jeweils angeglichen werden mu�. Dies gibt dann jeweils den Dateinamen (= Nummer des Artikels) und die Zeile, in der sich der Suchbegriff befindet aus. Ziemlich unkonfortabel, findet aber recht gut und schnell alles M�gliche. Hmm... genug f�r heute, Kritik wird wieder gerne entgegengenommen, wobei die heutigen Sachen eigentlich alle recht speziell sind, wenn jemand bestimmte Fragen hat, versuche ich die nat�rlich auch gerne zu beantworten. Ciao, Helge.