You are on page 1of 8

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 100 14
^ ^ ^
Gruppenname wieviele der letzten wielange die Artikel
Artikel geholt werden 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" <- Domain-Name meiner Mail-Adresse


set username "Name" <- linker Teil meiner Mail-Adresse
set realname "Mein Name" <- 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 use_tmpdir 1
set charset isolatin <- sollte aber auch schon default sein
set use_metamail 0 <- gibt's nicht unter BeOS
set use_slrnpull 1 <- logisch, wollen wir ja
set server_object "spool"

set spool_inn_root "/boot/home/news"


set spool_root "/boot/home/news/news"
set spool_nov_root "/boot/home/news/"
set spool_active_file "data/active"
set 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 header_number "green" "white"


color header_name "red" "white"
color normal "black" "white"
color error "red" "white"
color status "yellow" "blue"
color group "black" "white"
color article "black" "white"
color cursor "blue" "yellow"
color author "blue" "white"
color subject "black" "white"
color headers "black" "white"
color menu "yellow" "blue"
color menu_press "blue" "yellow"
color tree "black" "white"
color quotes "blue" "white"
color thread_number "black" "white"
color high_score "red" "white"
color signature "blue" "white"
color description "blue" "white"
color tilde "green" "white"
color response_char "red" "white"
color frame "yellow" "blue"
color selection "blue" "yellow"
color box "blue" "white"

color quotes0 "blue" "white"


color quotes1 "red" "white"
color quotes2 "blue" "white"
color quotes3 "red" "white"
color boldtext "red" "white"
color underlinetext "red" "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: "\e[1~"
End: "\e[4~"

PgUp: "\e[5~"
PgDown: "\e[6~"

Die Einstellungen wie oben beschrieben w�re also

setkey article pageup "\e[1~"


setkey article pagedn "\e[4~"
setkey article article_lineup "\e[5~"
setkey article article_linedn "\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.