slrnpull - Howto
Slrn and Slrnpull: Sucking Down The News
slrnpull ist ein Programm, das Usenetarikel von einem bestimmten Newsserver holt und diese
dann in einem lokalem Verzeichniss speichert. Damit kann man mit Slrn
darauf zugreifen und seine Newsgroups offline lesen. slrnpull ist also ein lokaler Newsserver fuer Slrn, aber es
ist kein Ersatz fuer Newsserver wie leafnde, INN
und Konsorten!
Ich verwende slrnpull, weil ich meine News sowieso mit Slrn lese und keine Lust habe, mir zusaetzlich einen lokalen Newsserver zu
installieren.
Damit man slrnpull installieren kann, braucht man Slrn. Nachdem man die neuste Version
von Slrn runtergeladen hat (0.9.8.0), entpackt man diese und wechselt in das Verzeichniss von Slrn. Man muss slrnpull bereits als
Parameter von ./configure angeben, damit dieses Feature danach auch zur Verfuegung steht. Es sind dazu mehrere Optionen noetig:
--enable-spool
Diese Option wird benoetigt, damit man mit Slrn Usenetartikel von einem lokalem Verzeichniss lesen kann.
--with-slrnpull
Damit wird Slrn angewiesen, slrnpull zu kompilieren, damit man es anschlieszend verwenden kann.
Es stehen auch noch mehrere Optionen zur Verfuegung, aber auf diese werde ich hier nicht eingehen, da diese fuer die Verwendung
von slrnpull nicht noetig sind.
Der komplette Ablauf ist also wie folgt:
$ wget ftp://ftp.fu-berlin.de/pub/unix/news/slrn/slrn-0.9.8.0.tar.bz2
$ bzip2 -d slrn-0.9.8.tar.bz2
$ tar -xvf slrn-0.9.8.tar
$ cd slrn-0.9.8.0
$ ./configure --enable-spool --with-slrnpull
$ make
$ su
# make install
Wenn man danach slrn --version am Kommandozeilenprompt eingibt, sollte man folgendes sehen:
$ slrn --version
Slrn 0.9.8.0 [2003-08-25]
S-Lang Library Version: 1.4.9
Compiled at: Nov 24 2003 21:43:47
Operating System: OpenBSD
COMPILE TIME OPTIONS:
Backends: +nntp +slrnpull +spool
External programs / libs: -canlock -inews +ssl -uudeview
Features: +charset_mapping +decoding +emphasized_text +end_of_thread
+fake_refs +gen_msgid +grouplens +mime -msgid_cache +piping +rnlock
+slang +spoilers -strict_from
DEFAULTS:
Default server object: nntp
Default posting mechanism: nntp
Default character set: isolatin
SUPPORTED CHARACTER SETS:
isolatin ibm850 ibm852 ibm857 ibm737 NeXT koi8
$
Unter Backends: muss +slrnpull +spool vorhanden sein. Sollte das nicht der Fall sein, steht slrnpull nicht
zur Verfuegung. Man kann einen Blick in die Datei config.log werfen und nach ggf. auftretenden Fehlern suchen und den
exit-Status von configure und make abfragen, indem man echo $? nach jedem Aufruf eingibt. Dieser muss
bei 0 (Null) liegen; ein anderer Status (ungleich Null) bedeutet das das zuletzt eingegebene Kommando nicht fehlerfrei beendet worden ist.
Ein slrnpull --version sollte folgendes zu Tage bringen:
$ slrnpull --version
12/09/2003 12:55:38 ***slrnpull Version: 0.9.8.0
Bevor man slrnpull starten kann, muss man noch einiges an Vorarbeit leisten. Darunter faellt auch
das erstellen von den Verzeichnissen, die slrnpull benoetigt. Per Default wird /var/spool/slrnpull gelesen, aber
das kann man entweder vor dem Kompilieren in der /slrn-0.9.8.0/src/slrnfeat.h aendern oder einfach in der
~/.slrnrc angeben (dazu aber spaeter mehr).
Zuerst muss ein Verzeichniss erstellt werden, das als $SLRNPULL_ROOT dienen soll (in dem also die Artikel, Konfigurationsdateien, ..)
liegen. Ich verwende auf meiner Workstation dazu ~/Slrnpull. Danach muss man noch die Datei slrnpull.conf in den $SLRNPULL_ROOT
kopieren (ggfs. noch die Dateien authinfo und score). Die slrnpull.conf muss vorhanden sein und gelesen
werden koennen!
slrnpull erstellt nach dem ersten Aufruf noch mehrere Unterverzeichnisse in $SLRNPULL_ROOT:
data
In diesem Verzeichniss liegen Informationen ueber abonnierte Gruppen oder neue Gruppen. Diese Dateien werden von
slrnpull erstellt.
news
Hier werden die Artikel gespeichert, welche slrnpull vom Server abgeholt hat. Die Verzeichnisstruktur wird ebenfalls von
slrnpull selbst erstellt.
out.going
Hier werden die Artikel gespeichert, die man als Antwort auf einen Beitrag erstellt hat.
out.going/rejects/
Hier sind die Artikel zu finden, die vom Server abgelehnt worden sind (zu gross, nicht existierende Gruppe, ..).
slrnpull arbeitet verschiedene Variablen ab:
NNTPSERVER
Damit wird slrnpull angewiesen, von welchem Server es die Newsartikel downloaden soll.
SLRNPULL_ROOT
Hiermit kann man das zu benutzende Spool-Verzeichnis angeben.
Note: Diese Variablen werden ueberschrieben wenn man slrnpull beim Start einen anderen Parameter uebergibt!
Die Dateien die slrnpull verwendet sind folgende:
$SLRNPULL_ROOT/authinfo
Diese wird nur benoetigt, wenn man sich beim Newsserver mit Username und Passwort authentifizieren muss (wie z. B. bei news.cis.dfn.de).
Der Aufbau dieser Datei ist relativ einfach. In der ersten Zeile steht der Username und in der zweiten Zeile das Passwort.
username
password
$SLRNPULL_ROOT/log
Damit ist die Logdatei gemeint, in der die die Status- und Fehlermeldungen gespeichert werden. Diese Datei wird von
slrnpull erstellt.
$SLRNPULL_ROOT/score
Hier kann man Score-Angaben machen, nach welchen slrnpull entscheidet welche Artikel es downloaden soll und welche es "killen" soll.
Die Syntax ist gleichbedeutend mit der von Slrn selbst.
[de.*]
Score:: -9999
  From: aol\.com
