slrnpull - Howto

Slrn and Slrnpull: Sucking Down The News


Was ist slrnpull?

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.

Installation von slrnpull

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

Verzeichnisse von slrnpull.

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, ..).

Konfigurationsdateien und Variablen von slrnpull.

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.

Kommandozeilenparameter von slrnpull.

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.

Nachwort

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 ]