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 leafnode, INN und Konsorten!

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:

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 $HOME/.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, welche aber ignoriert/überschrieben werden wenn man slrnpull beim Start einen anderen Parameter uebergibt!

NNTPSERVER

Damit wird slrnpull angewiesen, von welchem Server es die Newsartikel downloaden soll.

SLRNPULL_ROOT

Hiermit kann man das zu benutzende Spool-Verzeichnis angeben.

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.

$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.

$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. 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
$HOME/.slrnrc

Man muss auch in der $HOME/.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.

  • spool_root: Hier wird angegeben, wo die Usenetartikel gespeichert werden sollen.

  • 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
10/12/2016 16:16:37 ***slrnpull usage: slrnpull [options]
 Options:
  -d SPOOLDIR          Spool directory to use.
  -h HOSTNAME          Hostname of NNTP server to connect to.
  --debug FILE         Write dialogue with server to FILE.
  --expire             Perform expiration, but do not pull news.
  --fetch-score SCORE  Fetch article bodies with a score of at least SCORE
                       (for use in "true offline" mode)
  --help               Print this usage information.
  --kill-log FILE      Keep a log of all killed articles in FILE.
  --kill-score SCORE   Kill articles with a score below SCORE.
  --logfile FILE       Use FILE as the log file.
  --marked-bodies      Only fetch bodies that were marked for download.
  --new-groups         Get a list of new groups.
  --no-post            Do not post news.
  --post-only          Post news, but do not pull new news.
  --rebuild            Like --expire; additionally rebuilds overview files.
  --version            Show the version number.

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 slrnpull -h news.server1.tdl verwendet, versucht slrnpull die Artikel von "news.server1.tdl" abzuholen.