$SLRNPULL_ROOT/slrnpull.conf
Das ist die eigentliche Konfigurationsdatei von slrnpull. Hier wird angegeben wieviel Artikel von welcher Newsgroup es downloaden
soll und wann diese expiren. Die Syntax dieser Datei ist Idiotensicher (kapier sogar ich :>).
Das erste Feld enthaelt den Namen der Newsgroup. Im zweiten steht wieviel Artikel von dieser Newsgroup geholt werden sollen,
im dritten werden die Tage angegeben, welche Artikel als "expired" behandelt werden sollen und im vierten Feld kann man angeben ob
slrnpull den kompletten Artikel oder nur die Header abholen soll. # leitet einen Kommentar ein und alles was dahinter in der
Zeile steht, wird ignoriert.
Sobald ein Feld leer ist oder den Token * enthaelt, werden die Defaultwerte verwendet.
# Beispielkonfigurationsdatei fuer slrnpull
#
# Mit default werden die Standardwerte definiert.
# Wenn nicht anders angegeben sollen 100 Artikel vom Server abgeholt werden,
# die nach 5 Tagen als expired behandelt werden sollen.
default 100 5 0
# Diese Gruppen sollen die Default-Werte verwenden
de.alt.netdigest # die _wichtigste_ Gruppe!!!11
de.test
# Von dieser Gruppe sollen nur 50 Artikel abgeholt werden, die aber erst nach
# 20 Tagen als expired gelten.
de.foo.bar 50 20 0
# Von de.test sollen nur die Header von 10 Artikeln abgeholt werden, die nie
# expiren
de.test 10 * 1
# Jetzt wird ein zweiter 'default' - Wert definiert, weil mehrere Gruppen nach
# dessen Muster vom Server abgeholt werden sollen.
# 200 Artikel, die nach 9 Tagen expiren
default 200 9 0
alt.foobar
alt.fnord
alt.narf
de.alt.jehova
~/.slrnrc
Man muss auch in der ~/.slrnrc einige Aenderungen vornehmen, damit Slrn weiss das slrnpull verwendet werden soll. Das sind dann
folgende:
spool_inn_root
Hier muss das Verzeichniss angegeben werden, in dem die "slrnpull.conf", "authinfo", .. enthalten sind.
In unserem Fall waer das also "set spool_inn_root "/home/username/Slrnpull"
spool_root
Hier wird angegeben, wo die Usenetartikel gespeichert werden sollen. In unserem Fall ist das "set spool_root "/home/username/Slrnpull/news".
spool_nov_root
Siehe spool_root.
use_slrnpull
Damit Slrn auch wirklich slrnpull verwendet, muss dieser Wert auf 1 gesetzt werden.
server_object
Dieser Wert ist nicht zwingend notwendig, da man ihm slrnpull beim Start uebergeben kann. Wer das nicht will, muss
server_object spool in seine ~/.slrnrc schreiben.
Man kann slrnpull die folgenden Parameter beim Start uebergeben:
$ slrnpull --help
Verfügbare Parameter:
-d SPOOLDIR Das zu benutzende Spool-Verzeichnis.
-h HOSTNAME Name des zu verwendenen NNTP-Servers.
--debug DATEI Server-Dialog in DATEI speichern.
--expire Veraltete Nachrichten löschen (expiren),
aber keine neuen Nachrichten vom Server laden.
--help Diesen Hilfetext anzeigen.
--kill-log DATEI Liste der aussortierten Artikel in DATEI schreiben.
--kill-score SCORE Bewertungsgrenze, ab der Artikel aussortiert werden.
--logfile DATEI DATEI als Log-Datei verwenden.
--marked-bodies Nur zum Download markierte Nachrichten-Bodies
herunterladen
--new-groups Liste neuer Gruppen vom Server holen.
--no-post Keine Artikel posten.
--post-only Nur Artikel posten, aber keine holen.
--rebuild Wie --expire; zusätzlich Overview-Dateien neu anlegen.
--version Versionsnummer ausgeben.
$
Note: Sobald man slrnpull einen Parameter direkt uebergibt, ueberschreibt dieser eine ggf. vorhandene Variable!
Wenn man die Variable NNTPSERVER auf "news.server.tdl" setzt und anschliessend also slrnpull -h news.server1.tdl verwendet,
versucht slrnpull die Artikel von "news.server1.tdl" abzuholen.
Fragen, Wuensche, Antraege, Verbesserungen, Bugreports, Bier und Pizza bitte an strcat@gmx.net.
Das gilt aber nur bei Fragen zu diesem Tutorial. Fuer Anfragen zu Macros, Scripten, ... verwendet eine Suchmaschine oder
fragt in der dazu passenden Newsgroup (de.comm.software.newsreader) nach.
$Id: slrnpull.html,v 1.1 2003/12/09 16:46:44 dope Exp dope $
Send comments to strcat@gmx.net.
Last modified: [ 2003-12-15 02:02:51 ]