Wie man veröffentlichungskritische Bugs in Debian beseitigt

Es hält sich hartnäckig das Gerücht, dass es so etwas wie einen Konkurrenzkampf zwischen Debian und Ubuntu gebe. Tatsächlich ermutigt Ubuntu jedoch neue Software über Debian einzubringen. Im Umkehrschluss heißt das auch, dass jeder Beitrag zu Debian auch ein Beitrag zu Ubuntu ist.
In diesem Artikel geht es darum, dass auch ein kleiner Beitrag der gesamten Distribution weiterhelfen kann und dass das Beseitigen von Bugs, Modifizieren von Quelltext und die Neuerstellung des Pakets kein Hexenwerk sein muss. Besonders hilfreich ist das Beseitigen von sogenannten veröffentlichungskritischen Bugs, kurz RC-Bugs genannt.

Der grobe Ablauf

  1. Finde einen RC-Bug, der dich interessiert.
  2. Erstelle einen Patch für das Problem.
  3. Schicke die Lösung an die Fehlerdatenbank von Debian.
  4. Finde jemanden, der das Paket hochladen kann.

Finde einen RC-Bug

Erster Anlaufpunkt um einen RC-Bug zu finden ist die Ultimative Debian Datenbank (UDD). Hier lässt sich mit Hilfe verschiedener Filteroptionen die Suche exakt einschränken. Für den angehenden Kammerjäger ist diese Ansicht die zur Zeit beste. Wichtig ist, dass man alle schon mit Patch markierten Bugs und alle die neuer als 7 Tage sind ignorieren kann, da es bei ersteren eine Lösung gibt und bei letzteren dem Paketverwalter zumindest eine Chance eingeräumt werden sollte, das Problem selbst zu lösen.
Ein hilfreiches Werkzeug ist das Programm rc-alert, welches sich im Paket devscripts befindet und anzeigt, welche Software auf dem eigenen Rechner kritische Fehler aufweist. Ein Bonus von rc-alert ist, dass es nach Debtags filtern kann.
Mit dem nachfolgenden Befehl werden nur Debian Testing und Unstable nach Bugs durchsucht und geflickte und kurz vor dem Upload stehende Pakete ausgelassen. Zusätzlich wird nur jene Software aufgelistet, die in Perl oder Python implementiert worden ist.
rc-alert --include-dists TU --exclude-tags P+ --debtags implemented-in::perl,implemented-in::python
Multi Disk Error

Erstelle einen Patch

In vielen Fällen benötigt man nicht einmal Kenntnisse in einer Programmiersprache, sondern es genügt mit einem Texteditor umgehen zu können. In Bug #675220, #685959 und #685958 geht es schlicht darum, dass die E-Mail-Adresse des Paketverwalters ungültig ist, was gegen die Paketrichtlinien von Debian verstößt. Genauso gut kann aber auch eine Abhängigkeit falsch sein, wodurch das Paket sich nicht mehr kompilieren lässt. Diese Art von Fehler haben zwar ernste Auswirkungen, lassen sich jedoch in der Regel leicht beheben.
Zum Arbeiten mit Quellpaketen solltet ihr euch das Paket build-essential oder, wenn ihr Gefallen an der Sache gefunden habt, packaging-dev installieren.
apt-get source textedit.app
Mit Hilfe von dpkg-dev wird automatisch das Quellpaket entpackt. Nachdem man in das entpackte Quellverzeichniss gewechselt ist, sollte man zuerst einen neuen Changelog-Eintrag anlegen und deutlich machen, dass man hier eine Änderung als Nicht-Paketverwalterin vornimmt.
dch --nmu
Hierdurch wird automatisch das Changelog mit dem richtigen Eintrag geöffnet. Da der Patch für Unstable gedacht ist (der Regelfall) sollte das UNRELEASED dementsprechend in unstable umgeändert werden. Noch eine kurze Beschreibung, was ihr geändert habt und ein wichtiger Schritt für einen Non-Maintainer-Upload (NMU) ist getan.

