Der Blog macht noch immer Pause (UPDATE)

Update 27.20.2014:
Nach guten 850 Kilometern im Rahmen einer selbstmörderischen Autobahn-Tortur, ganz wie in den guten alten Zeiten, am heutigen Montag ist jetzt auch der Kolloquiumsvortrag zur Diplomarbeit erledigt. Übrigens bemerkt man den Wert einfacher CAT5e-Patchkabel erst, wenn man in einer leeren Wohnung sitzt und merkt, dass diese Kabel eben nicht von allein in ausreichender Menge umziehen. Das selbe gilt für unterbrechungsfreie Stromversorgungen. Das schwierigste war der Umzug einiger 4U Virtualisierungsserver für das Heimlabor. Jetzt ist aber endlich alles erfolgreich angekommen und am kommenden Montag darf ich endlich meiner neuen Tätigkeit nachgehen.

Trotz der jetzt sicher wieder eintrudelnden Artikel ist die Pause noch nicht vorbei, darum bitte ich um Nachsicht. Um die geneigte Leserschaft trotzdem kurz auf den aktuellen Stand zu bringen: Heute konnte ich nach fast sechs Monaten meine Diplomarbeit abgeben, was das nachfolgende Bild beweist. Es geht um IT-Sicherheit, um was auch sonst. Bei Interesse (kurze Mail genügt), beschreibe ich das Thema gern ausführlicher, sobald ich kann. Drückt mir die Daumen.

diplomarbeit_abgabe

rtorrent monit- und Init-Skript

Wer rtorrent regelmäßig und dauerhaft einsetzt, wünscht sich eine elegantere Lösung, als das händische Starten und Stoppen einer screen-Sitzung. Ohne viele weitere Ausschweifungen folgt meine Lösung für diesen Wunsch: Ein Init-Skript und eine Konfigurationsdatei für monit. Monit ist eine Prozessüberwachungs-Software.

Im Gegensatz zu den anderen kursierenden Skripten kann mit dem hier vorgestellten sowohl die niceness (CPU-Priorität) als auch die I/O-Klasse eingestellt werden, sodass rtorrent nicht mehr alle Prozessoren und jede Eingabe-/Ausgabe-Operation für sich beanspruchen kann. Dazu absolut zu empfehlen ist die manpage von ionice und nice. Wer noch nicht reingesehen hat, verpasst was.

rtorrent Init-Skript

Das Init-Skript wird im Verzeichnis /etc/init.d/ unter dem Namen rtorrent-beispielUser abgelegt. Mit dem Befehl update-rc.d rtorrent-beispielUser defaults kann es in den Startprozess eingebunden werden.

#!/bin/bash
### BEGIN INIT INFO
# Provides:          rtorrent-beispielUser
# Required-Start:    $syslog $local_fs
# Required-Stop:     $syslog $local_fs
# Should-Start:      $remote_fs
# Should-Stop:       $remote_fs
# X-Start-Before:    xdm kdm gdm ldm sdm
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: rtorrent
# Description:       Load up rtorrent in a screen session
### END INIT INFO

###############
#
# TO INSTALL RUN
# sudo /usr/sbin/update-rc.d rtorrent defaults
#
##################


. /lib/lsb/init-functions

# EDIT THIS VARIABLE TO THE USER THAT YOU WANT RTORRENT TO RUN AS
USER=beispielUser
# Where to store the pidfile
PIDFILE="/var/run/rtorrent-${USER}.pid"
# Path to screen
SCREEN="/usr/bin/screen"
# Name of screen (visible via screen -ls)
SCREEN_NAME="rtorrent-${USER}"
RTORRENT="/usr/local/bin/rtorrent"
# Default (0), lowest=7, highest=0
IOPRIO="7"
# Default (0), lowest=19, highest=-19
NICE="5"

case "$1" in
  start)
    log_daemon_msg "Starting rtorrent"
    start-stop-daemon --start --background --oknodo \
    --pidfile "$PIDFILE" --make-pidfile \
    --chuid $USER --iosched best-effort:$IOPRIO --nicelevel $NICE \
    --exec $SCREEN -- -DmUS $SCREEN_NAME $RTORRENT
    if [ $? -gt 0 ]; then
        log_failure_msg "FAILED."
        log_end_msg 1
        exit 0
    else
        log_end_msg 0

    fi
    ;;
  stop)
    log_daemon_msg "Stopping rtorrent"
    start-stop-daemon --stop --oknodo --pidfile "$PIDFILE"
    if [ $? -gt 0 ]; then
      log_failure_msg "FAILED."
      log_end_msg 1
    else
      log_end_msg 0 
    fi
    ;;
  restart)
    $0 stop
    sleep 1
    $0 start
    ;;
  *)
    echo "usage: $0 {start|stop|restart}"
