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