textedit.app (4.0+20061029-3.4) unstable; urgency=low
  * Non-maintainer upload.
  * Fix invalid maintainer email address. (Closes: #675220)

Der wichtigste Anlaufpunkt im Quellpaket ist das Debian-Verzeichnis. In debian/control lassen sich z.B. allgemeine Paketinformationen wie die E-Mail-Adresse des Maintainers, Abhängigkeiten oder auch die empfohlenen Pakete in einer einfachen Textdatei definieren. Der "Fix" für die vorher erwähnten Bugs war es, das Maintainer-Feld zu aktualisieren. Gäbe es noch weitere Änderungen zu machen, könnte man mit
dch -a
weitere Einträge zum Changelog hinzufügen und die entsprechende Textdateien innerhalb des Debian-Verzeichnisses ändern.

Einen Patch mit Quilt erstellen

Müsst ihr hingegen den Quellcode selbst patchen und entspricht das Paket dem neuen Format 3.0 (quilt), könnt ihr quilt zum Patchen benutzen. Ob ein Paket dies unterstützt findet ihr heraus, indem ihr einen Blick in die Datei debian/source/format werft. Raphaël Hertzog hat die Bedienung von quilt in einem sehr guten Artikel auf den Punkt gebracht.
Der grobe Ablauf ist, dass ihr innerhalb des Debian-Verzeichnisses einen Ordner patches erstellen müsst, falls er nicht vorhanden ist und dann nach diesem Schema Patches erzeugt.

  • Erstellt einen neuen Patch
    quilt new NamedesPatches
  • Verändert eine oder mehrere Dateien nach Belieben
    quilt edit Datei
  • Wendet den Patch auf die Originaldatei an
    quilt push
  • Erneuert den Patch, wenn er schon existiert.
    quilt refresh

Einen Patch importieren

quilt import -P NamedesPatches /Pfad-zum-Patch.patch
quilt push
Häufig kommt es auch vor, dass schon jemand einen Patch hinterlassen hat und man ihn selbst ausprobieren oder testen möchte.

Schicke den Patch an die Fehlerdatenbank

Ist man der Meinung alles erledigt zu haben, sollte man zuerst alle Patches wieder zurücksetzen und das Quellpaket neu bauen.
Innerhalb des Quellverzeichnisses:
quilt pop -a
Dann

cd ..
dpkg-source -b textedit.app-4.0+20061029

Wenn ihr alles richtig gemacht habt, müsste nun eine weitere .dsc-Datei entstanden sein. Mit Hilfe von debdiff, dass sich auch im Paket devscripts befindet, lassen sich nun alle gemachten Unterschiede als Diff in eine neue Datei ausgeben, der Patch.
Allgemein:

debdiff altesPaket.dsc neuesPaket.dsc > Paket.debdiff

Im Speziellen:

debdiff textedit.app_4.0+20061029-3.3.dsc textedit.app_4.0+20061029-3.4.dsc > textedit.app.debdiff

Diese Datei muss jetzt nur noch per Mail an den Fehlerbericht geschickt werden und dieser mit dem passenden Tag patch markiert werden. Die Anleitung zur Bedienung der Fehlerdatenbank verrät alle Details. Zum Markieren als Patch genügt eine Mail an control@bugs.debian.org mit folgendem Inhalt, wobei nnnnnn für die Fehlernummer steht

tags nnnnnn patch
thanks

Einen Sponsor finden

Im Regelfall sollte das Anhängen des Patches an den Fehlerbericht mehr als ausreichend sein. Es besteht jedoch auch die Möglichkeit das Paket direkt zu mentors.debian.net hochzuladen, wo ihr Hilfe von Debianentwicklern erhalten könnt. Vorher müsst ihr noch wissen, wie man Debianpakete aus den Quellen baut, was auch zum Testen des Patches nützlich ist.
Habt ihr einen Account bei den Mentoren erstellt und seid ihr den Regeln für einen Non-Maintainer-Upload gefolgt, sind die Aussichten gut dort jemanden zu finden, der das gepatchte Paket in das Archiv hochladen kann. Vorausgesetzt natürlich, es löst tatsächlich das Problem.

Lesenswerte und inspirierende Links

Ein Blick in den Abgrund

Ein ziemlich Aufmerksamkeit erheischender Titel, jedoch stammt er nicht von mir, sondern aus Benjamin Ottes Blog und wurde dort als "staring into the abyss" veröffentlicht. Anhand der Kommentare zum Artikel kann man erkennen, dass der Beitrag sicherlich durch einige prominente Newsseiten gewandert ist. Beinahe typisch für mich, stieß ich beim Durchstöbern der verwaisten Debianpakete auf ein Programm namens Byzanz, das eben von jenem Benjamin Otte entwickelt worden ist.
Schon wenig später entdeckte ich bei der Suche nach Informationen hierzu diesen Blogeintrag, der mich ein wenig zum Nachdenken brachte.
Das ist nicht der typische "Ich-sehe-alles-Schwarz-Post" irgendeines Bloggers, sondern er kommt immerhin von einem der Core-Entwickler von Gnome. Er kritisiert zum einen, dass Gnome unterbesetzt sei und hauptsächlich durch Entwickler von Red Hat getragen werde. Seine wichtigsten Kritikpunkte sind aber, dass es dem gesamten Gnome-Projekt an einem Ziel oder einer Vision mangele und dass wichtige Distributionen oder Anwendungen sich von Gnome abwenden oder abspalten (Unity und Cinnamon) anstatt mit Gnome zusammenzuarbeiten.
Mein Highlight aus diesem Post war jedoch die Aussage, dass Benjamin Otte der einzige Vollzeit-Entwickler für GTK ist. Also immerhin die Bibliothek, die für die Darstellung aller Anwendungen bei Gnome, Cinnamon und Unity verantwortlich ist.
In Zahlen: 1
Aber genau diese Tatsache, dass GTK ein Teil von Gnome ist und andere Projekte trägt, geht in seinem Post auch ein wenig unter. Wann ist der Punkt erreicht, wenn andere Projekte hier aushelfen werden und wie viele Freiwillige leisten zwar nur einen kleinen, jedoch entscheidenden Beitrag.
Der Artikel sollte auf jeden Fall aufrütteln und auch ein wenig Dampf ablassen. Man kann nicht bestreiten, dass seit der Veröffentlichung von Gnome 3 ein Bruch im ohnehin winzigen Markt des Linuxdesktops eingetreten ist. Wie können wir es uns eigentlich bei einer so kleinen Community leisten mit Gnome 3, KDE, Xfce, LXDE, Cinnamon und Unity sechs verschiedene Desktopumgebungen anzubieten? MATE und über vierzig verschiedene Fenstermanager nicht mitgezählt.
Fakt ist auch, dass man Vollzeit-Entwickler bezahlen muss, wenn man qualitativ hochwertige Software unterhalten möchte. Freie Software ist nicht kostenlos. Es macht einen Unterschied, ob ich den zwanzigsten Musikplayer oder grundlegende Systembibliotheken zu Standardanwendungen entwickle.
Ich denke, wir tun uns keinen Gefallen, wenn wir versuchen jedes Benutzerszenario immer und überall erfüllen zu wollen. Jedoch glaube ich auch fest daran, dass sich das System von selbst reguliert. Sowohl Ubuntu als auch Linux Mint profitieren von Gnome-Technologien. Sollte also Gnome eines fernen Tages abgewickelt werden, stehen besagte Distributionen ziemlich im Regen. Ist das ein realistisches Szenario? Eher nein.
Auch im September 2012 hat sich bei Debian nicht viel geändert. Spannend bleibt höchstens ob Gnome 3.4 oder Xfce der neue Standarddesktop wird. Es gab aber schon größere Probleme.
Cinnamon wartet immer noch auf seine Aufnahme. Von MATE ist weit und breit nichts zu sehen. Möglicherweise wird aber Fedora 18 MATE in die Distribution aufnehmen.
Ein Blick in den Abgrund, Gnome 3 strauchelt. Möglicherweise ist es jedoch gar nicht so schlimm, es verfehlt die spitzen Speere und wird von DWM gefressen. 😈

Reprepro: Das eigene Paketarchiv für Debian und Ubuntu

Archivbild von Politikaner Wikipedia.org
Ich bin in den letzten Wochen zum ersten Mal mit der Situation konfrontiert worden, ein Repositorium für meine eigenen Debianpakete erstellen zu wollen. Davor beschränkten sich meine Experimente z.B. auf das Erstellen eines Backports für den DWM-Fenstermanager oder ein schnell gebasteltes Paket für den Cube-Server-Lister. Mit Reprepro existiert die Möglichkeit ein eigenes Paketarchiv für Deb-Pakete aufzusetzen und sie lokal mit Hilfe von Apt zu installieren oder Freunden, Testern, der Firma oder schlicht der ganzen Welt zur Verfügung zu stellen. Und das geht so.

Vorbedingungen

Ihr benötigt:

  1. Einen gültigen GPG-Schlüssel
  2. Eigene Deb-Pakete
  3. Reprepro
  4. Einen Web- oder FTP-Server

Ein gültiger GPG-Schlüssel

Führt das folgende Kommando aus:
gpg --gen-key
Die folgenden Dialoge sind selbsterklärend und die Voreinstellungen sinnvoll. Wählt den RSA-Schlüssel (1) und mindestens 2048bit Schlüssellänge.
Die ID eures öffentlichen Schlüssels (pub) erfahrt ihr mit
gpg --list-keys
In meinem Fall wäre das 475C34B9. Mit dem GPG-Schlüssel werden später die Deb-Pakete und das Reprepro-Archiv signiert, so dass ihr anhand der Signatur die Authentizität der heruntergeladenen Pakete erkennen könnt. Damit jemand anders dies auf dem eigenen Rechner überprüfen kann, muss der öffentliche Schlüssel in den Schlüsselring von Debian oder Ubuntu importiert werden.
gpg --output gambaru_archiv.asc --armor --export 475C34B9
Mit diesem Befehl wird der öffentliche Schlüssel im ASCII-Format in die Datei gambaru_archiv.asc exportiert.
wget https://www.gambaru.de/blog/wp-content/uploads/2012/09/gambaru_archiv.asc
Nach dem Herunterladen wird er mit
sudo apt-key add gambaru_archiv.asc
in den Schlüsselring importiert und
sudo apt-key list
verrät, ob er tatsächlich im Schlüsselring angekommen ist.

Eigene Deb-Pakete

Dieser Abschnitt könnte leicht Bücherwände füllen. Für den Anfang tun es aber auch "Wie man Debian-Pakete aus den Quellen baut" oder ihr schaut euch am besten Pbuilder an, womit sich Pakete in einer "Reinraumumgebung" für unterschiedliche Architekturen und sowohl für Ubuntu und Debian bauen lassen und das vollkommen unabhängig von eurer Ubuntuversion. Es lohnt sich das Pbuilder-Howto auf ubuntu.com zu studieren.
Die fertigen Pakete können auch nachträglich mit
debsign Paketname.changes
debsign Paketname.dsc
dpkg-sig --sign builder mediathekview_3.0.0-1_all.deb
signiert werden.

Reprepro

Reprepro ist ein Werkzeug, mit dem sich ein eigenes lokales Repository anlegen lässt, das dem offiziellen Debian Archive Kit in kaum einer Beziehung nachsteht. Es gibt weitere Alternativen, jedoch überzeugt mich Reprepro nicht nur durch seinen großen Funktionsumfang, sondern es kommt auch ohne Datenbankserver aus und lässt sich schnell einrichten. Das Handbuch von Reprepro sowie man reprepro helfen bei der Inbetriebnahme weiter.

Schritt 1:

Zuerst muss ein beliebiges Basisverzeichnis angelegt werden.
mkdir -p ~/reprepro/debian
Im Debian-Verzeichnis wird danach ein Unterordner namens conf angelegt und in diesem die Dateien distributions und options.

Schritt 2:

Der Inhalt von distributions.

Origin: gambaru.de
Codename: experimental
Architectures: i386 amd64 source
Components: main
Description: Private Debian-Pakete von http://gambaru.de
SignWith: yes
Origin: gambaru.de
Codename: wheezy
Architectures: i386 amd64 source
Components: main
Description: Private Debian-Pakete von http://gambaru.de
SignWith: yes

Diese Datei ist als einzige wirklich notwendig. In ihr werden die Distributionen definiert, für die die selbsterstellten Pakete gedacht sind. Ich habe sowohl eine für Experimental als auch Wheezy angelegt. Für Ubuntu lässt sich Wheezy auch durch Precise oder Quantal ersetzen oder ihr könnt euch einen komplett eigenen Codenamen ausdenken. Tatsächlich benötigt ihr nur die Felder Codename, Components und Architecture. Meine Pakete sind DFSG-frei und landen deswegen in Main. Ich stelle sie für die Architekturen i386 und amd64 und natürlich als Quellpakete zur Verfügung. Die Option SignWith: yes führt dazu, dass das gesamte Archiv mit dem zuerst gefundenen GPG-Schlüssel signiert wird. Anstelle von yes kann hier auch die Key-ID stehen.
Der Inhalt der Datei options.

verbose
ask-passphrase

Wenn diese Datei existiert wird jede Zeile als zusätzliches Argument beim Aufruf von Reprepro übergeben, wobei Parameter, die manuell per Kommandozeile übergeben werden, Vorrang genießen. Verbose sorgt für gesprächigere Statusmeldungen und bei ask-passphrase erwartet Reprepro die Eingabe des Passworts für den GPG-Schlüssel, um das Archiv zu signieren.
Nur der Vollständigkeit halber: Es existieren noch die Konfigurationsdateien updates, pulls und incoming, die man für weitergehende Studien im Hinterkopf behalten sollte, hier aber nicht gebraucht werden.

Beispiele

Fügt das Paket mediathekview_3.0.0-1_all.deb dem Archiv experimental hinzu, welches sich im Basisverzeichnis ~/reprepro/debian befindet.
reprepro -b ~/reprepro/debian includedeb experimental /var/cache/pbuilder/sid-amd64/result/mediathekview_3.0.0-1_all.deb
Fügt das Quellpaket mediathekview_3.0.0-1.dsc dem Archiv experimental hinzu, welches sich im Basisverzeichnis ~/reprepro/debian befindet.
reprepro -b ~/reprepro/debian includedsc experimental /var/cache/pbuilder/sid-amd64/result/mediathekview_3.0.0-1.dsc
Allgemein:
reprepro -b [Basisverzeichnis] includedeb|includedsc ARCHIV [Pfad zum Deb-Paket]
Die Eingabe des Basisverzeichnisses kann man weglassen, wenn man eine Umgebungsvariable exportiert oder die nachfolgende Zeile in seine .zshrc einträgt. Z.B.
export REPREPRO_BASE_DIR='/home/apo/reprepro/debian'
Danach lassen sich Pakete mit
reprepro includeb experimental Mein-Paket.deb
von überall hinzufügen.
Entfernen lassen sich Pakete aus dem Archiv mit:
reprepro remove experimental Mein-Paket
Und mehr müsst ihr nicht wissen. Ein Tipp noch am Rande: Damit ihr das GPG-Passwort nicht permanent neu eingeben müsst, solltet ihr Programme wie Gnome-Keyring oder Keychain und gnupg-agent installiert haben, womit das Passwort zwischengespeichert wird.

Das eigene Deb-Archiv lokal verfügbar machen

Am einfachsten ist es nun auf das lokal erstellte Paketarchiv zuzugreifen, wozu lediglich diese Einträge der /etc/apt/sources.list hinzugefügt werden müssen.

deb file:///home/apo/reprepro/debian/ experimental main
deb-src file:///home/apo/reprepro/debian/ experimental main

Zur Sicherheit solltet ihr die Pin-Priorität dieser Pakete absenken, indem ihr einen Eintrag zur Datei /etc/apt/preferences hinzufügt. Im Regelfall muss sie zuerst angelegt werden. Mit ihr lässt sich präzise das Mischen von mehreren Paketquellen steuern. (Stichwort Apt-Pinning, siehe auch man apt_preferences.)

Package: *
Pin: release o=gambaru.de
Pin-Priority: 1

Da es sich bei meinen Paketen um experimentelle Pakete handelt, ist es am besten die Priorität auf 1, einen sehr niedrigen Wert, zu setzen. Ihr könnt das Ergebnis vorher und nachher mit
apt-cache policy
überprüfen.
Danach genügt wie immer
aptitude update
aptitude -t experimental mediathekview
um das eigene Paket via Apt mit allen Abhängigkeiten zu installieren.

Reprepro: Repository weltweit freigeben

Mit Hilfe eines Web- oder FTP-Servers lässt sich das eigene Archiv auch weltweit und nicht nur lokal verteilen. Die Konfiguration eines Webservers wie Lighttpd war mir schon einen eigenen Beitrag wert. Reprepro funktioniert natürlich auch mit Nginx und Apache.
Ich habe mich jedoch für einen FTP-Server entschieden. Hierzu benutze ich vsftpd. Die Anleitung für die Konfiguration im Zusammenspiel mit OpenArena lässt sich ganz einfach auch auf Reprepro übertragen.
In diesem Fall betreibt ihr den FTP-Server ausschließlich anonym ohne Schreibrechte. Ich habe den kompletten Debian-Ordner des Basisverzeichnisses von Reprepro mittels SCP hochgeladen und die Unterordner db und conf aus Sicherheitsgründen entfernt. Um die Paketquellen von gambaru.de einzubinden, müsstet ihr folgendes in der /etc/apt/sources.list eintragen und den gambaru_archiv-Schlüssel eurem Schlüsselring hinzugefügt haben.

deb ftp://46.182.19.209/debian experimental main
deb-src ftp://46.182.19.209/debian experimental main

Fazit

PPAs waren gestern, heute baut man sich sein eigenes Paketarchiv. 😉 Es gibt noch viele weitere Optionen von Reprepro zu entdecken. Unter anderem ist die automatische Verarbeitung von "incoming queues" möglich und das Spiegeln des kompletten Debian- und Ubuntu-Archivs! Wenn ihr häufig Deb-Pakete herunterladet und Bandbreite sparen wollt, hilft eventuell auch Apt-Cacher-NG, ein Proxy-Server, weiter.
Jeder, der bis hierhin gelesen hat, hat sich automatisch als Tester für zwei Pakete qualifiziert, an denen ich gerade arbeite und hoffe sie als Paketverwalter weiterpflegen zu dürfen. Bitte Bugs direkt hier oder in den alten Posts zu Mediathekview und Wbar melden. 🙂

Backup leicht gemacht: Lokale und entfernte Sicherung mit Dirvish, Rsync und SSH

An mehreren Stellen habe ich hier schon meine ganz persönlichen Backup-Methoden vorgestellt.

  1. Keep it simple
  2. Partimage
  3. Partclone
  4. The Debian Way
  5. Apt-Clone
  6. Live-CDs (z.B. Clonezilla)

Die Reihe könnte man noch eine Weile mit weiteren guten Alternativen fortführen. Oft kombiniere ich auch die ein oder andere Variante, wenn mir Daten besonders wichtig sind. In den vergangenen Wochen habe ich mir endlich Dirvish näher angeschaut, das Rsync und SSH miteinander verbindet und mir wieder einmal die Frage gestellt: "Warum eigentlich nicht früher?". 🙂 Wer sowieso schon Rsync und SSH kennt, aber sich die vielen Kommandos nicht merken oder sogar Skripte dafür schreiben möchte, kann ganz einfach auf Dirvish zurückgreifen, das diese Probleme schon vor einer Dekade gelöst hat.
Interessant ist Dirvish nicht nur für alle, die gerne nach besonders effizienten Lösungen für die Konsole suchen, sondern es besticht vor allem durch die einfache Konfiguration und der Möglichkeit die Sicherung vollautomatisch per Cron-Job ablaufen zu lassen und kann auch ganz leicht manuell bedient werden.
Im Folgenden beschreibe ich die Sicherung eines Laptops und eines entfernten vServer mit Hilfe von Dirvish, Rsync und SSH. Dabei werden alle Daten auf eine handelsübliche USB-Festplatte gesichert, die an den Laptop angeschlossen ist.

Backup eines lokalen Rechners auf eine USB-Festplatte mit Dirvish

aptitude install dirvish

Nach der Installation von Dirvish, welches auch automatisch Rsync als Abhängigkeit mitinstalliert, könnt ihr mit der Dokumentation in /usr/share/doc/dirvish/HOWTO.Debian.gz und im dazugehörigen Beispiel-Ordner sofort loslegen. Für die gesamte Konfiguration sind lediglich zwei Dateien entscheidend.

master.conf

Die Datei master.conf wird nach /etc/dirvish/master.conf kopiert. Hierin werden alle globalen Einstellungen festgeschrieben.

  • bank: Gibt den Pfad zum Speicherort der Sicherung an. In meinem Fall existieren zwei Verzeichnisse auf einer externen USB-Festplatte, der ich zuvor mit
    tune2fs -L backup /dev/mapper/udisks-uuid-und-noch-mehr-Text
    einen kürzeren und leichter zu merkenden Namen gegeben habe. Wenn man schon dabei ist, kann man sie auch gleich mit luksformat vorher verschlüsseln.
  • exclude: Definiert die Verzeichnisse, die nicht gesichert werden sollen.
  • Runall: Die zuerst angegebenen Namen bezeichnen die sogenannen Schließfächer (vault), in denen die Daten gespeichert werden. Ein Schließfach ist nichts anderes als ein Unterverzeichnis, das man nach dem zu sichernden Dateisystem benennen sollte. Der Zeitstempel definiert nicht den Zeitpunkt der Ausführung, sondern dient lediglich als Bezugspunkt. Sollte das Backup z.B. aus welchen Gründen auch immer später ausgeführt werden, wird die Sicherung auf 22.00 Uhr zurückdatiert, damit die Logik intakt bleibt.
  • expire-default: Kann z.B. never oder +15 days sein und gibt an, wie lange einzelne Sicherungen standardmäßig vorgehalten werden sollen.
  • expire-rule: Wer den Aufbau der Datei crontab kennt, weiß sofort um was es geht. Die erste Zeile besagt, dass am ersten Tag der Woche, dem Montag, erstellte Backups für 3 Monate vorgehalten werden sollen. Man kann mit Hilfe dieser Syntax weitere beliebige Zeiträume und Zeitpunkte definieren.
bank:
	/media/backup/dirvish/laptop
	/media/backup/dirvish/server
exclude:
	lost+found/
	proc/
Runall:
	laptop-root	22:00
	laptop-home	22:00
	server-root	22:00
expire-default: +15 days
expire-rule:
#       MIN HR    DOM MON       DOW  STRFTIME_FMT
	*   *     *   *         1    +3 months
#	*   *     1-7 *         1    +1 year
#	*   *     1-7 1,4,7,10  1
#	*   10-20 *   *         *    +4 days
#	*   *     *   *         2-7  +15 days

Der Laptop

Erstellt nun die zweite Konfigurationsdatei für das Schließfach laptop-root. In diesem Beispiel wäre das
/media/backup/dirvish/laptop/laptop-root/dirvish/default.conf.
Default.conf ist immer richtig und für die meisten Anwendungsfälle vollkommen ausreichend. Es lassen sich aber noch zusätzliche Konfigurationen erstellen (Branch).

client: laptop
tree: /
xdev: 1
index: gzip
log: gzip
image-default: %Y%m%d
exclude:
        /var/cache/apt/archives/*.deb
        /var/cache/man/**
        /tmp/**
        /var/tmp/**
        *.bak
        /proc/**

Die Datei ist ähnlich wie die Datei master.conf aufgebaut. Wichtig sind hierbei vor allem:
client: In diesem Fall laptop. Wenn dieser Name dem Rechnernamen entspricht (hostname), erkennt Dirvish automatisch, dass es sich um ein lokales Backup handelt und verwendet kein SSH.
tree: Welches Verzeichnis gesichert werden soll. In diesem Fall das gesamte Wurzelverzeichnis.
xdev: Kann den Wert 1 oder 0 annehmen. 1 bedeutet, dass die Sicherung auf das angegebene Dateisystem beschränkt bleibt und Dirvish z.B. eingehängten Verzeichnissen nicht folgen wird. Hat man wie ich /home auf eine andere Partition installiert, würde dieses beim Wert 1 nicht gesichert werden. Hierzu muss also ein weiteres Schließfach mit einer neuen default.conf angelegt werden oder man setzt xdev hier auf 0.
Des Weiteren lässt sich der Zeitstempel für das Backup festlegen und Verzeichnisse von der Sicherung ausschließen. Diese Regel gilt zusätzlich zu den in der master.conf getroffenen Einstellungen.
Für das Schließfach "latop-home" müsst ihr noch einmal die Schritte gehen. Hier ändert sich nur der Wert der tree-Variable auf /home und ggf. die ausgeschlossenen Verzeichnisse.

Die erste Sicherung - Initialisieren

dirvish --vault laptop-root --init
dirvish --vault laptop-home --init

Am nächsten Tag könnt ihr dann mit

dirvish-runall

ein neues Backup erstellen, bei dem nur die geänderten Daten gesichert werden. Aufgrund der Verwendung von Hardlinks und der inkrementellen Natur der Datensicherung wird deswegen nur wenig Speicherplatz benötigt. Wird dieser doch einmal knapp, lässt sich mit

dirvish-expire

Platz schaffen, indem die in der master.conf definierten Regeln Anwendung finden.
Wer einen eigenen Heimserver betreibt, kann auch die Einstellungen in /etc/cron.d/dirvish beibehalten, die dafür sorgen, dass Dirvish automatisch um 04.22 Uhr ausgeführt wird. Wer den Rechner nicht 24/7 laufen lässt, sollte die Datei entfernen oder den Cron-Job auskommentieren.

Entfernte Sicherung eines vServers mit Hilfe von SSH

Wenn ihr bis hierher gefolgt seid, dann ist die Datensicherung eures vServers, auf die an euren Laptop angeschlossene USB-Festplatte, ein Kinderspiel.
Ihr benötigt dafür auf jeden Fall das Paket SSH, einen Account auf dem Server und SSH-Schlüssel. Weiterhin gehe ich davon aus, dass ihr wie im alten Beitrag beschrieben den Port des SSH-Servers geändert habt und Root sich nicht anmelden darf.
Diese Beschränkung heben wir nun wieder auf, da wir den kompletten vServer sichern wollen. Aber...Root darf nur ein einzelnes Kommando über SSH ausführen, den Rsync-Befehl, und sonst nichts.

Default.conf des Servers auf dem Backup-Rechner

client: server
rsh: ssh -p 44444 -i '/root/.ssh/id_rsa'
tree: /
xdev: 1
index: gzip
log: gzip
image-default: %Y%m%d
exclude:
        /var/cache/apt/archives/*.deb
        /var/cache/man/**
        /tmp/**
        /var/tmp/**
        *.bak

Der entscheidende Unterschied zu der lokalen Sicherung der Daten des Laptops ist der geänderte Wert für client: und die Variable rsh. Am besten tragt ihr in /etc/hosts einen Alias für eure Server-IP ein und nennt diesen dann schlicht server.
Der Wert für rsh (remote shell) ist der SSH-Befehl, um sich mit einem SSH-Server und dem SSH-Schlüssel zu verbinden, der auf einem Nicht-Standardport Anfragen entgegennimmt.

Auf dem Server

In der Datei /etc/ssh/sshd_config den Wert für PermitRootLogin auf forced-commands-only setzen.
Danach noch dem öffentlichen SSH-Schlüssel in /root/.ssh/authorized_keys eine Bedingung voranstellen, die erfüllt sein muss, damit sich Root anmelden darf. (vor ssh-rsa schreiben)

command="rsync --server --sender -vlHogDtprxe.iLsf --numeric-ids . /",from="10.0.0.5",no-port-forwarding,no-X11-forwarding,no-agent-forwarding

Mit from= lässt sich sogar die IP-Adresse einschränken, von der sich Root anmelden darf. Der Befehl selbst lässt sich leicht mit htop auf dem Server herausfinden, wenn man ein Dirvish-Backup beobachtet oder man macht es wie Thor Dreier mit einem Hilfsskript, von dem auch dieser exzellente Dirvish-Tipp stammt. Sein Artikel aus dem Jahr 2005 ist auf jeden Fall empfehlenswert.

Fazit

Dirvish ist eine alte, aber noch lange nicht ergraute Lösung zum Sichern von Daten. Mit Hilfe auch gerne etwas älterer Hardware, habt ihr im Handumdrehen eine Backup-Lösung für alle Rechner zu Hause und für das Rechenzentrum in Schweden. 😉

Meine Woche mit Linux, Spielen und Musik: Limbo, Humble Music Bundle, ScummVM 1.5, Warsow 1.0 und Tryst

Mal ein paar Neuigkeiten aus der Welt der Linuxspiele. Jeder einzelne Artikel wäre zu kurz geraten, deswegen gibt es heute ein Potpourri an Themen zum Thema Spiele und Linux.

Limbo

Ja, Limbo, war das nicht schon im letzten Humble Indie Bundle V enthalten? Richtig. Damals hatte ich es mir schon als "spielenswert" herausgepickt und mich danach auf den Weg gemacht, um die düstere Welt eines kleinen Jungen zu erkunden. Da ich nicht zu viel spoilern will, sei hier nur gesagt, dass ich nicht einmal im Verlauf des Spiels gestorben bin und alle fiesen Fallen der Programmierer mit Hilfe der Matrix locker umgangen habe. (Was man nicht sehen kann, sind die Finger, die ich hinter meinem Rücken kreuze.)
Nein ehrlich, das Spiel ist von der Stimmung und Atmosphäre her sehr gelungen. Die Steuerung ist einfach zu erlernen, jedoch wird man praktisch ins kalte Wasser oder besser den Wald geworfen. Warum und wieso und wie es weitergeht, erfährt man durch das Ausprobieren des Spiels, was ich persönlich sehr spannend fand. Wer vollkommen in diese dunkle Fantasie eintauchen möchte, genug Geistige Gesundheit und Stabilitätspunkte auf dem Konto und keine Arachnophobie hat, dem kann ich das Spiel auf jeden Fall empfehlen. Linuxtechnisch ließ sich das Spiel unter Debian problemlos installieren. Es liegt aber nicht nativ vor, sondern wird mit Hilfe von Wine gespielt, dass im Deb-Paket von Limbo integriert wurde.
Limbo

Humble Music Bundle

Seit knapp einer Woche gibt es nun wieder was Neues von den Jungs und Mädels, die das Humble-Bundle-Projekt regelmäßig wieder auf die Beine stellen. Dieses Mal stehen keine Spiele, sondern Musik im Vordergrund. Sechs drm-freie Alben warten darauf gehört zu werden. Zumindest Christopher Tin, dessen Album Calling all Dawns im Bundle enthalten ist, scheint noch gewisse Probleme mit dem Begriff Linux zu haben: "Ehm Linux whatever that is."
Die Musik ist zwar nicht wirklich frei, jedoch bietet sich wie gehabt die Möglichkeit so viel zu bezahlen, wie man selbst für angemessen hält und wie bisher werden gemeinnützige Organisationen und natürlich die Künstler davon unterstützt.

ScummVM 1.5 erschienen

ScummVM
Auf holarse-linuxgaming.de habe ich zum ersten Mal vom neuen Release 1.5 "Picnic Basket" von ScummVM gelesen. Neben zwölf neu unterstützten Spielen gibt es dazu auch die passende neue Engine und eine Reihe von Fehlerbehebungen. ScummVM ist unter anderem jetzt auch auf dem Nokia 770 Tablet spielbar, dass mit Maemo betrieben wird. Dass ich ein großer Fan von ScummVM bin, hatte ich anderer Stelle schon einmal durchscheinen lassen. 🙂

Warsow 1.0

Nach sieben Jahren in der Betaphase wurde Warsow nun endlich in Version 1.0 veröffentlicht. Ich hatte es vor kurzem neben anderen bekannten FOSS-Spielen vorgestellt. Es hätte mit Sicherheit einen Platz auf meinem Server gefunden, wenn das Spiel nicht aus Wheezy entfernt worden wäre, da niemand sich um die Beseitigung der Bugs gekümmert hat. Es gibt mittlerweile Bestrebungen den Titel für Jessie auf Hochglanz zu bringen. Das Paket befindet sich auch weiterhin mit einer veralteten Version in Debian Unstable. Ich denke nach der Veröffentlichung von Wheezy wird es hier weitergehen und vielleicht sieht man es dann irgendwann auch auf linuxiuvat.de

Tryst

Auch zum Spieletitel Tryst gab es bei Holarse einen netten Artikel. Hierbei handelt es sich um ein Echtzeitstrategiespiel von BlueGiant Interactive. Auf einem fremden Planeten streiten Menschen und Aliens um die Vorherrschaft über Ressourcen. So weit so bekannt. Die Grafik ist Dank der Unigine Engine auf hohem Niveau. Interessanter als diese ist natürlich das Gameplay, was einen Kampf von bis zu 8 Spielern im Mehrspielermodus verspricht und mit Spezialfähigkeiten für jede Einheit wirbt. Optisch sieht es für mich auf den ersten Blick ein wenig nach Starcraft II aus, dass sich mit Wine auch unter Linux spielen lässt.
Das Beste von allem aber: Das Spiel wird laut diesem Forenbeitrag nach der Veröffentlichung auch für Linux nativ erscheinen. Ich bin gespannt.

Lecker – Cube 2: Sauerbraten

Es ist angerichtet. Anstatt kulinarischer Spezialitäten gibt es heute jedoch das native Linuxspiel Cube 2: Sauerbraten. Zugegeben für all die, wo Deutsch als Muttersprache haben tun, klingt dieser Name für einen waschechten Ego-Shooter erst einmal seltsam in den Ohren. Scheinbar aber nicht für den Erschaffer des Spiels, Wouter „Aardappel“ van Oortmerssen. Wen sollte das bei seinem Spitznamen, "Kartoffel", auch wundern.
In diesem Beitrag stelle ich Cube 2: Sauerbraten vor, das seit mehr als vier Monaten zu meinem Spieleprojekt gehört. Ich beschreibe hier die wichtigsten Spielmerkmale, natürlich gibt es auch Bilder und Links und eine auf den Punkt gebrachte Anleitung, wie man selbst einen dedizierten und offenen Sauerbraten-Server mit Debian und Ubuntu aufsetzen kann.
Und was den Namen anbelangt...einfach Englisch aussprechen: Sourrrrbrrrääten. Perfekter Name für einen Ego-Shooter. 🙂

Warum Sauerbraten?

Nachdem ich mir ein paar Kriterien für in Frage kommende Spiele ausgedacht hatte, punktete Sauerbraten auf jeden Fall mit seinen außerordentlich geringen Hardwareanforderungen sowohl beim Client als auch beim Server.
Das Spiel ist schnell, wirklich schnell, genauso wie in den guten alten Zeiten. Neben 20 verschiedenen Spielmodi existieren auch noch mehr als 150 offizielle Karten, 7 Waffen, ein toller Soundtrack und ein bemerkenswertes Feature, neue Karten mit mehreren Spielern gleichzeitig online zu erschaffen. Von all den Spielen auf dem Server ist es jedoch am "unfreisten". Richard Stallman wird es vermutlich nie spielen. Die Spielengine und damit der Server ist zwar unter einer freien Lizenz verfügbar, große Teile der Mediendateien jedoch nicht.
Dennoch glaube ich, dass Sauerbraten eine Chance verdient hat, da das Spiel nicht nur die Möglichkeit bietet neue freie Inhalte zu schaffen, sondern auch schon Projekte wie Red Eclipse inspiriert hat, deren Medieninhalte unter freien Lizenzen stehen.

Der Sauerbraten-Client

aptitude install sauerbraten
Die Spielanforderungen von Sauerbraten sind moderat. Eine 1-GHz-CPU, 256MB RAM und eine Geforce 4 MX sollten es mindestens sein. Wer jemals einen Ego-Shooter gespielt hat, kennt das grundlegende Prinzip. So lässt sich auch Sauerbraten mit den W-A-S-D-Tasten steuern, mit Space springt der eigene Avatar, mit der linken Maustaste wird geschossen und mit kreisenden Mausbewegungen das Sichtfeld geändert.
Danach sind noch erwähnenswert:
R - Sollte man trotz aller Versuche in einer Ecke zu campen über die Flagge gestolpert sein, dann kann man sie mit einem Druck auf R wieder fallenlassen. 😉
T - öffnet den Chat. Auf einem öffentlichen Server ohne AUTH kann man mit der Eingabe von /setmaster 1 Masterrechte erlangen. Dazu gleich mehr.
E - Startet den Bearbeitungsmodus, in dem es möglich ist, innerhalb des Coop-Edit-Modus mit mehreren Mitspielern gleichzeitig eine Karte zu verändern oder neuzugestalten! Auf ogros.org gibt es eine nette Übersicht zu einer (englischen) Videoanleitung zum Thema.
Mehr ist wirklich nicht notwendig, um in das Spiel einsteigen zu können.

Serverbrowser und das Menü

Das Spielmenü und insbesondere der Serverbrowser könnten übersichtlicher gestaltet sein. Es gibt jedoch die Möglichkeit ein eigenes zu erstellen, wie dieser Artikel auf ogros.org beschreibt. Da die Voreinstellungen gut sind und man intuitiv in das Spiel findet, muss man sich hier nicht lange aufhalten. Unter Keys lassen sich die Tastenbelegungen ändern.

Cube Server Lister

Ich hatte den Cube Server Lister schon an anderer Stelle erwähnt. Wer sich mit dem normalen Serverbrowser nicht anfreunden kann, sollte sich die Zeit nehmen und der Anleitung folgen, wie man sich ein eigenes CSL-Debianpaket erstellen kann. Mit diesem Hilfsprogramm, dass unter der GPL veröffentlicht worden ist, lassen sich Details zu allen Cube-2-Servern anzeigen und mit einem Doppelklick auf den Servernamen des jeweiligen Spiels tritt man einem Spiel bei.

Spielmodi

Sauerbraten bietet ein Wiki mit einem Multiplayer Guide und eine umfangreiche Dokumentation.
Im Mehrspielermodus gehört man entweder dem guten oder dem bösen Team an. Mit leisen Zwischentönen halten wir uns natürlich nicht auf. Unabhängig davon gilt: Die roten Spieler sind immer die Gegner und mit den blauen spielt man in einem Team zusammen.
In Sauerbraten gibt es sieben verschiedene Waffen: Doppelläufige Schrotflinte, Minigun, Gewehr, Raketenwerfer, Granaten, Pistole, Fäuste/Kettensäge. Dazu lassen sich in den meisten Modi Gesundheit, Rüstung und Munition aufsammeln.
Das Spiel bietet zur Zeit 20 verschiedene Spielmöglichkeiten und in der aktuellen Entwicklerversion stehen schon weitere parat. Neben dem klassischen Free For All (FFA) und InstaGib, wo es einfach nur um "Jeder gegen Jeden" geht, gibt es natürlich auch noch Fahnenraub (alias Capture the Flag). Mir persönlich gefällt "Regen Capture" ziemlich gut, wo man auf einer relativ großen Karte verschiedene Punkte kontrollieren muss. An einer eroberten Station erhält man Waffen, Leben und Punkte. Dieser Modus ist auch mit sehr vielen Spielern noch interessant und sehr dynamisch.
Der Screenshot zeigt eine Szene aus einem Spiel mit dem Modus "Regen Capture". Außerdem erkennt man an der Servernachricht, dass der Server gepatcht wurde.

Coop-Edit-Modus

Auf meinem offenen Server wird sehr oft der Coop-Edit-Modus genutzt. Hier lassen sich gemeinsam mit anderen Spielern bestehende Karten modifizieren oder komplett neue erstellen. Die oben erwähnte Anleitung zum Kartenbau oder ein Blick auf die Wiki-Seite Mapping and Editing ist ein guter Start in die Materie. Das Wichtigste: Wenn ihr einem Server beitretet, auf dem an einer neuen Karte gearbeitet wird, einfach /getmap in den Chat schreiben und ihr seht den aktuellen Stand vor euch. Hier sind ein paar Screenshots von einer Coop-Edit-Sitzung auf dem Server.
In Natenoms Blog findet ihr unter anderem ein cooles Video zu einer selbst erstellten Karte, die eine in sich geschlossene kleine Stadt darstellt. Da steckt sicher eine Menge Arbeit drin.

Musik

Sauerbratens instrumentaler Metalsoundtrack stammt von Marc A. Pullen, lässt sich auf last.fm herunterladen und befindet sich selbstverständlich auch im OGG-Format in /usr/share/games/sauerbraten/fanatic/.

Der Sauerbraten-Server

Aufgrund des besonderen Client-Server-Modells ist der Sauerbraten-Server sehr leichtgewichtig. Der Speicherverbrauch liegt bei 2-3 MB RAM auf einem 64bit-System und auch die CPU-Anzeige von htop habe ich selbst bei einem vollen Server noch nie über 1% springen sehen. Im Gegensatz zu vielen anderen Mehrspieler-Spielen ist es bei Sauerbraten nicht notwendig, dass Server und Client sich permanent über Treffer und Aktionen austauschen, was es erlaubt die wesentlichen Funktionen des Servers auf ein Minimum zu beschränken. Dadurch bleibt das Spiel selbst bei hohen Pings noch spielbar. Auf der anderen Seite macht es Sauerbraten gegenüber Cheatversuchen auch verwundbarer, was durch die Open-Source-Natur des Spiels noch begünstigt wird.

Die Authentifizierung

Sauerbraten begegnet diesem Problem mit einer ungewöhnlichen, aber nachvollziehbaren Entscheidung. Da selbst die populärsten proprietären Spiele mit einem Stab von bezahlten Entwicklern keinen vollkommenen Schutz gegen jede Art von Manipulationsversuch bieten können, haben die Entwickler die Verantwortung und Kontrolle an die Spielgemeinschaft zurückgegeben. Auf jedem Server kann ein Spieler sogenannter "Master" werden und Verstöße mit einem Bann vom Server bestrafen. Die Funktion wird entweder über das Spielmenü oder durch Eingabe von /setmaster 1 im Chat (Taste t) aufgerufen.
Sauerbraten-Server kennen im Wesentlichen zwei Arten von Autorisation: Mit Auth-Schlüssel und ohne.

  • Auth-Schlüssel. Durch den Hauptentwickler des Spiels werden sogenannte Auth-Schlüssel vergeben, mit denen vertrauenswürdige Spieler auf jedem Server mit Auth-Status Master werden können.
  • Öffentliche Server. Jeder kann dem Server beitreten. Diejenige, welche zuerst /setmaster 1 in den Chat eingibt, erhält den Master-Status.

Von diesen beiden Formen der Registrierung ist der Administrator des Server mit seinem Admin-Passwort jedoch nicht betroffen. Er kann jederzeit mit /setmaster und der anschließenden Eingabe des Admin-Passworts selbst dann zum Master werden, wenn diese Rechte schon an einen anderen Spieler vergeben worden sind.
Für mein Projekt habe ich mich für einen öffentlichen Sauerbraten-Server entschieden, auf dem jeder Master werden kann. Zusätzlich ist es möglich den Server so zu sperren, dass zwar weiterhin Spieler beitreten können, diese aber nur zuschauen und den Chat mitlesen dürfen. (L=Locked)

Installation und Konfiguration

aptitude install sauerbraten-server
Zur Inbetriebnahme des Servers ist es sinnvoll einen unprivilegierten Benutzer mit adduser anzulegen, z.B. sauerbraten. In dessen Home-Verzeichnis wird die zentrale Konfigurationsdatei server-init.cfg erstellt. Die verfügbaren Einstellungsmöglichkeiten sind überschaubar, was es einfach macht sich zurechtzufinden. Es ist sinnvoll die Shell des Benutzer auf /bin/false zu setzen.
chsh sauerbraten -s /bin/false
Das Programm lässt sich am besten in einer Screen-Sitzung starten. Hierzu erstellt man eine ausführbare Datei start.sh mit folgendem Inhalt.

#!/bin/sh
while true
do
/usr/games/sauerbraten-server -q/home/sauerbraten
echo "server abgestuerzt am `date`" > letzter_crash.txt
done

Den Server kann man danach auf diese Weise starten:
su sauerbraten -s /bin/dash -c "screen -m -d -S ffa_sauer sh start.sh"
Sollte es tatsächlich zu einem Absturz kommen, sorgt die While-Schleife automatisch für den Neustart und für einen kurzen Vermerk in der Datei "letzter_crash.txt". Sauerbraten läuft sehr stabil. Bei einer Uptime von > 30 Tagen kam es jedoch auch schon zum Crash. Die oben genannte Konfiguration sorgt dann dafür, dass der Server nur wenige Sekunden nicht erreichbar ist.
Schließlich lässt er sich auch über eine Cron-Reboot-Aktion bei einem Neustart hochfahren. In /etc/crontab steht deswegen
@reboot sauerbraten screen -d -m -S ffa_sauer sh /home/sauerbraten/start.sh
Der Port des Servers lässt sich ändern. Wer eine Firewall betreibt muss den Standardport 28785 und 28786 freigeben. Spielt man im LAN gilt das auch für Port 28784. Allgemein gesprochen: Gebt immer Port und Port+1 frei und im LAN zusätzlich noch 28784.

Modifikationen

Ich betreibe den Server, so wie ihn Debian und auch Ubuntu ausliefern, ohne jede Form von Modifikation. Es gibt verschiedene Projekte, die die Standardfunktionen erweitert haben, jedoch weiterhin kompatibel zum Original sind. Neue Merkmale sind unter anderem veränderte Statistikanzeigen im Spiel, neue Kontrollmöglichkeiten durch den Admin und Integration mit IRC. Maßgeblich sind das die Projekte XSBS und Hopmod. Ebenfalls erwähnenswert ist Bandnudel, ein Skript um Statistiken für den Server zu erstellen. Da ich diese Modifikationen nicht benutze, seid ihr hier auf euch allein gestellt.
Des Weiteren bietet der gesamte Webauftritt des Ogros-Clans einen guten Überblick, was man mit selbst erstellen Servermodifikationen erreichen kann. Leider werden diese im Gegensatz zum Cube-Server-Lister, der ebenfalls von dort stammt, nicht frei zur Verfügung gestellt.

Screenshots

Hier sind ein paar Screenshots. Viele weitere gibt es hier.

Links

Dinge, die da kommen werden

Um es für die Zukunft einfacher zu machen Artikel aufzufinden, werde ich eine Übersichtsseite für Debian und mein vServer-Projekt erstellen, später vielleicht auch für andere Ideen, die sich über einen längeren Zeitraum erstrecken. Passend dazu erscheinen ein paar ergänzende Artikel und in den nächsten Tagen dann die Hauptseiten, die im Wesentlichen Links zu bereits verfassten Beiträgen beinhalten. Eine Art Inhaltsverzeichnis also.
Die Idee habe ich schon länger, im Prinzip solange das Blog schon existiert. Damals mangelte es einfach an der Auswahl an Beiträgen. Mittlerweile sieht die Welt anders aus.
Mein Vorhaben ist auf die wichtigsten Fragen einzugehen, die bei der Benutzung von Debian auftauchen und gleichzeitig in meiner Art zu versuchen die Installation und Konfiguration dieses Freien Betriebssystems zu erklären. Dabei möchte ich vor allem auf die eigene Gestaltung von minimalen Desktopumgebungen näher eingehen.
Es läuft darauf hinaus, dass die einzelnen Aspekte wie Netzinstallation, Auswahl von nützlichen Werkzeugen und Software und die Vorstellung von einzelnen Fenstermanagern mit Konfiguration vernetzt werden und schnell auffindbar sind. Gedacht ist das vor allem für interessierte Linuxnutzer, die schon grundlegende Erfahrungen haben oder dazu neigen ihr System gerne selbst anpassen zu wollen. Insbesondere interessieren mich momentan Enlightenment und PekWM und einige andere Fenstermanager-Exoten, nicht zu vergessen wurde schon etwas zu DWM, Openbox, Fluxbox, Awesome und IceWM geschrieben.

linuxiuvat.de

Mit meinem vServer-Projekt bin ich gut vorangekommen und es stehen im Großen und Ganzen nur noch folgende Beiträge aus.

  • OpenArena
  • Cube2:Sauerbraten
  • Red Eclipse
  • Teeworlds
  • XPilot-NG
  • TetrinetX
  • Eventuell noch zwei weitere Spiele

Dazu kommt noch eine Vorstellung von Hilfsmitteln wie Tiger und Fwlogwatch und dann denke ich, dass die wesentlichen Inhalte auch in Textform abgearbeitet wären und ich für mich und andere zumindest einen kleinen Leitfaden habe, an was man bei einem eigenen (v)Server-Projekt denken sollte.
Danach brauche ich noch ein paar Bilder für die Gestaltung des Webauftritts, wozu mir Gimp und Inkscape weiterhelfen werden und einige der tollen Tutorials, die im Netz schon existieren. Da Kunst noch nie meine große Stärke war (ich bewundere aber Künstler!) werde ich darüber kaum bis gar nicht schreiben, es sei denn ich fühle mich mutig genug. Mal schaun. 🙂
Und dann werde ich weitere leichtgewichtige Betriebssysteme ausprobieren, die mir von Ikem und anderen z.B in diesem Artikel und über all in diesem Blog verteilt empfohlen wurden und dann schauen wir mal, ob sie eine gute Ergänzung zum bisherigen Zwischenstand sind. 🙂
Ich denke, das genügt erst einmal. 😉

FTP, NcFTP, wput, Midnight Commander: Vier FTP-Alternativen für die Konsole

Freunden, die noch nicht die Segnungen von Linux empfangen haben, empfehle ich meistens Filezilla oder das Firefox-Addon FireFTP. Letzteres ist bei mir seit mindestens zwei Jahren standardmäßig installiert. Es ist einfach zu praktisch aus dem Browser heraus mal schnell sich in den FTP-Account einzuloggen. Meistens muss ich aber nur ein, zwei Dateien herunter- oder hochladen und dazu funktionieren diese Konsolenprogramme hier ausgesprochen gut.

FTP

Eines der Standardprogramme ist ftp. Im Regelfall sollte es deshalb automatisch installiert sein.

ftp 123.123.123.123


Handelt es sich um einen anonymen Server wird man sofort nach einem Namen gefragt. Ein "anonymous" garantiert den Zugriff. Das Passwort kann man auslassen. Sofort fällt aber auf, dass TAB-Vervollständigung nicht funktioniert. Ein getipptes help hilft weiter. Um eine Datei herunterzuladen genügt

get Dateiname


In die andere Richtung geht es mit

put Dateiname

NcFTP

Aaah, TAB-Vervollständigung und eine History-Funktion. 🙂 NcFTP ist ein FTP-Client, der mitdenkt und sich mit dem nachfolgenden Befehl ohne weitere Angaben in den anonymen FTP-Server einloggen würde.

ncftp 123.123.123.123


Genauso wie bei ftp erhält man mit Eingabe von help Hilfe. Ein sehr nützliches Merkmal von NcFTP sind Lesezeichen, die sich mit dem Kommando "bookmark" setzen lassen und später mit "bookmarks" auflisten lassen.

wget und wput

Wget hatte ich schon als einen der Downloadmanager vorgestellt. Unter anderem beherrscht er das FTP-Protokoll. In die andere Richtung geht es mit wput, einem winzigen FTP-Client.

Anonymer Zugang

wput test.txt ftp://ftp.example.com

Mit Passwort

wput test.txt ftp://benutzer:passwort@ftp.example.com


Damit man das Passwort nicht jedes Mal eingeben muss, gibt es zwei Konfigurationsdateien .wputrc und .netrc.

Midnight Commander


Bisher habe ich den Midnight Commander hauptsächlich als FTP-Client und zum Vergleichen von Verzeichnissen benutzt. Für alles andere genügen mir fast immer die Standardwerkzeuge.

Anonymer Zugang

In der Kommandozeile braucht man nur cd ftp://ftp.example.com eingeben. Zum Ausloggen genügt cd.

Mit Passwort

cd ftp://benutzer@ftp.example.com
Dann das Passwort eingeben.
Eine weitere Möglichkeit sich mit einem FTP-Server zu verbinden ist das Links/Rechts-Menü und der dortige Eintrag "FTP-Verbindung".

Fazit

Ich bevorzuge den Midnight Commander oder NcFTP. Beide machen das Hoch- und Herunterladen von Dateien zu einem FTP-Server von der Konsole aus zum Kinderspiel.

Bastion und das Humble Indie Bundle V

Das letzte Bundle war sein Geld auf jeden Fall wert und besänftigte meinen (sehr) leichten Unmut über die vorangegangene Aktion. Nein wirklich, es gab beim Humble Indie Bundle V nicht viel zu meckern. Das sahen wohl auch die meisten Käufer so, denn mit 599.001 verkauften Bundles war es die bisher erfolgreichste Aktion.
Und wer hat nun alle Spiele schon durchgespielt? Die alten auch? Ok, dann hake ich nicht weiter nach. Ich habe mich auf Bastion konzentriert und mir zumindest vorgenommen Psychonauts (ein Spiel von Monkey-Island-Tim-Schafer. Cool.) und Limbo näher anzuschauen. Weiterhin gab es auch noch:

Den Rest hatten wir schon. Bei so vielen Spielen musste ich Prioritäten setzen und nahm mir schließlich Bastion vor. Bei der Installation fiel mir gleich der Nixstaller auf, den ich bis dato noch nicht kannte. Sicherlich eine gute Alternative, wenn man nicht für jedes Unix-artige System ein eigenes Paket schnüren möchte. Die Installation verlief mit Debian Sid problemlos.


Bastion selbst fällt in die Kategorie der Action-Rollenspiele. Wer an Diablo denkt, weiß wovon ich rede. Man schlüpft in die Rolle von "the Kid", eines Jungen, der auf einer Plattform in einer nach einer Katastrophe zerstörten Welt erwacht, die sich als die Bastion herausstellen soll. Begleitet wird man von der englischen "Cowboystimme" des Erzählers Rucks, der jede Aktion von "the Kid" kommentiert.
Die Grafik des Spiels hat mir auf Anhieb gefallen. Alles wirkt handgezeichnet, ist fantasievoll und einfach schön gestaltet. Man spielt das Spiel aus einer isometrischen Draufsicht. Dabei setzt sich der Boden während man in eine Richtung läuft unter den Füßen des Protagonisten zusammen. Die Handlung spielt zuerst auf einer schwebenden Plattform, wo man dem Erzähler zum ersten Mal begegnet. Dieser schickt einen dann auf die Reise zu anderen fliegenden Orten, wo man entweder seine neu entdeckten Waffen in einer Art Parkour ausprobieren kann und als Preis Gegenstände und Fragmente erhält oder gegen missliebige Gegner Hand Hammer anlegen muss.


Die Fragmente sind das Bezahlmittel des Spiels, welches von Gegnern und Kreaturen fallengelassen wird, denen sich "the Kid" entgegenstellt. Hier sind wir dann wieder bei einem typischen Rollenspielelement. Nach jeder Mission erhält man einen Gegenstand, mit dem sich Gebäude errichten lassen, aus denen wiederum Tränke oder weitere Aufwertungen gekauft werden können.
Gut gelungen ist auf jeden Fall das Kampfsystem mit Spezialangriffen, die man planvoll einsetzen muss und die dazu erstellten Animationen. Die Musikuntermalung trägt das Spiel und ist stimmungsvoll. Der Soundtrack ließ sich sogar extra herunterladen und ist sein Geld auf jeden Fall wert. Die Handlung selbst hat mich nicht besonders in den Bann gezogen, aber da jede andere Facette des Spiels bis zur vollständigen Linuxkompatibilität hervorragend umgesetzt wurde, kann ich jedem das Spiel nur ans Herz legen. Insgesamt war es ein wirklich tolles und interessantes Bundle.

E-Mails lesen ist wie Linux

Ich bin gerade drauf und dran Mutt näher kennenzulernen. Dieses Mal ernsthaft. Zuvor hat mich die detailverliebte Konfiguration immer ein wenig von der Entdeckung abgehalten.
Just in diesen Tagen erhielt ich auch den ersten Kommentar zu Alpine, einem weiteren herausragenden E-Mail-Programm für die Konsole. Nach wie vor fühlt sich Alpine für mich wie der "typische" E-Mail-Client an, der nicht nur Mails verwalten (Stichwort: MUA), sondern auch senden, empfangen und filtern kann.
Mutt hingegen bleibt seinen Zielen treu: "Ein Programm für eine Aufgabe". Je nach Bedarf kommen noch Helfer wie msmtp, fetchmail oder procmail hinzu.
Da ich immer noch drei verschiedene E-Mail-Programme benutze und dabei nicht mal den gelegentlichen Zugriff per Webbrowser als Extravariante dazuzähle, frag ich mich manchmal auch, wie viel E-Mail-Clients braucht die Welt und ob ich nicht auch mit einem auskommen könnte. Doch E-Mails lesen ist scheinbar doch wie Linux.
Ich kann mich ehrlich gesagt nicht mehr an all meine Entdeckungen erinnern. Nur soviel weiß ich noch, dass ich schon sehr früh einen Webmail-Zugang hatte, Horde sei Dank. Gleichzeitig musste ich mich mit Outlook Express herumschlagen. Zum Glück nicht lange, denn schon kurz nach meinem Einstieg in die Linuxwelt stieß ich auf KMail, dem ich aber, ebenso wie KDE, nicht lange treu geblieben bin.

Evolution


Die Groupware-Suite des Gnome-Desktops übernahm spätestens seit 2006 die Führung, als ich zum ersten Mal Ubuntu ausprobiert hatte. Es war damals wie heute sehr angenehm, dass das E-Mail-Programm perfekt in die Desktopumgebung integriert ist und Kalender- oder Adressbuchinformationen mit anderen Anwendungen geteilt werden. Evolution bestach schon immer durch ein übersichtliches und intuitives Design und die simple Einrichtung von neuen E-Mail-Konten. Bis zum letzten Jahr benutzte ich es durchgehend und entschied mich erst im Zuge des Wechsels zu Debian Testing und der Umgestaltung meines Rechners zum Multiboot-System für einen Umstieg. So fließend die Übergänge und die Integration von Evolution in Gnome ist, einen Nachteil hat das Ganze. Die Verzahnung macht Evolution auch schwerfällig und seine Abhängigkeiten zu Gnome führen dazu, dass er sich als alleinstehendes E-Mail-Programm in einem leichtgewichtigen Fenstermanager-Setup kaum eignet.

Thunderbird alias Icedove


Letztes Jahr entschied ich mich schließlich dazu auf Mozillas Thunderbird oder besser Debians Icedove zu setzen. Die Wahl fiel nicht schwer, da er mir auch in der Windows- und Mac-Welt häufiger begegnet. So gelang es mir zwar nicht meinen Vater komplett zum Umstieg auf Linux zu überreden, aber wenigstens hat er mit Thunderbird nun Gefallen an einem Stück Freier Software gefunden, ohne dass er sich dessen wahrscheinlich wirklich bewusst ist. 😉 Das wirklich Positive an Icedove ist, dass die Einrichtung eines neuen E-Mail-Kontos mit ein paar Klicks ein Kinderspiel ist und wirklich so gemacht ist, dass auch Gelegenheitsnutzer hier durchsteigen können.
Ich persönlich empfinde die Performance gegenüber Evolution, gerade im Umgang mit IMAP-Servern, auf dem gleichen Rechner als besser. Für den letzten Feinschliff gibt es wie bei Mozillas anderem Vorzeigeprojekt, Firefox, Addons, die die Funktionalität des Programms spielend erweitern können. Am besten gefallen mir hier Lightning, der Kalender, und Enigmail, mit dem ich E-Mails mit GnuPG signiere.

Claws-Mail


Hast du einen älteren Desktop-PC oder Laptop, möchtest aber nicht auf Komfort und eine grafische Oberfläche zum E-Mail abrufen verzichten, dann ist möglicherweise Claws-Mail das richtige Programm für dich. Es besticht neben einer exzellenten Performance, schnellen Startzeiten und einer Fülle an Funktionen zum punktgenauen Justieren jeder E-Mail-Einstellung ebenso durch Plugins, die sich bei Debian und Co. leicht über das Paketmanagement installieren lassen. Claws-Mail reagiert ausgesprochen reaktionsfreudig selbst bei Tausenden von Mails (manche sprechen sogar von Zehntausenden) und bietet ebenfalls die Möglichkeit E-Mails mit GnuPG zu verschlüsseln und zu signieren. Claws-Mails große Fülle an Funktionen macht es nicht ganz so schnell zugänglich wie Thunderbird. Seine geringen Anforderungen an die Hardware, wenige Abhängigkeiten mit anderen Paketen und seine Leistungsfähigkeit sind jedoch die perfekte Voraussetzung für jedes leichtgewichtige Desktopsystem. Abgesehen davon ist die Bedienung mit der Tastatur ebenfalls sehr gut gelöst.
Als Alternative bleibt Sylpheed, von dessen Codebasis sich Claws-Mail mittlerweile abgespalten hat. Für alle, die es gerne grafisch mögen und einen sehr leistungsfähigen E-Mail-Client suchen, kann ich Claws-Mail auf jeden Fall sehr empfehlen.

Alpine


Noch ressourcenschonender E-Mails lesen lässt sich mit Alpine und konsolenbasierten E-Mail-Clients. Alpine benutze ich seit 2 Jahren. Es hat den Charm selbst auf den ältesten Computern problemlos zu funktionieren und verhält sich dabei wie man es von einem typischen E-Mail-Client gewohnt ist. Alpine kann sowohl Mails versenden, mehrere POP- und IMAP-Konten abrufen und verwalten und Nachrichten gemäß vorgegebener Rollen filtern und weiterverarbeiten. Viele Konsolenprogramme funktionieren ausgezeichnet in Zusammenhang mit Alpine, darunter z.B auch Antiword, mit dem angehängte Word-Dokumente in Textform dargestellt werden können.
Einziger Wermutstropfen: Die Entwicklung von Alpine wurde 2008 von den Universität von Washington eingestellt. Zwar gibt es das Nachfolgeprojekt re-alpine, doch die ganz großen Veränderungen sind seitdem ausgeblieben. Ich vermisse z.B. eine standardmäßige Integration von GnuPG. Wer jedoch darauf verzichten kann und Englisch als einzig unterstütze Sprache akzeptiert, hat ein leicht zugängliches und gut dokumentiertes Programm für die Konsole, das auch den Ansprüchen fortgeschrittener Nutzer genügt.

Mutt


Nun also noch Mutt. Er hat den Ruf ein Werkzeug für Fortgeschrittene und Profis zu sein und gehört zu den Standardwerkzeugen einer Debianinstallation, was auf die große Verbreitung unter Debianentwicklern zurückzuführen ist. (Vermutlich) ist er der letzte E-Mail-Client, mit dem ich mich näher beschäftigen werde. Im Gegensatz zu den Vorurteilen gelingt der grundlegende Einstieg recht schnell, wenn man eine gute Erklärung findet. Man muss sich daran gewöhnen, dass Mutt strikt nach Aufgaben trennt und eben nur ein MUA ist, also die Oberfläche, die die E-Mails verwaltet und darstellt. Sowohl für das Senden als auch das Filtern von E-Mails werden zusätzliche Werkzeuge benötigt. Mutt entspricht deswegen wie kaum ein anderer E-Mail-Client der modularen UNIX-Philosophie: "Schreibe Computerprogramme so, dass sie nur eine Aufgabe erledigen und diese gut machen".

Schlusswort

Linux wurde in der Vergangenheit oft mit dem Ruf belegt ein Betriebssystem zu sein, das sich ausschließlich nur über die Konsole sinnvoll bedienen lässt. Man hört schnell die Unterstellung heraus, Linux lasse sich eben nur auf eine Art und Weise "richtig" bedienen.
Linux verhält sich genauso wie die Suche nach dem passenden E-Mail-Programm. Zuallererst ist alles eine Geschmacksfrage. Mancher bevorzugt eine konsistente Desktopumgebung wie Gnome, wo jede Applikation mit der anderen ineinandergreift, andere wiederum suchen eine einfache und geradlinige Konfiguration oder ein E-Mail-Programm, das schlicht unabhängig und überall einsetzbar ist.
Es gibt kein Richtig oder Falsch, nur eine Vielzahl an Möglichkeiten. Mir hilft Freie Software etwas Neues zu entdecken, etwas, dass sich meinen Rechnern anpasst, transparent ist, sich kontrollieren lässt und auf meine Wünsche eingeht.
Kurz: E-Mails lesen macht Spaß.