esac
exit 0

rtorrent Monit-Konfigurationsdatei

Die Monit-Konfigurationsdatei wird im Verzeichnis /etc/monit/conf.d/ unter dem Namen rtorrent-beispielUser abgelegt. Nach einem Neustart kann der Status von rtorrent abgerufen werden.

check process rtorrent-beispielUser with pidfile /var/run/rtorrent-beispielUser.pid
	start program = "/etc/init.d/rtorrent-beispielUser start"
	stop program = "/etc/init.d/rtorrent-beispielUser stop"
        # Nur bei aktiviertem scgi_port 127.0.0.1:5001 wirksam, sonst auskommentieren
        if failed host 127.0.0.1 port 5001 type tcp then restart
        if 5 restart within 5 cycles then timeout

rtorrent für Debian wheezy kompilieren (UPDATE)

rtorrentlogo

Wenn es etwas aktueller sein muss, lässt sich rtorrent einfach aus den Quellen kompilieren. Das kann zum Beispiel dann der Fall sein, wenn die beliebte Weboberfläche rutorrent eingesetzt werden soll. Diese benötigt eine rtorrent Version mit Unterstützung von Umlauten in der xmlrpc Kommunikation.

Für die Integration von aus den Quellen kompilierter Software steht in den Debian Paketquellen das Programm checkinstall zur Verfügung, dass einfache Debian Pakete automatisch erzeugen kann. Checkinstall wird hier eingesetzt.

Zuerst werden die Abhängigkeiten installiert, die über die offiziellen Paketquellen verfügbar sind.

apt-get install checkinstall build-essential pkg-config libsigc++-2.0-dev libcurl4-openssl-dev libncurses5-dev libxml2-dev

Ergänzend wird eine aktuelle Version von xmlrpc-c benötigt. Diese kann wie folgt oder per Hand von hier heruntergeladen werden.

wget -O xmlrpc.tgz "http://downloads.sourceforge.net/project/xmlrpc-c/Xmlrpc-c%20Super%20Stable/1.25.26/xmlrpc-c-1.25.26.tgz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fxmlrpc-c%2Ffiles%2FXmlrpc-c%2520Super%2520Stable%2F1.25.26%2F&ts=1385046127&use_mirror=heanet"

Dann wird die gewünschte Version von rtorrent und der zugehörigen libtorrent heruntergeladen.

wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.13.4.tar.gz
wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.9.4.tar.gz

Zuerst wird die heruntergeladene Version von xmlrpc-c entpackt und kompiliert. Nach der Installation mittels checkinstall kann das Paket mit dem Befehl apt-get remove xmlrpc-c wieder entfernt werden.

tar xzf xmlrpc.tgz
cd xmlrpc-c-1.25.26
./configure --with-libwww-ssl --enable-libxml2-backend
make
checkinstall make install
cd ..

Dann wird die Bibliothek libtorrent kompiliert. Aufgrund einiger Randfälle im Installationsteil des Makefiles lässt sich die Bibliothek nicht als Paket installieren.

tar xzf libtorrent-0.13.4.tar.gz
cd libtorrent-0.13.4
CFLAGS="-Os -march=native" ./configure --with-posix-fallocate --enable-ipv6
make && make install
cd ..

Zuletzt wird rtorrent selbst entpackt und kompiliert. Das resultierende Paket lässt sich mit dem Befehl apt-get remove rtorrent wieder deinstallieren.

tar xzf rtorrent-0.9.4.tar.gz
cd rtorrent-0.9.4
CFLAGS="-Os -march=native" ./configure --with-xmlrpc-c --enable-ipv6
make
checkinstall make install

Um direkt nach der Installation rtorrent starten zu können, muss der Bibliotheks-Cache mit dem Befehl ldconfig aktualisiert werden. Eine Konfigurationsdatei die im Stammverzeichnis des Benutzers abgelegt werden muss, der rtorrent ausführen soll, gibt es hier.

Die Datei wird in Voreinstellung am Ort ~/.rtorrent.rc gesucht.