Linux-Magazin Die Verwandlung (Vorschau)
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
05/13<br />
DIE ZEITSCHRIFT FÜR LINUX-PROFESSIONALS<br />
Log- und andere<br />
Daten visualisieren<br />
Sterne, Kreise, Dreiecke – Werkzeuge zum<br />
Interpretieren unübersichtlicher Daten S. 56<br />
Logstash<br />
Fürs Protokoll: Zentrales<br />
Logfile-Archiv mit eingebautem<br />
Analysetool S. 68<br />
Node.js & Redis<br />
Ohne Apache, MySQL und<br />
PHP: Javascript hält auf<br />
dem Server Einzug S. 84<br />
<strong>Die</strong> <strong>Verwandlung</strong><br />
Königliche Strategien und Techniken,<br />
um Daten jeder Art zu migrieren<br />
■ Den Rückweg nicht verbauen:<br />
Was Groupware-Spezialisten raten S. 20<br />
■ Kein Hexenwerk: Eigene Importfilter<br />
mit und für Libre Office schreiben S. 26<br />
■ Unicode und Datenbanken S. 32<br />
■ Videostreaming in Bewegung: Warum sich<br />
HTML 5 gegen Flash so schwer tut S. 36<br />
■ Falls Hypervisor und Storage mitspielen:<br />
Virtuelle Maschinen live migrieren S. 44<br />
■ Schlüsselfertig?<br />
Fünf Frontends für GnuPG S. 50<br />
■ Büro, Büro: Alles über das neue<br />
Libre Office 4.0 S. 64<br />
Mehr als ein Notnagel: System-Monitoring-Tool Munin spricht SNMP S. 67<br />
Deutschland Österreich Schweiz Benelux Spanien Italien<br />
4 6,40 4 7,05 sfr 12,80 4 7,50 4 8,30 4 8,30<br />
4 192587 306401 05
Jetzt<br />
anmelden!<br />
Secure <strong>Linux</strong> Administration<br />
Conference 2013<br />
6./7. Juni 2013<br />
Das Know-how-Update für Administratoren und IT-Leiter.<br />
Mit freundlicher Unterstützung von<br />
<strong>Linux</strong>-Spezialist Peer Heinlein lädt zur SLAC 2013 nach Berlin. Dort bieten 18<br />
ausführliche Vorträge in zwei Tracks Best Practice-Erfahrungen, frisches Wissen<br />
und gute Argumente für strategische Entscheidungen.<br />
MAGAZIN<br />
<strong>Die</strong> Highlights<br />
DevOps<br />
Compliance Management<br />
Logfile-Monitoring<br />
Automatisierter Betrieb<br />
Samba 4.0<br />
Bacula/Bareos<br />
Puppet<br />
Cyber-Crime<br />
MySQL-Cluster<br />
Storage mit Ceph<br />
www.heinlein-akademie.de/slac<br />
Mailserver<br />
Konferenz 2013<br />
<strong>Linux</strong> höchstpersönlich.
Glaube und Wahrheit<br />
Login 05/2013<br />
Editorial<br />
Ohne es zu merken, habe er seinen <strong>Linux</strong>-Computer seit 2012 nicht mehr eingeschaltet.<br />
Das ist nicht irgendwem passiert, sondern dem Gnome- und Mono-Papst<br />
Miguel de Icaza. Der reckt ja gerne den Stachel und hat es auf diese Weise schon<br />
vor einem halben Jahr auf diese Seite geschafft. Damals stieß er sich an den<br />
Kernelentwicklern und erklärte <strong>Linux</strong> für den Desktop-Markt als irrelevant.<br />
www.linux-magazin.de<br />
3<br />
In seinem Blog sagt er sich jetzt los von <strong>Linux</strong>. Er empfehle nur noch Macs, auch<br />
alle von ihm verschenkten Computer wären Apples gewesen. An <strong>Linux</strong> wurmt<br />
ihn die Fragmentierung als Plattform und die Inkompatibilitäten zwischen und<br />
innerhalb der Distributionen. Zum überzeugten Mac-erer sei er in einem Urlaub<br />
geworden, weil sein mitgenommenes Apple-Notebook ohne sein Zutun den Weg<br />
ins WLAN gefunden und die Energiesparmodi beherrscht habe. Auch habe der<br />
Audiotreiber nicht mittendrin den Betrieb eingestellt. Von seinem <strong>Linux</strong>-Thinkpad<br />
hingegen könne er Vergleichbares nicht berichten.<br />
Jan Kleinert, Chefredakteur<br />
Sein Abfall vom Glauben, der Fachausdruck wäre Apostasie, mag im ersten Moment nur konsequent erscheinen.<br />
Aber dass ein praktizierender Open-Source-Heiliger diesen Ranges ihn vollzieht, darf man schon als Tabubruch<br />
werten. Selbst ein dauergeprüfter Thinkpad-Benutzer will ich de Icazas schmerzliche Erlebnisse nicht in Zweifel<br />
stellen. Doch sind diese Prüfungen seines Glaubens allein dazu geeignet, vom Apostel zum Apostaten zu<br />
werden? Wohl nicht.<br />
Beim Grenzübertritt ins bunte Land der Spekulation kommt mir zuerst der Gedanke, dass de Icazas Hinwendung<br />
zu Apple-Computern der Hoffnung geschuldet sein könnte, sich einen neue Freundeskreis zu erschließen: Dufte<br />
Schwarze-Rolli-Träger statt Ausgewaschene-<strong>Linux</strong>-T-Shirt-Transpiranten gewissermaßen. Wem jetzt Apples Zielgruppe<br />
als zu eng beschrieben vorkommt, hat Recht: Orang-Utans, so war dieser Tage zu lesen, sind größtenteils<br />
begeisterte iPad-Benutzer. Im „Jungle Island“ in Miami wählen zwei jüngere Tiere ihren Speiseplan interaktiv am<br />
Apple, pauken Vokabeln und kommunizieren mit den Pflegern. Entwickelt wurde die dabei eingesetzte Software<br />
ursprünglich für Menschen, die an Autismus leiden. Mehrere andere Zoos arbeiten gerade an nativen „Apps<br />
for Apes“. Und im Tierpark in Milwaukee können Besucher ihre gebrauchten iPads an Menschenaffen spenden.<br />
Das müsste Miguel doch gefallen.<br />
Falls meine Theorie mit dem rolli- oder felltragenden Freundeskreis nicht zutrifft, hätte ich noch eine Ticstörung<br />
im Angebot. Wer kennt ihn nicht, diesen Drang, bei einer Beerdigung grundlos laut loszulachen?! Oder einer<br />
sehr respektiven Persönlichkeit mal in die Nase zu zwicken, wenn sie einem gegenübersteht?! <strong>Die</strong> allermeisten<br />
Menschen widerstehen bekanntlich der Versuchung, ihre tabubrechenden Fantasien in die Praxis umzusetzen.<br />
Miguel de Icaza möglicherweise nicht, bei dringt das repetitiven Phänomenen in Form von Blogeinträgen und<br />
Mac-Geschenken nach draußen.<br />
De Icaza als pathologischen Sonderfall zu bezeichnen, wäre natürlich ungerecht, zumal es prominente Mitkranke<br />
gibt: Prinz Harry von Wales beispielsweise, der eigentlich quasi per Geburt zum Wohlverhalten verdammt ist, fiel<br />
zeitlebens durch ganz und gar ungemäße Tics auf, die 2005 bei seinem Auftritt anlässlich eines Kostümfests<br />
mit Hakenkreuz-Armbinde einen vorläufigen Höhepunkt fand.<br />
Was auch immer Papst Miguel bewogen hat: <strong>Die</strong> für Apostasie gängige Strafe Exkommunikation sollte ihm die<br />
Open-Source-Gemeinde ersparen. Und vielleicht kehrt er ja eines Tages zurück, sei es als König, sei es als Affe.
Inhalt<br />
www.linux-magazin.de 05/2013 05/2013<br />
4<br />
Das Umwandeln vorhandener Daten, im Fachjargon Migration genannt, ist für Windows-Wandersleute<br />
ebenso ein Thema wie für reine <strong>Linux</strong>-Prinzen, die eine alte Anwendung gegen eine<br />
moderne austauschen. Der Schwerpunkt dieser Ausgabe sucht nach Königswegen für Groupware,<br />
Office, UTF-8 und Datenbanken, Flash-Streaming und virtuelle Maschinen.<br />
Aktuell<br />
Titelthema: Daten migrieren<br />
6 N ew s<br />
n Nach vier Jahren: Bind 10 ist da<br />
n Chrome 25 lernt sprechen<br />
n Torvalds schimpft über Red Hats UEFI<br />
n Autoparallelisierender Compiler Aesop<br />
20 Groupware-Migration<br />
Titel<br />
Psychologie, Planung, Projekt management,<br />
dazu Simulationen und zahlreiche<br />
Tests: Wie Groupware-Umzüge gelingen.<br />
32 Unicode und Datenbanken<br />
Eine Ascii-Datei in das UTF-8-Format zu<br />
überführen, gelingt noch schnell.<br />
Das Chromebook Pixel bringt zwar werkseitig<br />
Chrome OS mit, lässt sich aber auch mit gängigen<br />
<strong>Linux</strong>-Varianten betreiben.<br />
12 Zahlen & Trends<br />
n Ubuntu Developer Summit wird virtuell<br />
n Gnome bringt Javascript für Einsteiger<br />
n Canonical entwickelt Displayserver Mir<br />
n Bitkom: Hightech-Branche wächst<br />
Brandneu: <strong>Die</strong> OX App Suite Open Xchange konzentriert<br />
sich voll auf Browser-Anwender. Da<br />
spielen Client-Betriebssysteme keine Rolle.<br />
26 Importfilter für Libre Office<br />
Einst galt die Datenübernahme als Problem,<br />
jetzt schreiben Entwickler in wenigen<br />
Zeilen Code eigene Importfilter.<br />
Ungleich schwerer fällt es den meisten <strong>Linux</strong>-<br />
Admins, eine ganze Datenbank zu migrieren.<br />
36 Streaming umstellen<br />
Zwar gehört HTML5 die Zukunft, ohne<br />
Flash läuft aber beim Streaming wenig.<br />
Überraschung! Der Browser von Cyanogen mod<br />
10.1 unterstützt das HTML-5-Videoformat nicht.<br />
<strong>Die</strong> Preisträger und Laudatoren der <strong>Linux</strong> New<br />
Media Awards 2013: Preise gab es unter anderem<br />
für den Raspberry Pi und Libre Office.<br />
18 Zacks Kernel-News<br />
n Defensives Patch-Tracking für alle<br />
n Streit zwischen Torvalds und Entwicklern<br />
Für jedes Modell den passenden Filter: Libre<br />
Office etabliert sich als Migrationstool.<br />
DELUG-DVD<br />
Suse 12.3<br />
TOOL<br />
Frisch aus Nürnberg: 64-Bit-<br />
Version mit Kernel 3.7, KDE 4.10<br />
und vielen anderen Neuerungen<br />
Virtual Appliance<br />
TOOL<br />
TOOL<br />
Zum 25. Geburtstag: Neue Version<br />
von Citadel zum Ausprobieren<br />
TOOL<br />
44 VMs ziehen um<br />
Ohne Downtime wan dert die virtuelle<br />
Maschine auf einen ande ren Host – solange<br />
Hypervisor und Storage mitspielen.<br />
Details zu DVD-<br />
TOOL<br />
Inhalten auf S. 49<br />
E-Book gratis<br />
Kostet regulär 30 Euro:<br />
Michael Bauer, „<strong>Linux</strong> Server-<br />
Sicherheit“ (550 Seiten)<br />
Cebit-Highlights<br />
<strong>Die</strong> besten Vorträge vom Open-<br />
Source-Forum 2013
05/2013 05/2013<br />
Inhalt<br />
56 Malen nach Zahlen<br />
Ein Bild sagt mehr als tausend Worte:<br />
Wer komplizierte Daten ansprechend<br />
als Video oder Grafik zeigen will, findet<br />
unter <strong>Linux</strong> hilfreiche Tools.<br />
74 Recht einfach<br />
Darf man Spieleklassiker nachprogrammieren?<br />
Wer kann Plagiate seiner Webseite<br />
verbieten lassen? Solchen Fragen<br />
geht der Rechtsrat dieser Ausgabe nach.<br />
84 Schneller knoten<br />
Javascript auf dem Server – mit Node.js<br />
kein Problem, sondern sogar gut für die<br />
Performance. Eine Beispiel-App zeigt<br />
das mit einem Buchungssystem.<br />
www.linux-magazin.de<br />
5<br />
Software<br />
Sysadmin<br />
Know-how<br />
49<br />
Einführung<br />
Auf der DELUG-DVD: Open Suse 12.3, Exklusive<br />
Cebit-Videos und ein Security-E-Book.<br />
67 Einführung<br />
Titel<br />
Aus dem Alltag eines Sysadmin: Munin<br />
überwacht SNMP-fähige Geräte.<br />
82 Insecurity Bulletin<br />
Entdeckt von Trinity: Lokale Angreifer<br />
können <strong>Linux</strong> zum Stillstand bringen.<br />
50 Bitparade<br />
Titel<br />
Sichere Verschlüsselung leicht gemacht:<br />
Was taugen Frontends für GnuPG?<br />
68 Logstash<br />
Titel<br />
Zentrale Logarchivierung und -analyse.<br />
Eine kürzlich entdeckte Sicherheitslücke im<br />
Kernel droht, das System zu blockieren.<br />
Das Hauptfenster von Seahorse beschränkt<br />
sich auf das Notwendigste.<br />
56 Visualisierungstools<br />
Titel<br />
Ansprechende Grafiken und Animationen<br />
generieren mit <strong>Linux</strong>-Werkzeugen.<br />
60 Tooltipps<br />
Shellcat, Rf, Fdm, Check Logfiles, Iotop<br />
und Rainbarf im Kurztest.<br />
<strong>Die</strong> Suche nach »NetworkManager« im Logstash-Web-GUI<br />
zeigt die Verbindungshistorie.<br />
Forum<br />
74 Recht<br />
Urheberrecht auf Webseiten, Lehrmedien,<br />
Spielen oder Webseiten nachbauen,<br />
Virtualisierung und Lizenzen.<br />
Programmieren<br />
84 Node.js<br />
Titel<br />
Eigene Webanwendungen programmieren<br />
mit Node.js und Redis.<br />
91 Qmake vs. Cmake<br />
Qt-Kompilierung für Fortgeschrittene.<br />
Ein RDF-Reader für die Konsole: Rf.<br />
64 Libre Office 4.0<br />
Titel<br />
<strong>Die</strong> Vier bringt eine Fernsteuerung für<br />
Präsen tationen und neue Importfilter.<br />
Präsentationen steuert jetzt die Android-App.<br />
78 Tux liest<br />
Bücher über Scala<br />
und Suchmaschinen-<br />
Optimierung.<br />
79 Leserbriefe<br />
Auf den Punkt gebracht.<br />
Service<br />
3 Editorial<br />
100 IT-Profimarkt<br />
101 Seminare<br />
104 Veranstaltungen<br />
104 Inserenten<br />
105 Impressum<br />
106 <strong>Vorschau</strong><br />
Ein Cmake-Ersatz auch für größere Projekte:<br />
Qmake bringt Shadow-Builds und diverse Targets.<br />
94 Perl-Snapshot<br />
Mike Schillis Skripte steuern Virtualbox .<br />
In wenigen Schritten ist eine virtuelle<br />
Maschine unter Ubuntu Precise (32-Bit) mit<br />
Vagrant und Virtualbox installiert.
Aktuell<br />
www.linux-magazin.de News 05/2013<br />
6<br />
News<br />
Chromebook Pixel mit <strong>Linux</strong><br />
Dank des eingesetzten Seabios<br />
ist es laut Google-Mitarbeiter<br />
Bill Richardson sehr einfach,<br />
alternative Betriebssysteme<br />
auf dem Chromebook Pixel<br />
[http://www.chromebook.com/pixel]<br />
zu installieren. Um seine Worte<br />
zu unterstreichen, zeigte<br />
Richardson auf Google Plus<br />
ein <strong>Linux</strong> Mint auf seinem Gerät<br />
und lieferte in den ersten<br />
Kommentaren auch gleich eine<br />
Installationsanleitung.<br />
Um fremde Images zu booten,<br />
muss der <strong>Linux</strong>-affine Nutzer<br />
das gewünschte Image auf einen<br />
USB-Stick oder eine SD-<br />
Karte schieben und über den<br />
Seabios-Umweg booten – installieren<br />
lässt Mint sich (noch)<br />
nicht. Auch Ubuntu sollte auf<br />
diesem Weg laufen.<br />
Kritiker bemängeln an Googles<br />
Gerät, dass es mit umgerechnet<br />
950 Euro recht teuer<br />
ist und sich RAM und SSD<br />
nicht erweitern lassen. Ein<br />
Datum für den Verkaufsstart<br />
in Deutschland steht noch<br />
aus, zunächst wird das Gerät<br />
in Großbritannien und den<br />
USA erhältlich sein. n<br />
Das Chromebook Pixel bringt zwar werkseitig Chrome OS mit, lässt sich aber<br />
auch mit gängigen <strong>Linux</strong>-Varianten betreiben.<br />
Nach vier Jahren: Bind 10 1.0.0 ist da<br />
Seit Ende Februar ist Version<br />
1.0.0 des verbreiteten DNS-<br />
Servers Bind 10 verfügbar, die<br />
von Entwicklern rund um das<br />
Internet Systems Consortium<br />
(ISC) stammt. <strong>Die</strong> Ankündigung<br />
ging etwas unter, obwohl<br />
die letzte runde Version<br />
von Bind vor mehr als zehn<br />
Jahren erschien.<br />
Bind 10 setzt – anders als sein<br />
Vorgänger Bind 9 – nicht mehr<br />
auf einen monolithischen Prozess,<br />
sondern versorgt die einzelnen<br />
Funktionen mit jeweils<br />
dedizierten Prozessen. Das,<br />
so die Entwickler, verbessere<br />
die Skalierbarkeit und erhöhe<br />
die Integrationswilligkeit des<br />
DNS-Servers in Cluster- und<br />
Fehler-tolerante Strukturen.<br />
Doch bedarf es diverser Anpassungen,<br />
damit die einzelnen<br />
Tools kooperieren.<br />
Letzteres dürfte ein wesentlicher<br />
Grund dafür sein, warum<br />
die Entwicklung der neuen<br />
Version recht lange dauerte.<br />
<strong>Die</strong> Entwickler nahmen die<br />
Arbeit 2009 auf, nachdem<br />
Sponsoren sich dazu bereit<br />
erklärt hatten, das Projekt<br />
zu unterstützen. 2013 sollen<br />
Features folgen, die nicht unbedingt<br />
nötig sind, aber dafür<br />
„Spaß machen“.<br />
<strong>Die</strong> jetzt veröffentlichte Version<br />
10 [http://bind10.isc.org/wiki]<br />
ist ein direkter Austausch für<br />
Bind 9 und bringt laut Release<br />
Notes zahlreiche Erweiterungen<br />
mit. Bind 10 bietet eine<br />
C++-Bibliothek mit Python-<br />
Wrappern für DNS-<strong>Die</strong>nste an,<br />
integriert DNS und DHCP mit<br />
„experimentellem Support für<br />
DHCPv4- und DHCPv6-Server“,<br />
unterstützt intern SQLund<br />
SQlite3-Datenbanken und<br />
enthält ein Benchmarkingtool<br />
namens »perfdhcp«.<br />
Hinzu kommen laut Changelog<br />
noch IXFR- und AXFR-<br />
Zone-Transfers, ein deutlich<br />
schnelleres In-Memory-Backend<br />
für Zonendaten sowie<br />
Verbesserungen rund um<br />
DNSSEC (inklusive NSEC 3),<br />
DDNS, TSIG-Unterstützung<br />
und vieles mehr.<br />
n<br />
Dells Ubuntu-Ultrabook im Handel<br />
Dell verkauft sein Ultrabook<br />
mit vorinstalliertem Ubuntu<br />
12.04 LTS nun auch offiziell<br />
im deutschsprachigen Raum.<br />
Im Onlineshop der Firma kostete<br />
das Gerät bei Redaktionsschluss<br />
mit Mehrwertsteuer<br />
und Versandkosten rund 1280<br />
Euro. Das Versanddatum kann<br />
sich ändern, wenn man die<br />
Konfiguration des Ultrabook<br />
beeinflusst.<br />
Zusammen mit Canonical<br />
und der Ubuntu-Community<br />
hat Dell das Gerät im Rahmen<br />
des „Project Sputnik“ entwickelt.<br />
Auf dem XPS 13 mit<br />
einem Intel-Core-i7-Prozessor<br />
(bis 3,1 GHz), verspiegeltem<br />
13,3-Zoll-Display mit Full HD,<br />
8 GByte DDR3-RAM und einer<br />
verbauten 256-GByte-Solid-<br />
State-Disk läuft ein vorinstalliertes<br />
Ubuntu 12.04 LTS.<br />
Ergänzt wird das Paket durch<br />
das im Project Sputnik entwickelte<br />
Profile Tool, das<br />
etwa Profile für Ruby- oder<br />
Android-Entwickler anbietet,<br />
die häufig genutzte Tools installieren.<br />
Ein Cloud Launcher<br />
spielt für Testzwecke eine Microcloud<br />
auf das Gerät. <strong>Die</strong><br />
darin entwickelten Container<br />
lassen sich in eine externe<br />
Cloud exportieren. n
Neuheiten von O’Reilly<br />
Lösungen vorprogrammiert<br />
Google Chrome 25 lernt Zuhören<br />
Chrome, Googles plattformübergreifender<br />
Browser, ist in<br />
Version 25.0.1364.97 erschienen,<br />
die ein paar Neuerungen<br />
mitbringt. So hört Chrome<br />
durch die Integration des<br />
Web-Speech-API nun aufs<br />
Wort und lässt sich E-Mails<br />
diktieren. Eine Onlinedemo<br />
zeigt, wie das in der Praxis<br />
aussieht. Daneben gibt es Verbesserungen<br />
bei der Sicherheit,<br />
die es Entwicklern erlauben,<br />
eine Content Security<br />
Policy festzulegen und mit ihr<br />
eine Whitelist für vertrauenswürdige<br />
Seiten. Das soll Cross<br />
Site Scripting und das Einschleusen<br />
von bösartigem<br />
Code verhindern.<br />
Daneben unterstützt Googles<br />
Browser jetzt Shadow DOM:<br />
<strong>Die</strong> Schlüsseltechnologie der<br />
Web Components ermöglicht<br />
es, DOM-Trees zu kapseln.<br />
<strong>Die</strong> Web Widgets sollen kein<br />
Seitenlayout mehr zerstören,<br />
wenn sie mit CSS-Elementen<br />
und Javascript-Variablen kollidieren.<br />
Zudem wurden einige<br />
Sicherheitslücken behoben,<br />
auch erfolgten Korrekturen<br />
an Web-GL- und HTML-5-<br />
Komponenten.<br />
n<br />
PostgreSQL-<br />
Administration,<br />
3.Auflage<br />
Peter Eisentraut & Bernd<br />
Helmle 412 Seiten, 44,90 €<br />
ISBN 978-3-86899-361-5<br />
Auch als Bundle erhältlich!<br />
Buch mit E-Book<br />
Praxiswissen Joomla! 3.0<br />
Tim Schürmann<br />
928 Seiten, 2013, 39,90 €<br />
ISBN 978-3-86899-883-2<br />
Linus Torvalds über UEFI-Secure-Boot<br />
Torvalds musste jüngst einige<br />
Kritik einstecken, weil viele Beobachter<br />
meinten, er habe sich<br />
einmal mehr im Ton vergriffen.<br />
Jetzt hat der Finne unter<br />
[http://marc.info/?l=linux‐kernel&<br />
m=136185309010028&w=2] nachgelegt<br />
und – für seine Verhältnisse<br />
friedlich – seine Sicht<br />
auf UEFI geschildert.<br />
<strong>Die</strong> derzeitige Situation gefällt<br />
Torvalds offenbar nicht, er bezeichnete<br />
die Absicht, binäre<br />
UEFI-Zertifikate im Kernel<br />
einzubinden, als „schwachsinnig“.<br />
Hinzu komme, dass<br />
Microsoft unter Umständen<br />
derlei Keys zurückrufen und<br />
so bei Bedarf <strong>Linux</strong> einfach<br />
aussperren könne.<br />
Linus’ Kernaussage: Es gehe<br />
nicht um Sicherheit, sondern<br />
um Kontrolle, und die müsse<br />
beim User bleiben. Dazu<br />
schlägt er ein Dreistufenmodell<br />
vor. Standardmäßig sollten<br />
die Distributionen selbst<br />
signierte Module laden, die<br />
normale und fortgeschrittene<br />
Anwender benötigen. Bevor<br />
Linus Torvalds, hier auf der <strong>Linux</strong>con<br />
Europe 2011, fordert die <strong>Linux</strong>-Entwickler<br />
dazu auf, dem Benutzer die<br />
Kon trolle zu überlassen.<br />
eine Distribution Module von<br />
Drittanbietern einbinde, solle<br />
sie den User fragen und ihn<br />
in die Lage versetzen, eigene<br />
Module und Keys zu erzeugen,<br />
denen er vertraut.<br />
Eine dritte Option wäre, zufällige<br />
Einmalschlüssel zu erzeugen.<br />
Das sei immer noch<br />
sicherer, als ein von einer Firma<br />
signierter Schlüssel, weil<br />
die schlicht jedem vertraue,<br />
der ein großes Scheckbuch<br />
mitbringe.<br />
n<br />
Neu bei O’Reilly: Buch mit E-Book<br />
10 Titel in Sonderausgabe<br />
inkl. E-Book –<br />
solange der Vorrat reicht!<br />
Einstieg in Reguläre<br />
Ausdrücke<br />
Michael Fitzgerald<br />
156 Seiten, 2012, 19,90 €<br />
ISBN 978-3-86899-940-2<br />
O’REILLY ®<br />
www.oreilly.de
Aktuell<br />
www.linux-magazin.de News 05/2013<br />
8<br />
X.org-Server in Version 1.14 erschienen<br />
Wie Entwickler Keith Packard<br />
auf der X.org-Mailingliste<br />
verkündet, behebt die Version<br />
1.14 des X-Servers vor<br />
allem Fehler auf Geräten mit<br />
Touch-Bildschirmen sowie<br />
beim GPU-Hotplugging. Dank<br />
des neuen Pixman-API laufe<br />
das Software-Rendering jetzt<br />
schneller, zudem haben die<br />
Entwickler überflüssige Warnmeldungen<br />
entfernt.<br />
Schließlich gibt es noch Verbesserungen<br />
bei den Pointer<br />
Barriers, über die sich die Bewegungsfreiheit<br />
der (Maus-)<br />
Zeiger einschränken lässt. Ein<br />
Anwendungsfall sind so genannte<br />
Hot Corners, gegen die<br />
der Anwender mit dem Mauszeiger<br />
drückt, um eine Aktion<br />
auszulösen.<br />
Der aktuelle proprietäre Nvidia-Treiber<br />
unterstützt bereits<br />
den neuen X-Server 1.14, Nutzer<br />
des AMD-Treibers müssen<br />
hingegen noch eine Weile<br />
warten. In Ubuntu 13.04<br />
werde der neue X-Server sehr<br />
wahrscheinlich nicht mehr<br />
einziehen, kündigte Entwickler<br />
Bryce Harrington in einer<br />
E-Mail bereits an. <strong>Die</strong> nächste<br />
X-Server-Version soll voraussichtlich<br />
im Oktober 2013 erscheinen.<br />
n<br />
Firefox mit integriertem PDF-Viewer<br />
Sodium mobilisiert NaCl<br />
NaCl (Natriumchlorid, engl.<br />
Sodium Chloride) ist der Name<br />
der sehr schnellen und<br />
sicheren Kryptobibliothek<br />
[http://nacl.cr.yp.to] eines Teams<br />
um Daniel J. Bernstein. Sie<br />
kommt bereits in DNS-Crypt<br />
zum Einsatz, geht extrem<br />
konservativ mit ihren kryptographischen<br />
Grundfunktionen<br />
um und nutzt eine Struktur,<br />
die Side-Channel-Angriffe<br />
möglichst verhindern soll. Zu<br />
den Nachteilen gehört unter<br />
anderem, dass NaCl nicht portabel<br />
(nur Unix) und zudem<br />
keine Shared Library ist.<br />
Das will Frank Denis mit seiner<br />
Bibliothek Sodium ändern,<br />
einer portablen Variante von<br />
NaCl, die sich für verschiedene<br />
Plattformen (Open BSD,<br />
<strong>Linux</strong>, OS X, Windows) kompilieren<br />
und paketieren lässt<br />
und API-kompatibel zu NaCl<br />
ist. Sodium ist als Shared<br />
Library einsetzbar, generiert<br />
sichere Pseudo-Zufallszahlen<br />
und ergänzt einige hilfreiche<br />
Zusatzfunktionen.<br />
Sodium erzeugt authentifizierte<br />
Public- und Shared-<br />
Key-Schlüssel, Signaturen,<br />
Hashes und Shorthashes sowie<br />
pseudo-zufällige Zahlen.<br />
Damit lässt sich die Bibliothek,<br />
die unter einer Public-<br />
Domain-Lizenz steht, für Anwendungen<br />
einsetzen, die ein<br />
Sicherheitsmodul benötigen.<br />
Wer sie herunterladen will,<br />
verwendet am besten das Github-Repository<br />
[https://github.<br />
com/jedisct1/libsodium]. n<br />
Firefox 19 ist da und bringt als<br />
aufregendste Neuerung einen<br />
eingebauten PDF-Betrachter<br />
mit. Daneben lassen sich laut<br />
Release Notes nun Canvas-<br />
Elemente als Imagedaten-Blob<br />
exportieren, was beim Aufruf<br />
Speichervorteile bringen soll.<br />
Aufgrund kleiner Reparaturen<br />
startet der Browser schneller,<br />
und Entwickler können sich<br />
über Verbesserungen am Debugger<br />
freuen.<br />
Auch die HTML-5-Fähigkeiten<br />
haben die Entwickler erweitert:<br />
Firefox 19 unterstützt<br />
das CSS-Element »@page«,<br />
und »text‐transform« funktioniert<br />
nun für die volle Breite.<br />
Gecko unterstützt die neuen<br />
Längeneinheiten »vh«, »vw«,<br />
»vmin« und »vmax«, wobei »1<br />
vh« einem Prozent der Höhe<br />
des Viewport entspricht.<br />
Gefixt haben die Entwickler<br />
einige Bugs, die unter anderem<br />
die Darstellung von Web-<br />
GL betrafen. Zudem gibt<br />
Firefox jetzt korrekt an, sich<br />
im privaten Modus zu befinden,<br />
wenn der Anwender den<br />
Browser mit dem Parameter<br />
»‐private« aufruft. Wer nicht<br />
automatisch die neueste Version<br />
des Browsers erhält, lädt<br />
sie sich von der Mozilla-Webseite<br />
[http://www.mozilla.org/<br />
en‐US/firefox/all/] herunter. n<br />
Firefox öffnet neuerdings einen eigenen PDF-Betrachter (PDF.js), wenn der<br />
Anwender auf eine PDF-Datei klickt.<br />
Django in Version 1.5<br />
Wer Python liebt, findet in<br />
Django ein ansprechendes<br />
Framework, um Webseiten<br />
auf Basis der Skriptsprache<br />
zu erstellen. Version 1.5 ist<br />
nach den Worten von James<br />
Bennett eine ziemlich umfangreiche<br />
Release, ein paar<br />
der Änderungen hebt er aber<br />
besonders hervor.<br />
Wollten Webseiten zum Beispiel<br />
eine E-Mail-Adresse als<br />
Identifikationsmerkmal verwenden,<br />
taugte das alte User-<br />
Modell von Django nicht wirklich.<br />
Ein neues, konfigurierbares<br />
User-Modell soll mehr<br />
Flexibilität schaffen. In noch<br />
recht experimentellem Stadium<br />
befindet sich der bisher<br />
wenig getestete Support für<br />
Python 3. Ein Porting Guide<br />
soll helfen weiteren Code auf<br />
die neue Python-Version zu<br />
hieven. Nicht zuletzt haben<br />
Entwickler die Dokumentation<br />
optimiert: Sie enthält nun<br />
etwa ein Beispiel dafür, wie<br />
man eine in mehreren Projekten<br />
wiederverwendbare App<br />
schreibt, und lässt sich einfacher<br />
durchsuchen.<br />
Neben diesen Neuheiten gibt<br />
es noch kleine Veränderungen.<br />
So lässt sich nun gezielt<br />
eine Untermenge von Modellfeldern<br />
in der Datenbank<br />
speichern. <strong>Die</strong> neue Klasse<br />
»StreamingHttpResponse« gibt<br />
zuverlässigere Antworten auf<br />
Streaming-Anfragen. Auch<br />
am Geografie-Framework Geo<br />
Django haben die Entwickler<br />
gefeilt, es unterstützt nun<br />
Postgis 2.0.<br />
Der Quellcode von Django,<br />
der unter der BSD-Lizenz<br />
steht, ist auf der Projektseite<br />
[https://www.djangoproject.com/<br />
download/] zu finden. n
Autoparallelisierender Compiler Aesop<br />
Das Department Of Electrical<br />
And Computer Engineering<br />
der University of Maryland<br />
hat seinen Compiler namens<br />
Aesop veröffentlicht, der<br />
selbstständig sequenziellen<br />
Code in nebenläufigen verwandelt<br />
(Autoparallelizing).<br />
Aesop ist als LLVM-Plugin<br />
ausgelegt. <strong>Die</strong> Entwicklung<br />
an Aesop hat bereits vor ein<br />
paar Jahren begonnen, erste<br />
Publikationen stammen von<br />
2011. Erst jetzt macht die US-<br />
Universität das Werkzeug öffentlich<br />
zugänglich.<br />
<strong>Die</strong> Entwickler versprechen,<br />
dass Aesop nicht nur kleine<br />
Codeschnipsel optimiert,<br />
sondern sich auch für große<br />
Projekte eignet. So soll Aesop<br />
erfolgreich die Benchmark-<br />
Schwergewichte Spec 2006<br />
und OMP 2001 übersetzt und<br />
parallelisiert haben.<br />
Zur Parallelisierung verwendet<br />
Aesop Distanzvektoren,<br />
zeitgleich ausführbarer Code<br />
landet in einzelnen Posix-<br />
Thread s. Getestet ist Aesop<br />
vor allem unter 32-Bit-<strong>Linux</strong><br />
mit x86-Architektur, er soll<br />
aber auch auf anderen Systemen<br />
funktionieren, die LLVM<br />
mitbringen. Auf der Demoseite<br />
[http://aesop.ece.umd.edu/<br />
demo/] sind Ausgaben des<br />
Compilers einzusehen.<br />
Aesop dient derzeit als Dropin-Replacement<br />
für Clang,<br />
GCC, G++ und Gfortran, Interessenten<br />
müssen in den bestehenden<br />
Projekten nur den<br />
Programmnamen des Compilers<br />
ersetzen. Aesop parallelisiert<br />
nicht den eingehenden<br />
Auf der Demoseite kann man die Ausgaben<br />
von Aesop einsehen. (Quelle:<br />
[http:// aesop. ece. umd. edu/ ])<br />
C-, C++- oder Fortran-Code,<br />
sondern den von LLVM erzeugten<br />
Zwischencode.<br />
<strong>Die</strong> Entwickler weisen darauf<br />
hin, dass derzeit nur zwei<br />
Personen an Aesop arbeiten,<br />
das Werkzeug sei zudem noch<br />
nicht vollständig praxistauglich<br />
und setze auf das ältere<br />
LLVM 3.0 auf. Um an den<br />
Quellcode oder Binärdateien<br />
von Aesop zu kommen, muss<br />
sich der interessierte Nutzer<br />
auf der Projektseite registrieren<br />
und einen Grund für den<br />
Einsatz angeben. Aesop solle<br />
zwar freie Software bleiben,<br />
zu den Details der Lizenz machen<br />
die Entwickler jedoch<br />
keine Angaben.<br />
n<br />
News 05/2013<br />
Aktuell<br />
www.linux-magazin.de<br />
9<br />
<strong>Die</strong> heute führenden Spezialisten stammen oft aus der "Freie Software-Szene" und schulen seit<br />
Jahren im <strong>Linux</strong>hotel. Das erklärt die Breite und Qualität unseres Schulungsangebotes:<br />
AJAX * Amavis * Android * Angriffstechniken * Apache * Asterisk * BaseX * BayesianAnalysis * Bind * C/C++ * Cassandra *<br />
CiviCRM * Cloud * Cluster * ClusterFS * CouchDB * CSS3 * CUPS * Debian * DHCP * DNS * DNSSEC * Echtzeit <strong>Linux</strong> *<br />
Embedded <strong>Linux</strong> * eXist-db * Faces * FAI * Firewall * Forensik * FreeBSD * FreeRADIUS * GeoExt * Git * Grails * GRASS *<br />
Groovy * hadoop * Hochverfügbarkeit * HTML5 * Hudson * iSCSI * IPv6 * ITSM * Java * JavaScript * Jenkins * Kernel * KVM<br />
* LDAP * LibreOffice * <strong>Linux</strong> * LPI * m23 * MacOSX * MapFish * Mapserver * Maven * Mikrocontroller * MVS/380 * MySQL *<br />
Nagios * Node.js * OpenBSD * OpenLayers * OpenOffice * openQRM * OpenVPN * OPSI * OSGi * OTRS * Perl * PHP *<br />
Postfix * PostgreSQL * Puppet * Python * QuantumGIS * R * Rails * RedHat * Routing * Request-Tracker RT * Ruby * Samba<br />
* SAN * Scala * Scribus * Shell * Sicherheit * SNMP * Spacewalk * Spamfilter * SQL * Struts * Subversion * SuSE * TCP/IP *<br />
Tomcat * Treiber * TYPO3 * Ubuntu * UML * Unix * Univention * Virenfilter * Virtualisierung * VoIP * WebGIS * Webservices *<br />
Windows Autoinstall * Windowsintegration * x2go * xen * XML * Xpath * Xquery * z/OS * Zabbix * Zend<br />
Fast 100% der Teilnehmer empfehlen uns weiter. Siehe www.linuxhotel.de<br />
Ja, wir geben es zu und haben überhaupt kein schlechtes Gewissen dabei: Unsere Schulungen machen auch Spaß ;-)
Aktuell<br />
www.linux-magazin.de News 05/2013<br />
10<br />
Kurznachrichten<br />
Sabayon 11: <strong>Die</strong> Gentoo-basierte <strong>Linux</strong>-Distribution Sabayon richtet sich an<br />
fortgeschrittene Anwender mit einem Faible für Feintuning. Neu: Version<br />
11 bringt den Kernel 3.7 mit und dank Bumblebee auch einen verbesserten<br />
Nvidia-Optimus-Support. Mit dem Bootloader Shim fährt Sabayon auch auf<br />
EFI- und UEFI-Systemen hoch, selbst mit aktiviertem Secure Boot. Beim<br />
Desktop bleibt die Wahl zwischen Gnome 3.6.2, Mate 1.3, Xfce 4.10 und KDE<br />
4.9.5. Daneben lassen sich unter Sabayon 11 XBMC 12 sowie die Spieleplattform<br />
Steam installieren. Lizenz: GPL [http://www.sabayon.org]<br />
Pgbadger 3.0: Ein Loganalyzer, der sich an Administratoren größerer<br />
Datenbank-Setups richtet und die Logdateien von PostgreSQL auswertet.<br />
Neu: Pgbadger unterstützt nun Multicore und Parallel Processing, was<br />
die Software skalierbar macht. Hinzu kommen Bugfixes, verbesserte<br />
Dokumentation, ein Fortschrittsbalken sowie neue Diagramme für die<br />
Auswertung. Lizenz: BSD-Lizenz [http://dalibo.github.com/pgbadger/]<br />
Sinatra 1.4: Sinatra ist eine Domain-spezifische Sprache, die es erlaubt,<br />
Webanwendungen mit Ruby zu entwickeln. Neu: <strong>Die</strong> Version ermöglicht es,<br />
die im RFC 2068 definierten Methoden »LINK« und »UNLINK« einzusetzen,<br />
um auf Ressourcen zu verweisen. Daneben sind die neuen Templates Yajl,<br />
Rabl, Wlang und Stylus an Bord, andere lassen sich in Blocks einbetten<br />
(Erb, Haml, Slim, Liquid und Wlang). Das Route Parsing klappt besser,<br />
Sinatra bindet neue Servertypen ein und geht besser mit Exceptions um.<br />
Lizenz: MIT-Lizenz [http://www.sinatrarb.com]<br />
Collabtive 1.0: Collabtive ist eine Projektplanung und will eine „Alternative<br />
zu Tools wie Basecamp“ werden. Neu: Fünf Jahre Arbeit stecken<br />
nach Auskunft der Entwickler in Version 1.0 von Collabtive. Der Datenbankzugang<br />
ist auf PDO (PHP Data Objects) portiert, was die Sicherheit<br />
und Performance steigert. Daneben haben die Entwickler die Arbeit am<br />
SQlite-Support begonnen und den PDF-Export für die Berichte komplett<br />
neu geschrieben, damit die PDF-Dateien kleiner ausfallen. Lizenz: GPL<br />
[http://collabtive.o‐dyn.de]<br />
Ubuntu 12.04.2: Eine Point Release mit Wartungsfunktion für Ubuntu 12.04<br />
LTS. Neu: Ubuntu 12.04.2 unterstützt UEFI-Secure-Boot, daneben sind<br />
der Kernel sowie der X.org-Stack von Version 12.10 zurückportiert. Der<br />
experimentelle Fglrx-Treiber (eine Variante des offiziellen, proprietären<br />
Treibers für AMD/ATI-Grafikkarten) ist gepatcht und Apt optimiert den Upgrade-Prozess.<br />
Nicht zuletzt haben die Entwickler alle Security-Updates<br />
integriert. Lizenz: GPL und andere [http://ubuntu.com]<br />
Piwik 1.11: Das Webanalytik-Programm funktioniert ähnlich wie Google<br />
Analytics, ist aber Open-Source-Software. Neu: Interaktive Übersichtskarten<br />
zeigen die Besucherherkunft. Eine Stadtansicht ist an Bord, eine<br />
Echtzeitkarte zeigt den aktuellen Besucherstrom. Es gibt ein aufgehübschtes<br />
Admin-Menü, ein neues Begrüßungs-Widget, einen Tracking-Code-<br />
Generator und weitere Novellen. Lizenz: GPLv3 [http://piwik.org]<br />
Gemeinschaft 5.1: Eine Asterisk-freie deutsche Open-Source-Telefonanlage.<br />
Neu: Zu den Neuerungen gehören ein Upgrade auf Ruby on Rails<br />
3.2.12, der Einbau einer auf Shorewall fußenden Firewall und ein Mechanismus<br />
zum Abfangen von DoS-Attacken per SIP. Außerdem lässt sich die<br />
Telefonkonfiguration dank eines Key nicht mehr ausspionieren. Lizenz:<br />
Open-Source-Lizenz im Eigenbau [http://amooma.de/gemeinschaft]<br />
Ruby 2.0: Eine beliebte Programmiersprache. Neu: Ruby 2.0 implementiert<br />
Features für Programmierer, etwa Keyword-Argumente bei Methodenaufrufen.<br />
Der Modulmanager und verbesserte Garbage Collector erhöhen die<br />
Geschwindigkeit. Es gibt eine Dtrace-Schnittstelle, die Solaris’ Tracing-Tool<br />
unterstützt. Lizenz: BSD-Lizenz [http://www.ruby‐lang.org/de/]<br />
Freie VoIP-Software Jitsi erreicht Version 2.0<br />
RHEL 6.4 ist da<br />
Version 2.0 der sicheren und<br />
quelloffenen VoIP- und Instant-Messenger-Software<br />
Jitsi<br />
erlaubt Mehrparteien-Videokonferenzen<br />
über XMPP,<br />
bringt außerdem verbesserte<br />
Hotplug-Unterstützung für<br />
Audiogeräte mit, ein gänzlich<br />
überarbeitetes GUI sowie die<br />
Unterstützung für den Audiocodec<br />
Opus und den Videocodec<br />
VP8, den etwa Webm<br />
verwendet.<br />
<strong>Die</strong> Videokonferenzen unterstützen<br />
laut Mitteilung<br />
des Projekts beliebig viele<br />
Teilnehmer in hoher Qualität,<br />
solange die Rechenkraft<br />
Jitsi eignet sich als Skype-Ersatz, beherrscht mehrere Protokolle und ermöglicht<br />
die verschlüsselte VoIP-Kommunikation.<br />
der Clients zum Dekodieren<br />
der eingehenden Videodaten<br />
reicht. Dafür sorgt die neue<br />
Video bridge, dank der jeder<br />
Teilnehmer seinen Stream nur<br />
einmal an den Server senden<br />
muss. <strong>Die</strong> Videobridge leitet<br />
die Daten dann an die anderen<br />
Teilnehmer weiter.<br />
<strong>Die</strong> Hotplug-Fähigkeit der Audiogeräte<br />
soll den Wechsel von<br />
Mikrofon und Lautsprecher<br />
während eines Gesprächs erlauben,<br />
um vom Laptop-Mikro<br />
zum Headset zu wechseln.<br />
Das neue Jitsi-GUI wirkt moderner<br />
und integriert sich in<br />
die Betriebssystem-Desktops.<br />
Der Audiocodec Opus verbessert<br />
die Gesprächsqualität,<br />
VP8 bietet eine Alternative<br />
zu H.264. <strong>Linux</strong>-Nutzer finden<br />
Jitsi im Downloadbereich<br />
[https://jitsi.org/Main/Download]<br />
der Webseite.<br />
n<br />
Neben Verbesserungen rund<br />
um Performance, Stabilität<br />
und Flexibilität legt Red<br />
Hat Enterprise <strong>Linux</strong> 6.4 den<br />
Schwerpunkt vor allem auf<br />
das flexible Scale-out über<br />
PNFS (Parallel NFS). Dazu<br />
habe man in dem NFS-4-Port<br />
zusammen mit Partnern und<br />
der Community zahlreiche<br />
Probleme gelöst, die der Komplexität<br />
des verteilten NFS geschuldet<br />
waren.<br />
Außerdem gibt es ein verbessertes<br />
Management für Control<br />
Groups, was die Migration<br />
von Multithread-Anwendungen<br />
verbessert. Evolution unterstützt<br />
Kalender besser und<br />
interagiert geschickter mit<br />
Microsofts Exchange-Server.<br />
Nicht zuletzt läuft RHEL wegen<br />
der Hyper-V-Treiber von<br />
Microsoft als Windows-Gast<br />
performanter.<br />
n
Kernel 3.8 mit F2FS und Grafiktreiber-Updates<br />
<strong>Die</strong> neueste Release des <strong>Linux</strong>-Kernels<br />
[https://www.kernel.<br />
org/pub/linux/kernel/v3.x/] trägt<br />
die Versionsnummer 3.8 und<br />
bringt ein frisches Flash-<br />
Dateisystem namens F2FS mit<br />
sowie Optimierungen am Grafiksystem<br />
und an den Dateisystemen<br />
Btrfs und Ext 4.<br />
Launig wie nie kündigte Linus<br />
Torvalds auf der Mailingliste<br />
die neue Kernelversion an und<br />
bezeichnete sie als „President’s<br />
Day Release“.<br />
Sentimentalen Zeitgenossen<br />
dürfte auffallen, dass der Support<br />
für i386-Prozessoren mit<br />
der aktuellen Release stirbt.<br />
Eine Neuheit ist dagegen das<br />
experimentelle Flash-Dateisystem<br />
F2FS, das von Samsung<br />
kommt. Anders als native<br />
SSD-Dateisysteme unterstützt<br />
F2FS den „Flash Transition<br />
Layer“, mit dessen Hilfe sich<br />
zahlreiche Consumer-SSDs als<br />
blockorientierte Geräte tarnen,<br />
und schreibt seine Daten<br />
in einen Ringspeicher (Logstructured<br />
FS).<br />
Dank Btrfs lassen sich Festplatten<br />
im laufenden Betrieb<br />
entfernen und Daten schnell<br />
auf andere Festplatten migrieren.<br />
<strong>Die</strong>sen Prozess, der selbst<br />
nach Stromausfällen funktioniert,<br />
haben die Kernelentwickler<br />
beschleunigt.<br />
Auch ein anderes Dateisystem<br />
profitiert von Neuerungen:<br />
Ext 4 lagert die Meta-<br />
Infor mationen über gespeicherte<br />
Dateien gewöhnlich<br />
in Inode s, deren Größe von<br />
256 Bytes das Dateisystem<br />
jedoch nicht immer komplett<br />
ausnutzt. Kernel 3.8 erlaubt<br />
es, sehr kleine Dateien direkt<br />
in den Inodes selbst zu speichern.<br />
Das spart nicht nur<br />
Plattenplatz, sondern verhindert<br />
auch das Anlegen eigener<br />
Datenblöcke für die kleinen<br />
Minidateien.<br />
Im Grafikbereich unterstützt<br />
der Kernel-Part des Open-<br />
Source-Treibers Nouveau nun<br />
die 3-D-Funktionen von Nvidia-Karten,<br />
kommt allerdings<br />
in puncto Geschwindigkeit<br />
noch nicht an die proprietären<br />
Treiber heran. Daneben gibt<br />
es Performance-Steigerungen<br />
für die quelloffenen Radeon-<br />
Treiber für AMD-Grafikkarten,<br />
und der Kernel berücksichtigt<br />
die GPUs von Intels neuer<br />
Haswell-Generation besser.<br />
Außerdem unterstützt er die<br />
verteilten ARP-Tabellen, die<br />
das Batman-Routing-Protokoll<br />
für seine Mesh-Netzwerke benötigt.<br />
Zudem ist der Support für den<br />
User Namespace komplett:<br />
Mit ihm dürfen auch unprivile<br />
gierte Nutzer Prozesse mit<br />
pro zesseigenen Namensräumen<br />
starten. (Tim Schürmann/<br />
jk/kki/mfe/mhu/ofr) n<br />
News 05/2013<br />
Aktuell<br />
www.linux-magazin.de<br />
11<br />
Open Source<br />
mobilisiert.<br />
22. + 23.05.2013<br />
OPEN-IT SUMMIT:<br />
Open for Business & Start-ups!<br />
24. + 25.05.2013<br />
2. RootCamp by netways<br />
22. –25. Mai 2013 in Berlin<br />
EUROPE‘S LEADING<br />
OPEN SOURCE EVENT<br />
www.linuxtag.org<br />
Keynote-Speaker, Kernel-Entwickler, Arbeitgeber, Trendsetter<br />
und Neueinsteiger geben sich vom 22. – 25. Mai<br />
2013 auf dem 19. <strong>Linux</strong>Tag in Berlin wieder die Hand.<br />
Neu: Der Track „Embedded <strong>Linux</strong> for Industrial Applications“<br />
am Mittwoch, 22. Mai 2013, u. a. zu folgenden Themen:<br />
• „Wie komme ich zu einem Embedded-<strong>Linux</strong>-System?“<br />
Andreas Klinger, Trainer und Entwickler für Embedded-<strong>Linux</strong><br />
• „Warum ist <strong>Linux</strong> für Embedded-Systeme so attraktiv?“<br />
Carsten Emde, Geschäftsführer Open Source Automation<br />
Development Lab (OSADL)<br />
• „Was muss ich tun, damit Embedded-<strong>Linux</strong> in einer<br />
Sekunde bootet?“ Jan Altenberg, Linutronix GmbH<br />
<strong>Linux</strong>Tag 2013 – where .com meets .org<br />
Hauptmedienpartner:<br />
Partner:<br />
MAGAZIN
Aktuell<br />
www.linux-magazin.de Zahlen & Trends 05/2013<br />
12<br />
Zahlen & Trends<br />
Gnome setzt für Einsteiger auf Javascript<br />
Das Gnome-Projekt möchte<br />
interessierten Entwicklern<br />
den Einstieg erleichtern, indem<br />
es offiziell eine Programmiersprache<br />
für die Anwendungsentwicklung<br />
empfiehlt.<br />
<strong>Die</strong> Wahl fiel auf Javascript.<br />
Das ist das Ergebnis des<br />
„Gnome Developer Experience<br />
Hackfest“, das vom 30.<br />
Januar bis 1. Februar 2013 –<br />
also im Vorfeld der Konferenz<br />
Fosdem – in Brüssel stattfand.<br />
<strong>Die</strong> Empfehlung soll eine klare<br />
Antwort auf die Frage „Wie<br />
schreibt man eine Gnome-<br />
Anwendung?“ liefern.<br />
Bislang würden die Gnome-<br />
Mitarbeiter je nach persönlicher<br />
Vorliebe acht verschiedene<br />
Programmiersprachen<br />
nennen, schreibt der Hackfest-Teilnehmer<br />
Travis Reitter<br />
in seinem Blog [http://treitter.<br />
livejournal.com/14871.html]. Dank<br />
Javascript-Standard wollen die<br />
Gnome-Mitglieder nun eine<br />
einheitliche Doku mentation<br />
schaffen, die Neulinge beim<br />
Schreiben ihrer ersten Anwendung<br />
begleitet. Zwar werde es<br />
auch weiterhin Informationen<br />
zu anderen Programmiersprachen<br />
geben, doch Javascript<br />
soll eine Desktopsprache erster<br />
Klasse sein. Schließlich sei<br />
sie bereits auf Plattformen wie<br />
<strong>Linux</strong>, Windows 8 oder auf<br />
Mobilgeräten anzutreffen und<br />
bei der Gnome-Shell und in<br />
Gnome-Documents erfolgreich<br />
im Einsatz.<br />
n<br />
Galileo Send<br />
Ein neues Protokoll namens<br />
Galileo Send [https://github.com/<br />
jberger/GalileoSend] überträgt<br />
Dateien über Websockets.<br />
Das Protokoll nutzt zur Übertragung<br />
die Websockets genannten<br />
TCP-Verbindungen,<br />
die aus dem HTML-5-Umfeld<br />
stammen. <strong>Die</strong> übertragenen<br />
Daten bestehen aus mehreren<br />
Teilen (Multipart), den<br />
Metadaten und Signalen im<br />
Json-Format sowie dem binär<br />
übertragenen Datei-Inhalt. n<br />
Cebit: <strong>Linux</strong> New Media Awards 2013<br />
Mit den <strong>Linux</strong> New Media<br />
Awards wurden dieses Jahr<br />
im Open-Source-Forum der<br />
Cebit wieder Projekte, Personen<br />
und Unternehmen in<br />
sieben Kategorien prämiert.<br />
Zuvor hatte eine Fachjury aus<br />
mehr als 300 internationalen<br />
Open-Source-Experten ihr<br />
Votum abgegeben, einen der<br />
Preise vergaben die Leser des<br />
<strong>Linux</strong>- und anderer <strong>Magazin</strong>e<br />
des Medialinx-Verlags.<br />
Als erster Gewinner des<br />
Abends erhielt in der Kategorie<br />
„Best Open Source Mobile<br />
Application Development<br />
Framework“ Googles Android-<br />
SDK eine Auszeichnung. Mit<br />
knappem Vorsprung sicherte<br />
sich das Java-Framework Apache<br />
Hadoop noch vor Android<br />
den Award als innovativstes<br />
Open-Source-Projekt.<br />
Jon „Maddog“ Hall hielt eine<br />
Laudatio auf die zurzeit heißeste<br />
Open-Source-Hardware,<br />
den Raspberry Pi. <strong>Die</strong>ser<br />
bietet jedem Interessierten<br />
„zum Preis eines guten Mittagessens“<br />
die Chance, mit<br />
dem Entwickeln von <strong>Linux</strong>-<br />
Programmen zu beginnen.<br />
Knoppix-Erfinder Klaus Knopper<br />
präsentierte die Kategorie<br />
„Best Open Source Mobile<br />
App for Inclusion and Accessibility“:<br />
Hier punktete das<br />
Projekt Cyanogen Mod mit<br />
weitem Vorsprung vor Espeak<br />
und Wheelmap.<br />
Der Univention-Geschäftsführer<br />
Peter Ganten stellte in seiner<br />
Laudatio fest, dass auch<br />
in der Kategorie der Enterprise<br />
Ressource Planning Tools<br />
(ERP) Open Source längst auf<br />
Augenhöhe mit proprietärer<br />
Software sei, was sich in der<br />
Wahl des Open-ERP-Projekts<br />
(vormals Tiny ERP) zur „Best<br />
Open Source ERP Solution<br />
<strong>Die</strong> Preisträger und Laudatoren der <strong>Linux</strong> New Media Awards 2013 vertraten und<br />
präsentierten auf der Cebit innovative Open-Source-Projekte und ‐Helden.<br />
compatible with European<br />
Accounting Systems“ widerspiegele.<br />
<strong>Die</strong> Herzen der Leser eroberte<br />
indes das freie Programm Impress:<br />
Es erhielt den Preis für<br />
die beste Präsentationssoftware.<br />
In seiner Vorrede hob<br />
Jan Kleinert, Chefredakteur<br />
des <strong>Linux</strong>-<strong>Magazin</strong>s, hervor,<br />
dass ein gutes Präsentationsprogramm<br />
zwar entscheidend<br />
für eine gute Präsentation sei,<br />
aber nicht fehlende Inhalte ersetzen<br />
oder zu lange Vorträge<br />
kompensieren könne.<br />
Zu guter Letzt siegte Linus<br />
Torvalds in der Kategorie<br />
„Outstanding Contribution<br />
/ Lifetime Achievement to<br />
Open Source / <strong>Linux</strong> / Free<br />
Software“ mit seinem Lebenswerk<br />
als der Mann hinter<br />
<strong>Linux</strong>. Den Award nahm stellvertretend<br />
Jon „Maddog“ Hall<br />
entgegen.<br />
n
Gemeinsam: HP und Red Hat<br />
Red Hat und Hewlett-Packard<br />
schließen im Bereich der<br />
Enterprise-Software eine<br />
Partnerschaft. Red Hat ist ab<br />
sofort Mitglied der HP Enterprise<br />
Services Technology Alliance.<br />
Als Ergebnis der neuen<br />
Partnerschaft bietet HP die<br />
Produkte von Red Hat künftig<br />
als Teil seiner Standard<br />
Operating Platform an. <strong>Die</strong>s<br />
betrifft die Jboss-Middleware<br />
und Red Hat Enterprise <strong>Linux</strong><br />
als Plattformen für unternehmenskritische<br />
<strong>Die</strong>nste.<br />
HP ergänzt dieses Angebot<br />
durch Produkte wie den HP<br />
Service Orchestration Manager,<br />
das SDP Service Governance<br />
Framework, das HP Store front<br />
und Mobility Gateway sowie<br />
die Aggregation Platform, die<br />
den Aufbau Service-orientierter<br />
Infrastruktur (SaaS) sowie<br />
das Management von Mobilgeräten<br />
unterstützen. n<br />
Rackspace übernimmt Mongo-DB-Anbieter<br />
Rackspace, bekannt für sein<br />
Engagement in Sachen Open<br />
Stack, übernimmt den Mongo-<br />
DB-Anbieter Objectrocket.<br />
Unter dem Titel „MongoDB in<br />
the Cloud“ hat Rackspace die<br />
gemeinsamen Zukunftspläne<br />
angekündigt. Objectrocket hat<br />
sich auf DBaaS (Database as<br />
a Service) spezialisiert und<br />
bietet konkret Unterstützung<br />
für die quelloffene NoSQL-<br />
Datenbank Mongo DB an.<br />
Laut internen Rackspace-<br />
Messungen sei der Mongo-<br />
DB-<strong>Die</strong>nst von Objectrocket<br />
zehnmal schneller als die<br />
Angebote der Konkurrenz,<br />
heißt es in dem Rackspace-<br />
Blog [http://www.rackspace.com/<br />
blog/why‐mongodb/]. Auf diese<br />
Weise erweitere man das eigene<br />
Cloudangebot um eine<br />
zusätzliche Open-Source-Software,<br />
die zudem intensiven<br />
Support erhalte.<br />
n<br />
Zahlen & Trends 05/2013<br />
Aktuell<br />
www.linux-magazin.de<br />
13<br />
Canonical entwickelt eigenen Displayserver Mir<br />
Zopfli komprimiert<br />
Canonical verpasst Ubuntu<br />
auf allen unterstützten Geräten<br />
einen neuen Displayserver<br />
namens Mir. Weder das alte<br />
X-Window-System noch das<br />
bislang favorisierte Wayland<br />
würden Ubuntus Anforderungen<br />
gerecht.<br />
Wie Technical Architect Thomas<br />
Voß in dem Blog [http://<br />
samohtv.wordpress.com/2013/03/<br />
04/] berichtet, sei X zu kompliziert<br />
und mit Features überladen.<br />
Das Treibermodell würde<br />
einen effizienten Einsatz auf<br />
Mobilgeräten verhindern. Bei<br />
Weston, dem Compositor von<br />
Wayland, fehlten ein klar definiertes<br />
Treibermodell und ein<br />
„rigoroser Entwicklungsprozess“;<br />
Wayland würde Canonicals<br />
Anforderungen daher<br />
nicht erfüllen.<br />
Zahlreiche Wayland-Entwickler<br />
protestierten umgehend<br />
gegen diese Aussagen, denn<br />
viele von ihnen seien schlicht<br />
falsch. Das hätten Canonicals<br />
Entwickler – so einer der Vorwürfe<br />
– auch wissen können,<br />
hätten sie im Vorfeld Kontakt<br />
zu den Wayland-Machern aufgenommen,<br />
um gemeinsame<br />
Lösungen zu suchen.<br />
Der geplante Stack für Ubuntus neuen Displayserver Mir. (Quelle: [https:// wiki.<br />
ubuntu. com/ MirSpec])<br />
Mir soll alle derzeit existierenden<br />
Geräteklassen optimal<br />
unterstützen und von den Erfahrungen<br />
aus dem Ubuntu-<br />
Touch-Projekt profitieren. Um<br />
bestehende X-Anwendungen<br />
weiterhin zu nutzen, soll Mir<br />
– wie Wayland – einen X-Server<br />
enthalten (XMir). Canonical<br />
befinde sich laut Voß in<br />
Gesprächen mit Grafikkartenherstellern,<br />
damit diese ihre<br />
proprietären Treiber für den<br />
neuen Displayserver anbieten.<br />
Man arbeite mit Nvidia an einem<br />
verbesserten, einheitlichen<br />
Treibermodell.<br />
Mir erfordert zudem starke<br />
Umbauten an der Unity-Shell:<br />
<strong>Die</strong>se portiert Canonical unter<br />
dem Namen Unity Next auf<br />
Qt 5 und QML 2. Der ambitionierten<br />
Roadmap zufolge<br />
sollen interessierte Entwickler<br />
Mir bereits ab Mai 2013 ausprobieren<br />
können. Im Oktober<br />
landet Mir dann laut Plan auf<br />
Ubuntu-Telefonen und ‐Tablets.<br />
Sämtliche Plattformen<br />
und unterstützten Geräte will<br />
man schließlich im April 2014<br />
im Bunde mit Ubuntu 14.04<br />
auf Mir umstellen. <strong>Die</strong> komplette<br />
Mir-Spezifikation mit<br />
einigen Erläuterungen steht<br />
zur Einsicht im Canonical-<br />
Wiki [https://wiki.ubuntu.com/<br />
MirSpec] bereit.<br />
n<br />
Mit Zopfli hat Google einen<br />
neuen Kompressionsalgorithmus<br />
veröffentlicht, der<br />
schlankere Dateien erzeugten<br />
soll und wie ein Schweizer<br />
Brotrezept heißt. Es handelt<br />
sich um eine Implementierung<br />
des Deflate-Algorithmus,<br />
wobei Zopfli Dateien 3 bis 8<br />
Prozent kleiner mache, als es<br />
die Maximalkompression von<br />
Zlib erlaubt. Zwar dauere das<br />
Komprimieren dafür länger,<br />
aber das Entpacken sei von<br />
den Geschwindigkeitseinbußen<br />
nicht betroffen.<br />
Der in C geschriebene Algorithmus<br />
ist Bitstream-kompatibel<br />
mit den Kompressionen,<br />
die auch Gzip, Zip, PNG und<br />
HTTP verwenden, und eigne<br />
sich besonders für den Einsatz<br />
auf Webservern, wo Dateien<br />
einmal komprimiert, aber oft<br />
abgerufen werden.<br />
Zopfli steht unter Apache-2.0-<br />
Lizenz, der Sourcecode lässt<br />
sich über ein Git-Kommando<br />
aus Googles Code-Repository<br />
[http://code.google.com/p/zopfli/]<br />
ziehen. Dort finden Interessierte<br />
auch ein PDF mit<br />
Benchmarks zur neuen Datenkompressionstechnik.<br />
n
Aktuell<br />
www.linux-magazin.de Zahlen & Trends 05/2013<br />
14<br />
Ubuntu Developer Summit künftig nur noch virtuell<br />
Den Ubuntu Developer Summit<br />
(UDS) wird es in Zukunft<br />
nur noch online geben, der<br />
virtuelle UDS soll alle drei<br />
Monate stattfinden. <strong>Die</strong> erste<br />
Veranstaltung lief bereits Anfang<br />
März, die nächste folgt<br />
voraussichtlich im Mai.<br />
<strong>Die</strong> erhöhte Frequenz soll<br />
laut Ankündigung [http://www.<br />
jonobacon.org/2013/02/26/] helfen,<br />
der breiteren Produktpalette<br />
gerecht zu werden, und<br />
häufiger zu Community-weiten<br />
Diskussionen führen. Statt<br />
eine Woche dauere das Event<br />
künftig nur noch zwei Tage.<br />
<strong>Die</strong> Teilnehmer des virtuellen<br />
Summit sollen auf Mittel<br />
wie Live-Video-Diskussionen<br />
Der UDS-R 2012 war vorerst der letzte klassische Ubuntu Developer Summit.<br />
(Google Hangout), IRC, Etherpad<br />
und andere Social-Media-<br />
Tools zurückgreifen.<br />
Ubuntu wolle sein Gipfeltreffen<br />
damit weiter öffnen, aber<br />
letztlich dürften die Kosten<br />
der ausschlaggebende Punkt<br />
für die Entscheidung gewesen<br />
sein: Jedes halbe Jahr Hunderte<br />
von Leuten in einem Luxushotel<br />
unterzubringen und<br />
zu verköstigen, dürfte Canonicals<br />
Budget recht ordentlich<br />
strapaziert haben.<br />
n<br />
Bitkom-Studie: Hightech-Branche wächst<br />
Laut Bitkom soll der IT-Sektor<br />
ein globaler Wachstumsfaktor<br />
bleiben [http://www.bitkom.org/<br />
de/presse/8477_75178.aspx]. <strong>Die</strong><br />
weltweiten Ausgaben für IT<br />
und Telekommunikation werden<br />
2013 voraussichtlich um<br />
5,1 Prozent auf 2,7 Billionen<br />
Euro steigen. Zu den Ländern<br />
mit dem stärksten Wachstum<br />
gehören Indien (13,9 Prozent),<br />
Brasilien (9,6 Prozent) und<br />
China (8,9 Prozent). <strong>Die</strong> USA<br />
kommen auf ein Plus von 6,5<br />
Prozent, deutlich langsamer<br />
wachsen die ITK-Märkte in Japan<br />
(1,4 Prozent) und der EU<br />
(0,9 Prozent). Das fand der<br />
Verband über das hauseigene<br />
Marktforschungsinstitut EITO<br />
heraus.<br />
Bitkom-Präsident Professor<br />
<strong>Die</strong>ter Kempf konstatiert:<br />
„Im Länder-Ranking findet<br />
ein Wachwechsel statt: China<br />
überholt Japan und ist erstmals<br />
zweitgrößter Ländermarkt.“<br />
An der Spitze liegen<br />
die USA mit 26,8 Prozent. Es<br />
folgen China mit 9,5 Prozent<br />
und Japan mit 8,3 Prozent. <strong>Die</strong><br />
EU hat einen Weltmarktanteil<br />
von 21,8 Prozent, Deutschland<br />
liegt mit rund 4,5 Prozent auf<br />
Rang fünf hinter Brasilien, das<br />
auf 5,0 Prozent kommt. n<br />
HP reicht Web OS an LG weiter<br />
<strong>Die</strong> an abrupten Strategiewechseln<br />
reiche Geschichte<br />
des ehemaligen Palm-Betriebssystems<br />
Web OS soll sich neuerdings<br />
in flachen Fernsehgeräten<br />
fortsetzen. Obwohl<br />
die beteiligten Firmen sich<br />
über die finanzielle Seite der<br />
Transaktion ausschweigen,<br />
lässt sich der gerade bekannt<br />
gewordene Deal auch als<br />
Business-Case-Beispiel für ein<br />
Open-Source-Projekt betrachten:<br />
Hewlett-Packard hat Web<br />
OS mit Mann, Maus, Dokumentation,<br />
Websites und den<br />
Nutzungsrechten an Patenten<br />
an LG verkauft.<br />
Der südkoreanische Konzern<br />
übernimmt damit die Führung<br />
bei den Projekten Open<br />
Web OS und dem Javascript-<br />
Framework Enyo [http://enyojs.<br />
com]. LG war offenbar auf<br />
der Suche nach einem leistungsfähigen<br />
<strong>Linux</strong>-Betriebssystem<br />
für Smart-TV-Geräte<br />
und ähnliche Klassen, für<br />
die sich Käufer zunehmend<br />
anhand der Softwarequalität<br />
von Firmware und Apps entscheiden.<br />
HP entledigt sich hingegen eines<br />
nur anfänglich geliebten<br />
Adoptivkindes: In den Besitz<br />
des Systems gekommen waren<br />
die Amerikaner im April 2010,<br />
als sie den Handheld-Pionier<br />
Palm für 1,2 Milliarden US-<br />
Dollar übernahmen. Damaligen<br />
Ankündigungen zufolge<br />
prophezeite der neue Besitzer<br />
dem von der Kritik stets hoch<br />
gelobten System eine lichte<br />
Zukunft. Doch bereits im August<br />
2011 verkündete der einstige<br />
HP-Chef Léo Apotheker<br />
das Aus. <strong>Die</strong> bereits produzierten<br />
Web-OS-2- und Web-<br />
OS-3-Smartphones und ‐Tablets<br />
wurden zu stark reduzierten<br />
Preisen verschleudert, die<br />
HP-Webshops brachen unter<br />
dem Kundenandrang zusammen.<br />
Einen Monat später<br />
musste Léo Apotheker seinen<br />
Hut nehmen.<br />
<strong>Die</strong> neue HP-Chefin Meg<br />
Whitman revidierte zwar einige<br />
Entscheidungen ihres<br />
Vorgängers, bestätigte im<br />
Kern aber dessen Ablehnung<br />
von Web OS und setzte auf<br />
Windows Phone als von HP<br />
bevorzugtes Mobilsystem.<br />
Ende 2011 verkündete Whitman,<br />
Web OS als Open Web<br />
OS in ein Open-Source-Projekt<br />
verwandeln zu wollen. Ende<br />
2012 tauchten Gerüchte auf,<br />
dass LG Interesse habe, den<br />
Komplex zu übernehmen. n
Mark Shuttleworth stellt neues Tablet-Ubuntu vor<br />
In einem Video präsentierte<br />
Mark Shuttleworth kürzlich<br />
die Vorzüge des neuen Ubuntu<br />
on Tablets [http://www.ubuntu.<br />
com/devices/tablet]. Das System<br />
soll ein paar hübsche Spielereien<br />
mitbringen. <strong>Die</strong> Bedienoberfläche<br />
verzichtet auf<br />
Knöpfchen: Alle Aufgaben erledigt<br />
der Nutzer über die vier<br />
Seitenleisten, die er mit einer<br />
Wischbewegung aus den Bildschirmrändern<br />
holt.<br />
Für die rechte Seite ist den<br />
Entwickler etwas Besonderes<br />
eingefallen: die Side Stage.<br />
Hier lassen sich Apps im<br />
Phone-Modus starten, sodass<br />
eine Art Split Screen entsteht.<br />
Während Mutti rechts ins Videotelefon<br />
winkt, kann Vati<br />
links im Internet surfen oder<br />
Patiencen legen.<br />
Im rechten Bereich laufen dabei<br />
sowohl Apps für Ubuntu<br />
Das Konzept für Ubuntu on Tablets sieht vielversprechend aus, die Umsetzung<br />
dürfte aber noch einiges an Arbeit erfordern.<br />
for Phones als auch solche<br />
Tablet-Apps, die das Layout<br />
von Ubuntu for Phones unterstützen.<br />
Letztere schiebt der<br />
Anwender mit einer Wischbewegung<br />
vom linken in den<br />
rechten Bereich.<br />
Um insbesondere komplexe<br />
Apps auf dem Tablet zu steuern,<br />
will Canonical sein Head-<br />
Up-Display (HUD) um eine<br />
Sprachsteuerung erweitern.<br />
Wer Software für Ubuntu on<br />
Tablets entwickeln möchte,<br />
kann bereits heute das kürzlich<br />
erschienene Ubuntu-<br />
Touch-SDK oder standardisierte<br />
HTML-5-Technologien<br />
verwenden. Wie schon im<br />
Falle von Ubuntu for Phones<br />
sucht das Projekt aber<br />
noch nach Herstellern, die ab<br />
dem 4. Quartal 2013 ein mit<br />
Ubuntu bestücktes Tablet produzieren.<br />
n<br />
Zahlen & Trends 05/2013<br />
Aktuell<br />
www.linux-magazin.de<br />
15<br />
Jahres-dvd<br />
Ubuntu<br />
12.10<br />
Bootmenü mit 8<br />
Ubuntu-Varianten<br />
32+64 Bit<br />
2012<br />
• Zwölf Ausgaben komplett<br />
als HTML und PDF<br />
• Durchdachte Navigation,<br />
die mit jedem Brow ser<br />
funktioniert<br />
• Blitzschnelle Volltextsuche<br />
• Alle Listings<br />
Jetzt gleich bestellen!<br />
www.linux-magazin.de/DVD2012 oder 089 - 99 34 11 - 00
Aktuell<br />
www.linux-magazin.de Zahlen & Trends 05/2013<br />
16<br />
Red Hat übernimmt Führung bei Open JDK 6<br />
In einer Pressemitteilung spezifiziert<br />
Red Hat seine Führungspläne<br />
für Open JDK<br />
nicht näher, doch vermutlich<br />
geht es dem Unternehmen<br />
primär darum, Softwarefehler<br />
zu beheben und Sicherheitslücken<br />
zu schließen.<br />
Zugleich verlängert Red Hat<br />
den Support für die Java-<br />
Version 6. Oracle hatte die<br />
Entwicklung an seinem Java-<br />
6-SDK weitestgehend eingestellt,<br />
Wartung gibt es dort<br />
nur noch gegen Bezahlung.<br />
Für Nutzer von Java 6 bedeutet<br />
Red Hats jüngster Schritt<br />
Planungssicherheit, die Mehrheit<br />
der Java-Anwender soll<br />
bisher noch nicht auf das von<br />
Oracle propagierte Java 7 umgestiegen<br />
sein.<br />
n<br />
Schneller Brüter für Gnome-Module<br />
Ubuntu-Mann Martin Pitt hat<br />
auf Gnomes Entwickler-Mailingliste<br />
einen neuen <strong>Die</strong>nst<br />
vorgestellt, der kontinuierliche<br />
Buildtests für die zurzeit 160<br />
Gnome-Module erlaubt. Der<br />
Hauptunterschied zu den OS<br />
Tree Builds von Colin Walters<br />
bestehe laut Pitt darin, dass<br />
der mit Jenkins verknüpfte<br />
<strong>Die</strong>nst mit dem sperrigen<br />
Namen „Jhbuild Continuous<br />
Integration Test Server“ auch<br />
»make check« ausführe.<br />
So erfahre man in Minuten,<br />
nicht mehr nach Tagen<br />
oder Wochen, ob ein »glib«-<br />
Commit Probleme für GV-FS<br />
oder »evolution‐data‐server«<br />
verursache. Das Wissen um<br />
Änderungen sei dann bei den<br />
Entwicklern noch frisch. n<br />
Technologiestiftung Berlin und OSBA kooperieren<br />
<strong>Die</strong> Open Source Business Alliance<br />
(OSBA) und die Technologiestiftung<br />
Berlin (TSB)<br />
wollen Berliner Anwenderunternehmen<br />
und Firmengründer<br />
unterstützen, die auf<br />
Open-Source-Software setzen.<br />
Beide Organisationen haben<br />
bereits im Netzwerk Open<br />
Source Berlin (OSB) zusammengearbeitet<br />
und die Plattform<br />
Open IT Berlin sowie die<br />
Veranstaltungsreihe „Meet &<br />
Greet“ aus der Taufe gehoben.<br />
Laut der Ankündigung [http://<br />
www.tsb‐berlin.de/tsb‐berlin/news/<br />
de/0/0/0/852/] wollen sie die<br />
Kooperation ausbauen.<br />
Letztere soll künftig vier- bis<br />
sechsmal im Jahr stattfinden<br />
und regionale IT-Entscheider<br />
aus Unternehmen und Behörden<br />
in Berlin und Brandenburg<br />
zusammenbringen<br />
und informieren. Daneben<br />
ist eine Gründungs- und Expansionsberatung<br />
geplant, in<br />
deren Rahmen junge Unternehmensgründer<br />
zahlreiche<br />
Tipps von Mitgliedern der<br />
OSBA erhalten sollen.<br />
„IT-Infrastrukturen wie die<br />
von Google oder Amazon<br />
wären ohne Open-Source-<br />
Software überhaupt nicht<br />
denkbar“, erklärt Peter Ganten,<br />
Vorsitzender der OSBA:<br />
„Trotzdem gibt es gerade bei<br />
kleineren Anwendern und<br />
Gründern jede Menge Fragen,<br />
wie und in welchen Bereichen<br />
man sich dem Thema am besten<br />
nähern kann.“<br />
Adolf M. Kopp von der TSB<br />
sieht in Berlin und Brandenburg<br />
nicht nur die Bundesund<br />
Landesbehörden als Zielgruppe,<br />
sondern die Region<br />
sei „in auffälliger Weise von<br />
vielen jungen Firmen geprägt,<br />
deren Business auf neuen<br />
Technologien basiert“. n<br />
Open Office feiert 40 Millionen Downloads<br />
40 Millionen Mal wurde Apache<br />
Open Office 3.4.x seit<br />
dem Erscheinen im Mai 2012<br />
heruntergeladen. Gezählt hat<br />
die Apache Software Foundation<br />
alle Downloads der „Full<br />
Installation Sets“ von der<br />
Source forge-Seite. Nicht enthalten<br />
sind die Sprachpakete,<br />
SDKs und Quellcode-Archive.<br />
<strong>Die</strong> Foundation stellt die Statistik<br />
auf [http://www.openoffice.<br />
org/stats/downloads.html] als interaktives<br />
Diagramm bereit:<br />
Ein Mausklick präsentiert die<br />
Download-Zahlen für jeden<br />
einzelnen Tag.<br />
Das Diagramm zeigt, dass die<br />
Downloads über die Zeit recht<br />
konstant in Wellen erfolgten.<br />
Zusätzlich verdeutlicht ein<br />
Blogeintrag die Zahlen: Würde<br />
<strong>Die</strong> Grafik zeigt, wie sich die 40 Millionen Downloads über die Zeit verteilen.<br />
(Quelle: [http:// www. openoffice. org/ stats/ downloads. html])<br />
Open Office auf CDs vertrieben,<br />
wäre der Turm aus allen<br />
40 Millionen Datenträgern<br />
4800 Kilometer hoch. Das entspricht<br />
der Strecke von Lissabon<br />
bis Moskau. Wer mag,<br />
lädt sich die Zahlen als CSV-<br />
Datei herunter.<br />
Im Dezember 2012 hatte das<br />
Libre-Office-Projekt 15 Millionen<br />
Downloads verkündet.<br />
<strong>Die</strong>se Zahl umfasst aber die<br />
Downloads aller Libre-Office-<br />
Versionen im Jahr 2012 von<br />
„eindeutigen IP-Adressen“<br />
und enthält nur wenige <strong>Linux</strong>-<br />
Nutzer – oft liefern die Distributionen<br />
das Büropaket gleich<br />
mit. <strong>Die</strong> Zahlen der Document<br />
Foundation sind daher nicht<br />
mit denen der Apache Foundation<br />
vergleichbar. n
Noch ein <strong>Linux</strong> für Smartphones: Sailfish OS<br />
Ehemalige Entwickler von<br />
Nokia haben im Rahmen des<br />
Jolla-Projekts ihr Betriebssystem<br />
für Smartphones freigegeben.<br />
Das Sailfish OS getaufte<br />
System basiert auf <strong>Linux</strong>, Qt,<br />
QML, HTML und integriert<br />
Android-Apps und zahlreiche<br />
Open-Source-Projekte.<br />
In einem Video auf der Webseite<br />
[http://jolla.com] schwenken<br />
die Entwickler Tablets<br />
und Smartphones und erklären<br />
möglichst viele Geräte unterstützen<br />
zu wollen mit dem<br />
„ersten wirklich offenen und<br />
freien Ökosystem für mobile<br />
Geräte“. Sie wollen eine echte<br />
Alternative zu proprietären,<br />
von Geschäftsstrukturen getriebenen<br />
Abläufen bieten und<br />
so neue Geschäftsmodelle für<br />
jedermann ermöglichen.<br />
Sailfish [https://sailfishos.org]<br />
will zugleich Android-kompatibel<br />
sein, um vom großen<br />
Auf Jolla.com zeigt ein Video die Benutzeroberfläche von Sailfish OS.<br />
App-Vorrat der Google-Plattform<br />
zu profitieren. Vor allem<br />
in China finde das System<br />
nach Angaben der Verantwortlichen<br />
derzeit viel Anklang,<br />
man habe mit D.Phone<br />
bereits einen der größten chinesischen<br />
Retailer als Kunden<br />
gewonnen.<br />
Das Sailfish Developer Kit<br />
gibt es zunächst nur für <strong>Linux</strong><br />
(32 und 64 Bit), der Download<br />
umfasst etwa 700 MByte. Auf<br />
der Webseite finden sich ein<br />
Design-Guide, Entwicklerdokumentation<br />
und zahlreiche<br />
Community-Links zu Mailinglisten,<br />
Wikis und Foren. (Tim<br />
Schürmann/ofr/mhu/mfe/jcb/<br />
jkl/kki/fkö/hje)<br />
n<br />
Zahlen & Trends 05/2013<br />
Aktuell<br />
www.linux-magazin.de<br />
17<br />
3 AusgAben für nur 5,90 E<br />
Jetzt bestellen: 3 Hefte zum Preis von einem. Sie sparen 66 %!<br />
Neu!<br />
Kennenlernangebot:<br />
3 AusgAben<br />
für nur 5,90 E<br />
Jetzt bestellen unter:<br />
www.android–user.de/miniabo<br />
Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@android-user.de
Aktuell<br />
www.linux-magazin.de Kernel-News 05/2013<br />
18<br />
Zacks Kernel-News<br />
Linus betont Aufnahmekriterien für den Kernel<br />
Ein kleines Scharmützel um<br />
Kvmtool entspann sich neulich<br />
auf der Kernel-Mailingliste,<br />
als David Rientjes die Frage<br />
aufwarf, ob das Tool wohl<br />
von »linux‐next« in den Kernel<br />
wandern werde.<br />
KVM (Kernel Virtual Machine)<br />
ist ein Kernel-Subsystem,<br />
das es den Benutzern erlaubt,<br />
virtualisierte Systeme auf einem<br />
<strong>Linux</strong>-System zu betreiben.<br />
Und »kvmtool« ist das<br />
Userspace-Werkzeug, das die<br />
KVM-Gastsysteme bootet und<br />
so nutzbar macht.<br />
Als Antwort auf Davids Frage<br />
meldete sich Stephen Rothwell<br />
mit dem Hinweis, Linus<br />
Torvalds wolle Kvmtool nicht<br />
in den Kernel aufnehmen,<br />
und er werde es daher aus<br />
dem »linux‐next«-Tree entfernen.<br />
Zugleich bat er Ingo<br />
Molnar, es auch aus seinem<br />
»tip:auto‐latest«-Zweig zu löschen.<br />
Ingo antwortete, dass er plane,<br />
es in seinem Zweig zu<br />
belassen, weil er es für Tests<br />
verwende und bisher keine<br />
Probleme damit entdeckt habe.<br />
Zudem plane Pekka Enberg<br />
eine neue Version an Linus<br />
zu schicken, die eventuell<br />
angenommen werde.<br />
Hier schaltete sich H. Peter<br />
Anvin ein: „Also warum lassen<br />
wir es Linus nicht für die<br />
Aufnahme in [Kernel, d. Red.]<br />
3.9 akzeptieren oder ablehnen<br />
und entfernen es, wenn es abgelehnt<br />
wird, aus »linux‐next«,<br />
bis es den Ansprüchen von<br />
Linus genügt?“<br />
Stephen bezweifelte, dass es<br />
eine große Chance für Pekkas<br />
Patch gebe, und erklärte, er<br />
wolle nicht, dass Ingo Kvmtool<br />
aus seinem eigenen Zweig<br />
»tip:master« entferne, sondern<br />
aus dem »tip:auto‐latest«-Tree<br />
in »linux‐next«. Er zitierte<br />
Linus, der gesagt hatte: „Ich<br />
warte noch auf ein überzeugendes<br />
Argument, um es aufzunehmen.<br />
Es sind Tonnen<br />
von Code, der nicht in das<br />
ursprüngliche Klein-und-einfach-Konzept<br />
passt, und ich<br />
denke, als separates Projekt<br />
wäre es besser dran.“<br />
Ingo antwortete, dass der<br />
»tip:master« identisch mit dem<br />
Arbeitszweig »tip:auto‐latest«<br />
sei und er nicht wolle, dass<br />
sich beide voneinander entfernen.<br />
Aber er würde es ändern,<br />
wenn Linus darauf bestehe.<br />
Er fügte jedoch hinzu, dass<br />
Kvmtool sich gut entwickele,<br />
mehrere Dutzend Zuarbeiter<br />
habe und sich als nützlich für<br />
die Kernelentwicklung erweise.<br />
Es helfe bei der KVM-Entwicklung<br />
und werde genutzt,<br />
um experimentelle Kernelfeatures<br />
zu testen, ohne das<br />
System neu booten zu müssen.<br />
Seiner Frustration Raum<br />
gebend endete er: „Bitte hört<br />
auf mit den Dummheiten, die<br />
meiner Meinung nach kein<br />
Stück konstruktiv sind.“<br />
Um den »tools/kvm«-Tree ging es in einem Streitgespräch zwischen Ingo Molnar,<br />
Linus Torvalds und weiteren Kernelentwicklern.<br />
Hier schaltete sich Linus in<br />
die Diskussion ein: Er hätte<br />
bisher keinen guten Grund<br />
gefunden, warum Kvmtool<br />
nicht als Standalone-Projekt<br />
weiterexistieren könne. Er bemerkte,<br />
dass Ingos Argument,<br />
Kvmtool sei sinnvoll für die<br />
Kernelentwicklung, zwar richtig<br />
wäre, aber nicht Grund<br />
genug, etwas in den Kernel<br />
aufzunehmen.<br />
Pekka stimmte dem zu, bemerkte<br />
aber, es würde „als<br />
Ausgleich das Entwickeln an<br />
»tools/kvm« vereinfachen,<br />
insbesondere wenn man Userspace-<br />
und Kernelspace-Code<br />
anfassen muss“. Linus antwortete,<br />
die Bequemlichkeit<br />
der Entwickler wäre schlicht<br />
kein Argument, um Code zu<br />
akzeptieren. Es würde ihn<br />
nicht stören, wenn Pekka und<br />
Ingo weiter so arbeiten würden<br />
wie bisher. Sie müssten<br />
ihren Workflow und Entwicklungsprozess<br />
in keiner Weise<br />
ändern – aber er würde ihren<br />
Code nicht aufnehmen. Wie<br />
die anderen Virtualisierungsprojekte<br />
könne auch Kvmtool<br />
extern existieren.<br />
Schließlich lenkte Ingo ein:<br />
„Also, um die Diskussion zu<br />
einem Ende zu bringen und<br />
weil Linus offenbar darauf besteht,<br />
habe ich »tools/kvm«<br />
aus »tip:auto‐latest« entfernt<br />
und von den täglichen Merges<br />
(bei denen »tip:master« gleich<br />
»tip:next« war) auf die ältere<br />
Methode einer kompletten Reintegration<br />
der Änderungen<br />
in »linux‐next« umgestellt,<br />
die alle paar Wochen stattfindet.“<br />
„Auf diese Weise wird also<br />
»tools/kvm« weiterhin über<br />
»tip:master« verfügbar sein<br />
(nach einer kompletten Integration<br />
hinzugefügt) und es<br />
gibt weiterhin die üblichen<br />
täglichen oder häufigeren<br />
Delta-merges auf »tip:master«,<br />
wenn neuer Code hinzukommt<br />
– plus die etwas<br />
riskanteren gelegentlichen<br />
Gesamt-Code-Rückführungen<br />
in »linux‐next«. Das ist sicher<br />
nicht optimal, aber hinsichtlich<br />
der Einschränkungen die<br />
bestmögliche Lösung, auf die<br />
ich gekommen bin.“ n
Android User im Abo<br />
Defensives Patch-Tracking für alle!<br />
Auf der Kernel-Mailingliste<br />
bemerkte Luis R. Rodriguez,<br />
dass das „Signed off by“-Tag<br />
inzwischen auch bei anderen<br />
Freie-Software-Projekten<br />
beliebt sei. Ursprünglich war<br />
das für Patch-Einsendungen<br />
verwendete „Signed off by“-<br />
Tag als Antwort auf den SCO-<br />
Prozess entstanden. Im Laufe<br />
des Prozesses geriet neben<br />
anderen auch Linus Torvalds<br />
ins Visier, und das Gericht<br />
verlangte nach Beweisen dafür,<br />
dass <strong>Linux</strong> keinen Code<br />
aus Unix System V enthalte,<br />
für das SCO die Rechte angeblich<br />
besaß.<br />
<strong>Die</strong>ses Tag ist Linus’ Antwort<br />
auf die ganze Angelegenheit.<br />
Tatsächlich war es nur der<br />
sichtbarste Teil dessen, was<br />
dann zum DCO (Developers<br />
Certificate of Origin) wurde.<br />
Laut Version 1.1 dieses Dokuments<br />
sollen sämtliche Urheber<br />
und Begutachter eines<br />
Patch es mit einem „Signed<br />
off by“-Text versehen, um<br />
sich so als Teil der Review-<br />
Kette erkennbar zu machen<br />
und zu versichern, dass sie<br />
keinen Code beigetragen haben,<br />
der die Auflagen der GPL<br />
verletzt.<br />
Dank der DCO 1.1 lässt sich<br />
in Zukunft jedes Stück Code,<br />
dem ein Gericht eine Copyright-Verletzung<br />
unterstellt,<br />
relativ einfach zu den Urhebern<br />
und Gutachtern zurückverfolgen.<br />
In seiner E-Mail<br />
führte Luis aus, dass offenbar<br />
nicht alle Open-Source-Projekte<br />
die Spezifikation des DCO<br />
1.1 verstünden. Er schlug vor,<br />
das DCO 1.1 aus dem Bereich<br />
»Documentation/Submitting-<br />
Patches« zu entfernen und in<br />
ein Einzelprojekt zu verwandeln,<br />
damit andere Freie-Software-Projekte<br />
es finden und<br />
darauf verweisen können.<br />
Alan Cox hielt dagegen und<br />
meinte, es sei besser, das Dokument<br />
im Kerneltree zu belassen,<br />
und dass Luis es auch<br />
kopieren und woanders einfügen<br />
könne. Jiry Slaby merkte<br />
an, dass andere Projekte womöglich<br />
die Konditionen des<br />
DCO verändern wollen, wofür<br />
sie Kopien des Textes benötigen,<br />
um ihn an eigene Bedürfnisse<br />
anzupassen.<br />
An dieser Stelle warf W. Trevor<br />
King ein, dass er Probleme<br />
habe, die Lizenz aufzuspüren,<br />
unter der DCO 1.1 damals<br />
veröffentlicht wurde. Auch<br />
die Mailingliste gab dazu<br />
keine Antwort. Etwas später<br />
kündigte Trevor an, er habe<br />
unter [https://github.com/wking/<br />
signed‐off‐by] ein Git-Repository<br />
eröffnet, das die Commit-<br />
Geschichte des DCO enthalte.<br />
Da sich sein Repository aus<br />
dem des <strong>Linux</strong>-Kernels ableite,<br />
stelle er es auch unter die<br />
GPLv2.<br />
„Wenn Ihr an einem GPLv2-<br />
Projekt arbeitet, könnt Ihr<br />
den ,Signed off by‘-Tree direkt<br />
in Euer Projekt übernehmen“,<br />
erklärte Trevor und<br />
fuhr dann fort: „Weil viele<br />
Projekte, die nicht die GPLv2<br />
verwenden, eventuell doch<br />
den DCO/,Signed off by‘-<br />
Ansatz benötigen, habe ich<br />
eine »CONTRIBUTING«-Beispieldatei<br />
ergänzt und »CON-<br />
TRIBUTING.md« für Github,<br />
die beide unter der sehr freien<br />
Creative-Commons-Lizenz<br />
CC0 1.0 Universell stehen. Es<br />
genügt dann, die Branches<br />
»contributing« oder »contributing‐github«<br />
in das eigene Projekt<br />
zu übernehmen und an<br />
die eigenen Bedürfnisse anzupassen.“<br />
Luis reagierte erfreut<br />
darauf und integrierte Trevors<br />
Arbeit sofort in die eigenen<br />
Freie-Software-Projekte. n<br />
<strong>Die</strong> Monatszeitschrift für Android-Fans,<br />
Smartphone- und Tablet-Nutzer<br />
toP-Prämie sichern!<br />
SoftMaker<br />
Office Mobile für<br />
Android im Wert<br />
von 27,99 Euro<br />
gratis zu jedem<br />
Print- und Digital-Abo!<br />
Office-paket für andrOid iM Wert<br />
vOn 27,99 eurO gratiS zu jedeM aBO!<br />
* SoftMaker Office Mobile für Android inkl. Textverarbeitung, Tabellenkalkulation und<br />
Präsentationsprogramm. Freischaltung erfolgt per Gutscheincode. Angebot gilt solange der<br />
Vorrat reicht, Tablet und Smartphone sind nicht Bestandteil der Prämie!<br />
Jetzt bestellen!<br />
www.android–user.de/abo<br />
Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 •<br />
E-Mail: abo@android-user.de
Titelthema<br />
www.linux-magazin.de Groupware-Migration 05/2013<br />
20<br />
Tipps zur Datenmigration bei Groupware<br />
Umzugsplaner<br />
Microsofts Produktpolitik treibt kontinuierlich viele Anwender vom Windows Small Business Server auf eine<br />
freie Groupware. Aber auch so manche funktionsarme Cloudlösung legt einen Umstieg nahe. Bei der Migration<br />
der Daten gibt es jedoch einiges zu sortieren, das über die bloße Technik hinausgeht. Tim Schürmann, Markus Feilner<br />
© Jean-Marie Guyon , 123RF.com<br />
Sie gehören zu den komplexesten Herausforderungen,<br />
die sich in der Unternehmens-IT<br />
finden: Groupwaremaschinen.<br />
Meist werkelt Microsofts Exchange<br />
auf den kombinierten Mail-, Adressbuchund<br />
Kalenderservern. Zu den ohnehin<br />
schon ausreichend komplizierten drei Basisdiensten<br />
kommen fast in jeder Firma<br />
Erweiterungen wie Verzeichnisdienste,<br />
CRM, ERP und Dokumentenmanagement,<br />
was die Server zu den zentralen Datenschleudern<br />
im Unternehmen macht.<br />
Handle with care!<br />
Mancher Admin ist schon froh, wenn<br />
das System dauerhaft so läuft wie gewünscht,<br />
und handelt eher nach dem<br />
Motto „Never touch a running system“.<br />
Eine Groupware migration ist schnell<br />
als ein kostspieliges Mammutprojekt<br />
bekannt, das Unternehmen nur ungern<br />
angehen. Ist aber proprietäre Software<br />
im Spiel, entsteht der Zwang nicht selten<br />
durch deren Hersteller – und genau das<br />
geschieht in dieser Branche derzeit: Mehr<br />
und mehr wandern Kunden vom lokalen<br />
Server in die Cloud und – nicht selten<br />
gleichzeitig – von proprietären Produkten<br />
zu Open-Source- oder zumindest OSSbasierten<br />
Angeboten.<br />
<strong>Die</strong> Migration der Allrounder ist jedoch<br />
oft ein langwieriger Prozess, in dem die<br />
Technik (für viele Admins überraschenderweise)<br />
nicht die Hauptrolle spielt.<br />
Das <strong>Linux</strong>-<strong>Magazin</strong> hat für diesen Artikel<br />
deutsche Groupwarespezialisten (Consultants<br />
und Hersteller) nach ihren besten<br />
Tipps, Tricks und Best Practices gefragt –<br />
und einige teils überraschende, aber stets<br />
hilfreiche Antworten bekommen.<br />
Jedes Mal anders<br />
„Das ist ein Feld, in dem es extrem individuell<br />
zugeht. Von den zahlreichen Groupwaremigrationen,<br />
die ich in den letzten<br />
Jahren betreut habe, wiesen maximal<br />
25 Prozent Ähnlichkeiten mit früheren<br />
Projekten auf“, warnt Michael Kromer<br />
(Abbildung 1) vom Groupwarehersteller<br />
Zarafa (Abbildung 2, [1]).<br />
Er mahnt zur Geduld: „Während der Migration<br />
sollten alle Beteiligten Ruhe bewahren,<br />
gerade wenn unvorhergesehene<br />
Probleme auftreten. Das Unter- oder gar<br />
Abbrechen einer laufenden Migration aufgrund<br />
von Ungeduld zählt zu den absolut<br />
typischen Migrationsfehlern.“<br />
Auch Cornelius Weiss (Abbildung 3),<br />
Entwicklungsleiter bei Metaways, der<br />
Firma hinter Tine 2.0 (Abbildung 4,<br />
[2]) preist Ruhe, Geduld und Beharrlichkeit<br />
als die obersten Tugenden: „Ich<br />
habe kaum eine Migration erlebt, wo es<br />
nicht auch zwischendurch mal Zweifel<br />
am Gesamtprojekt gab.“<br />
Und FSFE-Urgestein Georg Greve (Abbildung<br />
5), Mitgründer der Kolab Systems<br />
AG (Abbildung 6, [3]) sagt: „<strong>Die</strong> Technik<br />
ist immer lösbar, das ist nie das wahre<br />
Problem. Aber deutlich leichter tut sich,<br />
wer von vornherein auf Open Source und<br />
offene Protokolle gesetzt hat.“<br />
Schritt 1: Einarbeiten<br />
<strong>Die</strong> Arbeit für die Admins fängt jedoch<br />
schon lange vor der eigentlichen Migration<br />
an – bei der Bestandsaufnahme.<br />
Hierzu muss sich die für die Migration<br />
DELUG-DVD<br />
Auf der Delug-DVD finden Sie<br />
DELUG-DVD<br />
zum 25. Jubiläum der ältesten noch existierenden<br />
Open-Source-Groupware Citadel<br />
[11] ein VMware-Image mit der aus den<br />
Bulletin Boards der 80er Jahre gewachsenen,<br />
vollständig unter Open-Source-Lizenzen<br />
stehenden und mit vielen offenen Standards<br />
kompatiblen Groupware.
Groupware-Migration 05/2013<br />
Titelthema<br />
www.linux-magazin.de<br />
21<br />
Abbildung 1: Michael Kromer ist IT-Consultant bei<br />
Zarafa und hat dort bereits zahlreiche Migrationen<br />
betreut. Seine Erfahrung zeigt: Jede ist anders.<br />
zuständige Person möglichst gut mit der<br />
bestehenden, aber auch mit der Ziel-<br />
Umgebung auskennen. Wer später, also<br />
beim eigentlichen Umzug, nicht von Problemen<br />
überrascht werden will, muss die<br />
typischen Limits beider Systeme kennen<br />
und die potenziellen Schwachstellen bereits<br />
erahnen.<br />
Bestandsaufnahme<br />
Als Nächstes ist zu klären, welche Funktionen<br />
die Anwender in der alten Groupware<br />
überhaupt genutzt haben. Nur die<br />
muss der Admin dann auch tatsächlich<br />
bei einem Umzug berücksichtigen. Allerdings<br />
warnt hier Ingo Steuwer (Abbildung<br />
7) von Univention (Abbildung<br />
8, [4]): „Ein häufiger Fehler ist es, den<br />
tatsächlichen Bedarf der Endanwender<br />
falsch einzuschätzen. Dann gelten Altdaten<br />
oder Funktionen des alten Systems<br />
Abbildung 2: Gute Outlook-Unterstützung, Anbindung mobiler Geräte und ein modernes Webinterface bietet<br />
Zarafa. Mapi und Active Sync machen das möglich, die Daten landen in einer SQL-Datenbank.<br />
als unnötig oder der Zugriff auf die Daten<br />
ist über allzu lange Zeit nicht möglich,<br />
weil die Methode in den Planungen einfach<br />
nicht vorgesehen war.“<br />
Um das zu verhindern, muss die für die<br />
Migration zuständige Person viel und regelmäßig<br />
mit den betroffenen Anwendern<br />
der Groupware kommunizieren. „Es sollte<br />
aus jedem Bereich der Gesamtumgebung<br />
eine im Projekt verantwortlich eingebundene<br />
Person geben, die einschätzt, ob das<br />
Migrationsverfahren und das Zielsystem<br />
richtig sind.“<br />
Dem stimmt auch Cornelius Weiss voll<br />
und ganz zu: „Einfach nur zu fragen,<br />
welche Groupwarelösung die richtige<br />
ist, Zarafa, OX, Kolab, Citadel, Tine oder<br />
Zimbra, das greift zu kurz. Groupware<br />
ist mehr als nur eine Datenablage, sie<br />
bildet Unternehmensstrukturen ab, durch<br />
Rechte und Prozesse, aber auch durch die<br />
Art, wie die jeweilige Groupware tickt.<br />
Da sind jeweils ganz andere Prinzipien,<br />
Denkansätze und Arbeitsweisen im Spiel,<br />
die Unternehmen umsetzen müssen.“<br />
Groupware-Psychologie<br />
Bereits die Frage nach dem richtigen<br />
Client programm spricht nach seiner Meinung<br />
Bände: „Wir bei Tine 2.0 empfehlen<br />
keine Clients. Zarafa unterstützt Outlook<br />
sehr gut, Kolab bietet auch Support für<br />
KDEs Kontact. Ein modernes Webinterface<br />
ist unserer Meinung nach heute das<br />
Wichtigste.“<br />
Abbildung 3: Cornelius Weiss ist einer der Kernentwickler<br />
von Tine 2.0 und Entwicklungsleiter bei<br />
der Metaways GmbH.<br />
Abbildung 4: Tine 2.0 ist aus Egroupware hervorgegangen, hat aber nichts mehr mit diesem zu tun. Gemeinsam<br />
mit Kolab haben die Entwickler das Open-Source-Active-Sync-Modul Synchotron zusammengestellt.
Titelthema<br />
www.linux-magazin.de Groupware-Migration 05/2013<br />
22<br />
Abbildung 5: Hat die FSFE und Kolab geprägt: Georg<br />
Greve, CEO von Kolab Systems.<br />
Aber bei den Clients fangen die Fragen<br />
erst an, denn hier sind die Details wichtig:<br />
Gibt es in der IT-Architektur des Unternehmens<br />
Modelle für Benutzer-Rollen<br />
und ‐Rechte oder Richtlinien für Geräte<br />
und Clients? „All das muss die Evaluationsphase<br />
erfassen und mit der in Frage<br />
kommenden Groupwarelösung in Einklang<br />
bringen.“ Dazu kommt, so Weiss<br />
weiter, „die Frage: Was wird im Unternehmen<br />
wirklich gelebt?“ Oft kämen in<br />
Abteilungen – ohne Wissen der zentralen<br />
IT – Erweiterungen, Funktionen oder Details<br />
zum Einsatz, die die ganze Migration<br />
torpedieren, ganz ähnlich wie im<br />
Münchner Office-Migrationsprojekt.<br />
Negativ-Vorbild Limux<br />
Dort hatten Admins bei der Bestandsaufnahme<br />
plötzlich eine hohe fünfstellige<br />
Zahl an wild gewachsenen, aber für den<br />
Betrieb zwingend notwendigen Formatvorlagen<br />
und Office-Makros gefunden.<br />
„Hier ist es in der Bestandsaufnahme<br />
sehr, sehr wichtig, Ängste abzubauen<br />
und Awareness für derlei Probleme zu<br />
schaffen.“ In einer offenen Atmosphäre<br />
müssen die Migrationsbeauftragten die<br />
Mitarbeiter fragen: Wie arbeitet ihr, was<br />
nutzt ihr, was braucht ihr?<br />
Um das abzubilden, arbeitet Metaways<br />
mit Partnern wie Userprompt [5] zusammen,<br />
die mit psychologischen und<br />
didaktischen Methoden bei der neutralen<br />
Bestandsaufnahme helfen, etwa durch<br />
Zufriedenheitsstudien oder Beratungsleistungen<br />
rund um die Usability-Norm<br />
ISO 9241-210 [6]. Am wichtigsten daran<br />
sei, so Weiss: „Bei der Gestaltung des<br />
Abbildung 6: Kolab 3.0 ist jüngst erschienen, bringt Roundcube als Webmailer mit und will Outlook, Kontact,<br />
Thunderbird und Mobiltelefone unterstützen.<br />
Systems muss immer der User im Mittelpunkt<br />
stehen. Der Migrationsbeauftragte<br />
muss also regelmäßig Lieschen Müller<br />
fragen, was ihre Probleme sind.“ Der Aufwand<br />
lohnt sich, weil „ein frustrierter<br />
Benutzer immer teurer als die <strong>Die</strong>nstleistung<br />
bei der Umstellung ist“.<br />
<strong>Die</strong> Rechnung gelte übrigens bei jeder<br />
Migration weg von Microsoft Exchange:<br />
„Man muss akzeptieren, dass auch Exchange<br />
Stärken hat, und wer seine Leute<br />
gegen deren Willen davon wegzwingt,<br />
hat ein Problem.“ Da sei es ganz wichtig,<br />
den Menschen zu vermitteln, man helfe<br />
ihnen, ihre Aufgaben besser, schneller<br />
und einfacher zu erledigen – eine absolut<br />
untechnische, aber aufwändige Arbeit.<br />
Einführungsprojekt<br />
Das gelingt dem leichter, der der Umstellung<br />
ein Einführungsprojekt, also eine<br />
Art Pilotphase, voranstellt und dort die<br />
„kritischsten User reinnimmt. <strong>Die</strong> Meinungsmacher<br />
sollen sich hier so richtig<br />
auskotzen“, erzählt Weiss. „<strong>Die</strong> Schulung<br />
und Begleitung, den Mitarbeitern<br />
im Schneeballsystem den individuellen<br />
Mehrwert der Umstellung zu vermitteln,<br />
das ist viel wichtiger und schwieriger<br />
als die Migration technisch hinzubekommen.“<br />
Das sei angesichts so vieler nötiger<br />
Soft Skills für die relativ technisch orientierte<br />
Open-Source-Szene ein Problem.<br />
Und auch die in der Regel eher IT-lastige<br />
Projektplanung oder ‐leitung übersieht<br />
derart psychologisch-firmenpolitische<br />
Prozesse gerne.<br />
Logistik<br />
Doch auch logistisch erweist sich das als<br />
eine große Herausforderung. „Trainings<br />
planen, die Rollouts terminieren, die Meinungsmacher<br />
vorab schulen, das sind<br />
viele Parameter, die sehr unterschiedliche<br />
Fähigkeiten verlangen“, erklärt Weiss.<br />
Sein Tipp: Wer eine Groupwaremigration<br />
plant, soll den Projektplan fürs Einführungsprojekt<br />
mit allen Abteilungsleitern<br />
abstimmen, dabei genug Reserven einkalkulieren,<br />
aber den Plan detailliert und<br />
Abbildung 7: Ingo Steuwer hat als Projektmanager<br />
bei Univention schon zahlreiche Groupwaremigrationen<br />
betreut.
Tel. 0 64 32 / 91 39-749<br />
Fax 0 64 32 / 91 39-711<br />
vertrieb@ico.de<br />
www.ico.de/linux<br />
SEIT 1982<br />
zwingend für alle Abteilungen, Schulungen,<br />
Trainings und Rollouts festlegen.<br />
Ein „Das wird schon“ sei einfach nicht<br />
akzeptabel, genauso dürfen Projektstress<br />
oder das Tagesgeschäft Schulungen nicht<br />
verhindern.<br />
Offen gewinnt<br />
Erst lange nach dem Organisatorischen<br />
kommt die Technik an die Reihe: Zunächst<br />
ist zu klären, welche User aktuell<br />
welche Ressourcen gemeinsam nutzen.<br />
<strong>Die</strong>se lassen sich auch nur gemeinsam<br />
migrieren. Umgekehrt vereinfachen möglichst<br />
kleine Einheiten den Umzug, beispielsweise<br />
wenn der Admin ein Postfach<br />
nach dem anderen in die neue Groupware<br />
prügeln kann.<br />
Ingo Steuwer von Univention weiß aus<br />
Erfahrung: „Unnötig sind vor allem projektspezifische<br />
Alles-auf-einmal-umstellen-Migrationslösungen,<br />
die meist deutlich<br />
mehr Vorbereitungszeit benötigen als<br />
eine kurze, aufs Wesentliche beschränkte<br />
Migrations-Hilfestellung direkt beim Anwender.“<br />
Steht fest, welche Daten umziehen müssen,<br />
gilt es, passende Konverter zu finden.<br />
<strong>Die</strong> zu lizenzieren kann jedoch ins<br />
Geld gehen. Zudem geben insbesondere<br />
viele Cloudlösungen ihre Daten nicht<br />
ohne Weiteres heraus. „Clouddienste tendieren<br />
dazu, keine anderen Services neben<br />
sich zu akzeptieren. Allerdings gibt<br />
es spezialisierte Anbieter, die dem etwas<br />
entgegenwirken – wie etwa Migration<br />
Wiz [7] oder Audriga“ (siehe Kasten<br />
„Zu <strong>Die</strong>nsten“, Abbildung 9). „Für die<br />
Migration aus der Cloud heraus bieten<br />
sich sonst oftmals nur die bekannten Protokolle<br />
IMAP und Ical an“, so Michael<br />
Kromer von Zarafa.<br />
Auch Ingo Steuwer von Univention empfiehlt<br />
für den Datenaustausch offene<br />
Standards: „Gute Erfahrungen haben wir<br />
mit der Kombination Postfix und LDAP<br />
bei der Verteilung von Mails zwischen<br />
mehreren Mailsystemen gemacht.“ Als<br />
Faustregel gilt: Je offener die Groupwarelösung<br />
und die von ihr unterstützten<br />
Standards, desto einfacher gelingt der<br />
Umzug der Daten. E-Mails lassen sich<br />
beispielsweise besonders einfach umsiedeln,<br />
wenn sie auf einem IMAP-Server<br />
liegen.<br />
Hier liefert Ingo Steuwer von Univention<br />
noch einen Tipp: „In der Praxis hat es<br />
sich bewährt, für Userkonten temporär<br />
ein zweites zulässiges Passwort zu setzen<br />
und darüber direkt den Zugriff auf die<br />
IMAP-Daten im Kontext des Users durchzuführen<br />
(wenn es die Vereinbarungen<br />
der Umgebung ermöglichen). Nur so ist<br />
bei allen IMAP-Varianten gewährleistet,<br />
dass der User genau seine Mails und<br />
seine Mail-Attribute (zum Beispiel »gelesen«-<br />
oder »wichtig«-Flags) im Zielsystem<br />
wieder vorfindet.“<br />
Importfilter und Sanity<br />
Checks<br />
Automatisch Daten zu übernehmen ist<br />
jedoch immer gefährlich, weiß Cornelius<br />
Weiss: „Wir hatten mal einen Fall,<br />
wo ein Export-Import-Filter bei manchen<br />
Objekten mit einer 40-stelligen ID einfach<br />
die letzten beiden Ziffern abgeschnitten<br />
hat. Bemerkt haben das die Admins erst<br />
Innovative Computer • Zuckmayerstr. 15 • 65582 <strong>Die</strong>z<br />
Neueste Intel ®<br />
Xeon ® Prozessoren.<br />
Jetzt mit<br />
bis zu 8 Kernen/16<br />
Threads pro CPU<br />
und bis zu 80%<br />
mehr Leistung!<br />
BALIOS R25A 2HE SERVER<br />
GmbH<br />
• Intel ® Xeon ® E3-1220 V2 3,1GHz S1155<br />
• 2x 4GB DDR3 RAM<br />
• 2x 2TB 24x7 SATA-2 HDD<br />
• 2x Gigabit-LAN<br />
inkl. MwSt.<br />
exkl. MwSt.<br />
1188, 81 999,-<br />
Art.Nr. Bto-2992677<br />
BALIOS R35A 3HE SERVER<br />
• Intel ® Xeon ® E3-1220 V2 3,1GHz S1155<br />
• 2x 4GB DDR3 RAM<br />
• 4x 1TB 24x7 SATA-2 HDD<br />
• Adaptec 6405E<br />
• 2x Gigabit-LAN<br />
inkl. MwSt.<br />
exkl. MwSt.<br />
1664, 81 1399,-<br />
Art.Nr. Bto-2992678<br />
BALIOS R45B 4HE STORAGE SERVER<br />
Abbildung 8: Univention will mit seinem Corporate Server die „ideale Plattform“ für Groupwareserver sein<br />
und bietet Kolab, Zarafa und Open-Xchange als Lösung an.<br />
• Intel ® Xeon ® E3-1220 V2 3,1GHz S1155<br />
• 2x 8GB DDR3 RAM<br />
• 8x 2TB 24x7 SATA-2 HDD<br />
• LSI 9280-16i4e + BBU<br />
• 2x Gigabit-LAN<br />
inkl. MwSt.<br />
exkl. MwSt.<br />
3687, 81 3099,-<br />
Art.Nr. Bto-2992679<br />
Intel<br />
® , Intel ® Logo, Intel ® Inside, Intel ® Inside Logo, Atom, Atom Inside,<br />
Xeon und Xeon Inside sind Marken der Intel Corporation in den USA und<br />
anderen Ländern.<br />
Alle Preise in Euro<br />
wir liefern auch<br />
nach Österreich<br />
u. in die Schweiz
Titelthema<br />
www.linux-magazin.de Groupware-Migration 05/2013<br />
24<br />
nach Monaten.“ Wer dann die Pflicht<br />
vergessen hat, die alte Groupware weiterzubetreiben,<br />
idealerweise im Read-only-<br />
Modus, hat ein Problem und riskiert umfangreichen<br />
Datenverlust.<br />
Tine 2.0 bringt für solche Importfilter<br />
eine eigene Skripting-Schnittstelle mit,<br />
die mit Sanity Checks derlei Fehler zu<br />
verhindern sucht. „Bei uns muss dann<br />
alles durch unser API durch, das ist vorgefiltert<br />
und sicher“, erklärt Weiss.<br />
Halsabschneider<br />
Wer aber in den sauren Apfel beißen<br />
muss, weil es keine offenen Wege gibt<br />
(Caldav, Carddav, XML oder Ähnliches)<br />
oder wenn der Hersteller des Zielsystems<br />
keine Datenmigration vom Quellsystem<br />
unterstützt (wie häufig bei Exchange),<br />
der muss immer mit Einbußen rechnen,<br />
meint Ingo Steuwer: „Dann muss im<br />
Projekt eine konkrete Kosten-Nutzen-<br />
Relation entscheiden. Oft ist es einfacher,<br />
einige Stunden in die manuellen<br />
Im- oder Exporte der wenigen Poweruser<br />
zu investieren und bei den restlichen Anwendern<br />
eine reine Mailmigration durchzuführen.“<br />
Ein weiteres Problem besteht in den mitunter<br />
großen Datenmengen. Laut Karsten<br />
Will (Abbildung 10) von Open-Xchange<br />
(Abbildung 11, [10]) sollte der Projektleiter<br />
überlegen, „Daten nur aus einem<br />
bestimmten Zeitraum zu migrieren und<br />
Ordner wie »Spam« oder »Trash« projektweit<br />
auszuklammern“. Michael Kromer<br />
von Zarafa ergänzt: „IMAP, also Mails<br />
gehen immer. Kalender zu migrieren ist<br />
schon schwieriger und geht oftmals nur<br />
per Ical, Kontakte höchstens per LDIF<br />
Abbildung 9: Den E-Mail-Umzug in der oder in die Cloud leicht machen, das verspricht Audriga. Derzeit gibt’s<br />
fertige Angebote allerdings nur für Exchange-to-Exchange oder OX-to-OX-Umzüge.<br />
oder CSV, wenn das beide Seiten unterstützen,<br />
Aufgaben und Notizen sind in<br />
der Regel unlösbar.“<br />
Probleme mit der Ex<br />
Weitere Probleme bereiten laut den Experten<br />
auch Spezialitäten der diversen<br />
proprietären Groupwaresysteme, etwa<br />
Kalender-Einträge bei Notes und Domino,<br />
aber auch Erweiterungen oder<br />
exotische Verfahren innerhalb von Outlook,<br />
die versuchen die Bedienung der<br />
Benutzeroberfläche nachzuahmen und<br />
zu automatisieren.<br />
Hinzu kommt bei Platzhirsch Exchange<br />
ein grundlegendes Problem. Der speichert<br />
eben mitunter nicht alles auf dem<br />
Server, sondern erlaubt es dem Anwender,<br />
Daten vom Server herunterzuladen<br />
und nur lokal in Outlook abzulegen. „In<br />
manchen Installationen umgehen Nutzer<br />
damit Beschränkungen der Server-Kapazität,<br />
‐Software und ‐Performance. Für<br />
die Migration ist das katastrophal, aber<br />
auch für die Datensicherheit im Betrieb<br />
und natürlich auch in Bezug auf Backups<br />
und die Auffindbarkeit von Daten“,<br />
erklärt Greve.<br />
In solchen Fällen benötigen Unternehmen<br />
eine extra Strategie, die von „Wird nicht<br />
mit migriert“ über „Wird vor der Migration<br />
auf den Server geschoben“ zu „Muss<br />
von Hand eingepflegt werden“ (zum Beispiel<br />
alte Mails per IMAP auf den neuen<br />
Server hochladen) reicht. Kolab-Partner<br />
Bynari, Hersteller eines der beiden Outlook-Plugins,<br />
bietet für solche Szenarien<br />
sogar spezielle Werkzeuge an.<br />
Aber es scheint so, als sei die Turnschuh-<br />
Administration nicht vermeidbar, wenn<br />
Outlook und Exchange im Spiel sind.<br />
Abbildung 10: Der OX-Entwickler Karsten Will ist<br />
regelmäßig mit Datenim- und -export konfrontiert.<br />
Abbildung 11: <strong>Die</strong> OX-App-Suite als neueste Errungenschaft von Open-Xchange konzentriert sich voll auf<br />
Anwender, die mit dem Browser auf das Groupwareportal zugreifen.
Zu <strong>Die</strong>nsten<br />
<strong>Die</strong> Audriga GmbH aus Karlsruhe hat auf der<br />
Cebit 2013 einen Onlinedienst vorgestellt, der<br />
Daten zwischen verschiedenen Groupwaresystemen<br />
kopiert [8].<br />
Der versprochene „Umzug per Selbstbedienung“,<br />
also mit wenigen Mausklicks und<br />
ohne Software-Installation, war zum Redaktionsschluss<br />
allerdings nur auf jeweils Open-<br />
Xchange 6 oder Microsoft Exchange möglich.<br />
Migrieren lassen sich dabei E-Mails, Kontakte,<br />
Kalendereinträge und Aufgaben.<br />
Das bestätigt auch Weiss: „Ohne die PST-<br />
Dateien von Outlook geht da nicht viel.<br />
Aber auch hier bleibt die zentrale Frage:<br />
Wie viel Migration ist wirtschaftlich und<br />
was rentiert sich nicht mehr?“<br />
Simulant<br />
Niemand sollte auf die Idee kommen,<br />
die Migration einfach an den produktiven<br />
Systemen vornehmen. Stattdessen empfiehlt<br />
es sich, mit Testdaten oder sogar<br />
einer Kopie der echten Daten den zurechtgelegten<br />
Migrationsplan in virtuellen<br />
Maschinen einmal durchzuspielen. „Es<br />
hilft immer, zunächst ein Postfach von A<br />
bis Z zu migrieren, ohne den Mail traffic<br />
gleich umzuleiten“, rät Kromer.<br />
Karsten Will von Open-Xchange empfiehlt,<br />
„zunächst testweise einige Objekte<br />
jedes Typs (E-Mails, Termine, Kontakte<br />
und so weiter) in einen explizit angegebenen<br />
Unterordner zu migrieren“. Das<br />
Ergebnis prüft dann ein Mitarbeiter in der<br />
neuen Groupware. Mit diesem Vorgehen<br />
kann man sich auch bei der richtigen<br />
Migration Schritt für Schritt vorantasten:<br />
War der Umzug dieser Testordner erfolgreich,<br />
löscht man sie und führt dann die<br />
eigentliche Migration durch. Hier zeigt<br />
sich wieder: Für die Tests und insbesondere<br />
die Migration sollten Admins genügend<br />
Zeit einplanen und den Aufwand<br />
nicht unterschätzen.<br />
Ingo Steuwer von Univention ergänzt:<br />
„Bei projektspezifischen Implementierungen<br />
tauchen in der eigentlichen Migration<br />
fast immer Sonderfälle auf, die im<br />
Test-Datenset nicht vorhanden waren.“<br />
Gerade bei großen Systemen beziehungsweise<br />
Datenbeständen muss der Umzug<br />
in mehreren Schritten erfolgen. Während<br />
dieser Zeit müssen das alte und das neue<br />
Groupwaresystem parallel laufen.<br />
Der Umzugsdienst kostete zum Redaktionsschluss<br />
rund 20 Euro pro Postfach. Interessenten<br />
können ihn zunächst kostenlos testen,<br />
müssen dann aber mit Einschränkungen leben<br />
– die Postfachgröße ist beispielsweise auf 20<br />
MByte begrenzt [9].<br />
Den Umstieg auf andere Groupwaresysteme<br />
bietet die Audriga GmbH nur auf Projektbasis<br />
an, möglich ist dabei eine Migration zu Google<br />
Apps, Kolab, Open-Xchange 6, Zarafa, Zimbra<br />
und Caldav/Carddav-kompatiblen Systemen.<br />
Ingo Steuwer rät: „In größeren Umgebungen<br />
ist eine vollständige Migration<br />
in einem kurzen Zeitfenster meist nicht<br />
realisierbar. Beim Projektverlauf hilft es,<br />
wenn ein neues System erst durch einen<br />
kleinen Anwenderkreis pilotiert wird.<br />
Hier sollte sichergestellt bleiben, dass die<br />
Grundlagen im Zugriff (Benutzername,<br />
Passwort, Gruppen und Berechtigungen)<br />
identisch konfiguriert sind und dass es<br />
eine eindeutige Datenbank gibt, die festlegt,<br />
welcher User auf welchem System<br />
beheimatet ist.“<br />
Michael Kromer ergänzt: „Ist die Migration<br />
gut geplant, so lässt sich eine Soft-<br />
Migration durchführen, indem entweder<br />
eine transparente Mail-Weiterleitung<br />
(Forwarding) oder ein Queueing bei einer<br />
vollen Umstellung dafür sorgen, dass die<br />
Anwender nichts mitbekommen.“ Ebenfalls<br />
sollte man seiner Erfahrung nach<br />
darauf achten, Daten nicht mehrfach zu<br />
importieren und das Routing zu testen.<br />
Der große Plan<br />
Das A und O bei einer Migration bleibt<br />
die Planung. Das gilt erst recht, wenn sie<br />
sich nur in mehreren Schritten durchführen<br />
lässt beziehungsweise zwangsweise<br />
über einen längeren Zeitraum hinzieht.<br />
Wer bei der Planung schlampt, rauscht<br />
während des eigentlichen Umzuges unweigerlich<br />
in zahlreiche Probleme. Eine<br />
Testmigration in virtuellen Maschinen<br />
kann zudem versteckte Probleme aufdecken.<br />
Wenn möglich, sollte man sich auch<br />
immer noch den Rückweg offenhalten –<br />
etwa mit einem Notfallplan und Backups.<br />
Denn gehen Daten verloren oder werden<br />
diese irreparabel beschädigt, ist der erlittene<br />
Schaden oft unbezahlbar.<br />
Eine zentrale Rolle bei der Wahl der<br />
neuen Groupware sollte offenen und<br />
freien Formaten, Ansätzen und Standards<br />
zukommen, meint Georg Greve: „E-Mail<br />
ist ja recht schmerzfrei, aber Kalender,<br />
Adressbücher, Aufgaben kann man meist<br />
nur über die entsprechenden Ical- und<br />
Vcard-Standards abbilden, auch wenn es<br />
da erhebliche Unterschiede zwischen den<br />
Produkten gibt. Dann braucht es Skripte,<br />
die mit Field Mapping arbeiten und die<br />
Daten verfügbar machen. Letztlich sollte<br />
man sich seine Groupware aber auch<br />
danach aussuchen, welches das interne<br />
Speicherformat ist. Offene Standards sind<br />
hier hoch zu bewerten, weil sie weitab<br />
von jedem Vendor-Lock-in arbeiten und<br />
zukünftige Migrationen erleichtern.“<br />
Stehende Ovationen<br />
Auch weil offene Standards in vielen<br />
Unternehmen kaum präsent sind, sondern<br />
proprietäre Produkte den Mitarbeitern<br />
das Leben schwer machen, ist die<br />
Groupwaremigration nicht selten ein Minenfeld<br />
für Consultants, die in eigentlich<br />
willige Firmen kommen. In der Regel ist<br />
viel Überzeugungsarbeit und Motivation<br />
zu leisten, stimmen alle Experte überein.<br />
Aber es gibt Ansätze, die sich instrumentalisieren<br />
lassen: Cornelius Weiß<br />
ist es „ein einziges Mal“ passiert, dass<br />
seine Truppe „mit stehenden Ovationen<br />
empfangen wurde“, als sie das erste Mal<br />
zum Kunden kam. „<strong>Die</strong> waren heilfroh,<br />
dass sie endlich ihre skurrile Adressbuch-<br />
Kalender-Kombination los wurden. Das<br />
waren wirklich dankbare Kunden.“ n<br />
Infos<br />
[1] Zarafa: [http:// www. zarafaserver. de]<br />
[2] Tine20: [http:// www. tine20. org]<br />
[3] Kolab: [http:// www. kolab. org]<br />
[4] Univention: [http:// www. univention. de]<br />
[5] Userprompt: [http:// user‐prompt. com]<br />
[6] ISO 9241: [http:// de. wikipedia. org/ wiki/<br />
EN_ISO_9241]<br />
[7] Migration Wiz:<br />
[https:// www. migrationwiz. com]<br />
[8] Audriga: [https:// www. email‐umzug. de/<br />
de/ groupware‐umzug. html]<br />
[9] Preisliste Audriga: [https:// www. emailumzug.<br />
de/ groupware‐umzug/ preise. html]<br />
[10] Open-Xchange:<br />
[http:// www. open‐xchange. com]<br />
[11] Citadel-Groupware:<br />
[http:// uncensored. citadel. org]<br />
Groupware-Migration 05/2013<br />
Titelthema<br />
www.linux-magazin.de<br />
25
Titelthema<br />
www.linux-magazin.de Office-Importfilter 05/2013<br />
26<br />
Eigene Importfilter für Libre Office schreiben<br />
Passende Spezialfilter<br />
Früher verhinderten proprietäre Dateiformate den Umstieg auf alternative Officesuites. Das hat sich gewaltig<br />
geändert, mittlerweile gilt Libre Office gar als VW Golf der Office-Welt, vor allem dank der vielen Importfilter.<br />
Sogar zum Zusammenschrauben eigener Importer reichen Hobbykenntnisse. Fridrich Strba, Christian Lohmaier, Markus Feilner<br />
© Iakov Filimonov, 123RF.com<br />
Entwickler eignen, die, ohne groß in die<br />
Tiefen von Libre Office einzutauchen,<br />
Erfolge sehen wollen.<br />
<strong>Die</strong> Schlüsselrolle nimmt dabei das Open<br />
Document Format (ODF, [2]) ein, das<br />
sich als Austauschformat für Filterprogrammierer<br />
geradezu aufdrängt. Wer es<br />
verwendet, muss nur wenige Kernbestandteile<br />
der Libre-Office-Interna durchschauen,<br />
also einige Hundert Zeilen gut<br />
dokumentierten Quelltext verstanden<br />
haben, schon kann er loslegen und für<br />
sein Format eine ODF-Entsprechung entwickeln.<br />
<strong>Die</strong> öffnet Libre Office dann<br />
problemlos.<br />
Je mehr fremde Formate Libre Office<br />
sauber unterstützt, umso besser – so lautet<br />
wohl ein Credo der Entwickler. Jede<br />
neue Version bringt neue Importtools.<br />
Erst kürzlich erzählte Michael Meeks<br />
in seinem Vortrag auf der Fosdem, wie<br />
immer mehr Anwender Libre Office verwenden,<br />
um alte Officedateien zu öffnen,<br />
deren Programmversionen nirgendwo<br />
mehr laufen, und so die Inhalte zu retten<br />
[1]. Undokumentiert? Nicht mehr<br />
unterstützt? Verwaist? Nichts scheint zu<br />
schwer, seit Libre Office 3.3 wächst die<br />
Zahl der Formate stetig. Ein Grund dafür<br />
ist die Leichtigkeit, mit der Entwickler<br />
neue Importfilter erstellen. Wie das geht,<br />
zeigt dieser Artikel.<br />
Parsen und verstehen<br />
Ein Importfilter macht eigentlich nichts<br />
anderes, als ein fremdes Dokument zu<br />
parsen und sinnvolle Informationen herauszusuchen.<br />
Mit denen füttert er die Anwendung,<br />
sodass sie auf dem Bildschirm<br />
Inhalte in hilfreicher Form darstellt. Viele<br />
Filter, beispielsweise der für Microsoft<br />
Word, kommunizieren jedoch direkt mit<br />
Libre Office, indem sie die internen Strukturen<br />
der Dokumente zu übernehmen<br />
trachten.<br />
<strong>Die</strong>se Vorgehensweise vermeidet Informationsverluste,<br />
indem sie ohne zusätzliche,<br />
manchmal sehr rechenintensive<br />
Umwandlungen, versucht das Dokument<br />
direkt zu verstehen. Aber das<br />
Ganze klappt natürlich nur, wenn der<br />
Filter mit tiefer gehendem Know-how<br />
über das Ausgangsformat ausgestattet ist.<br />
Das wiederum erzeugt eine sehr steile<br />
Lernkurve bei dem, der solch einen Filter<br />
programmieren will.<br />
Open Document Format<br />
Gut, dass es deshalb noch zwei andere<br />
Typen von Importfiltern gibt, die weniger<br />
hohe Ansprüche stellen und sich auch für<br />
XSLT-Filter<br />
Auch XML bietet sich für Importfilter an,<br />
Libre Office bringt sogar einen eigenen<br />
XSLT-Filterdialog mit (siehe Abbildung<br />
1). Damit das klappt, bedarf es nur noch<br />
einer XSL-Vorlage, die fremdes XML in<br />
ODF konvertieren hilft. Ist die erst einmal<br />
angelegt, lässt sich der Rest mit Mausklicks<br />
im GUI der Office-Anwendung bewerkstelligen.<br />
Den passenden Dialog findet der Anwender<br />
im Menü unter »Extras | XML‐Filtereinstellungen«.<br />
Hier zeigt sich eine<br />
Liste aller XSLT-Filter zusammen mit der<br />
Anwendung, die Libre Office öffnen soll.<br />
Außerdem steht hier die Richtung der<br />
Umwandlung, also ob es sich um einen<br />
Import- oder Export-Filter handelt oder<br />
aber beides. Ein Klick auf »Neu« ergibt<br />
den Dialog aus Abbildung 2.<br />
Auf dem Tab »Allgemein« finden sich die<br />
Informationen, die später für den Anwender<br />
sichtbar sein werden: der Name, die<br />
Libre-Office-Applikation, die das umgewandelte<br />
Dokument erhalten wird, beispielsweise<br />
Calc für Tabellen jedweder
www.linux-magazin.de<br />
Office-Importfilter 05/2013<br />
Titelthema<br />
27<br />
Abbildung 1: XML-XSLT ist einer der Wege, fremde Dateiformate in ODF oder Libre Office zu überführen. Das<br />
Officepaket hat bereits einige Filter an Bord.<br />
Art. <strong>Die</strong>se Information verwendet Libre<br />
Office übrigens auch, um unterschiedliche<br />
Dokumentformate zu gruppieren:<br />
Wer im Datei-Öffnen-Dialog »Präsentationen«<br />
wählt, dem zeigt es automatisch<br />
alle Dateien an, die ein Importfilter umwandeln<br />
kann.<br />
»Name des Dateityps« und »Dateiendung«<br />
helfen Dateien zu organisieren und mit<br />
dem Ausgangsmaterial zu verknüpfen.<br />
Als Dateinamen-Erweiterung kann der<br />
Anwender eine durch Strichpunkte separierte<br />
Liste von Endungen angeben, zum<br />
Beispiel »xls« und »xml« für Microsofts<br />
Excel-2003-XML-Format.<br />
Transformationen<br />
Auf dem nächsten Reiter »Transformation«<br />
(siehe Abbildung 3) finden sich<br />
dann die Informationen über die XSL-<br />
Transformationen, die die eigentliche<br />
Umwandlungsarbeit erledigen. Das Eingabefeld<br />
»DocType« bietet sich vor allem<br />
für Importfilter an. <strong>Die</strong> XSLT-Filter-<br />
Typerkennung von Libre Office scannt<br />
nach dem hier eingegebenen String in<br />
den ersten 4000 Byte einer Filterdatei.<br />
Wer den Begriff in seinem Filter bereits<br />
untergebracht hat, tut sich leichter, ansonsten<br />
lässt er das Feld leer, dann bestimmt<br />
Libre Office diesen anhand der<br />
Dateinamen-Erweiterung.<br />
XSLT 2.0<br />
Wer dagegen Exportfilter schreiben will,<br />
sollte im »Export‐XSLT«-Feld die Datei<br />
nennen, die die Transformation von<br />
Open-Document-XML zu dem gewünschten<br />
File format übernimmt. Lässt er das<br />
Feld leer, dann weiß Libre Office, dass es<br />
sich nicht um einen Exportfilter handelt.<br />
Das Gleiche gilt natürlich auch für Importfilter,<br />
wenn das »Import‐XSLT«-Feld<br />
leer bleibt.<br />
Libre Office bringt bereits mehrere Filter<br />
mit, die beispielsweise nur den Export<br />
erlauben, etwa die XHTML- und Mediawiki-Filter.<br />
Andere, etwa die Docbook-<br />
Extension, enthalten keine Formatvorgaben<br />
und verlangen zwingend eine Vorlagendatei,<br />
die der Anwender über das Feld<br />
»Import‐Dokumentvorlage« eingibt. Ohne<br />
diese Information verwendet Libre Office<br />
seine eigenen Standardvorlagen.<br />
Abbildung 2: Der erste Schritt zu einem eigenen Importfilter führt über die Wahl eines eindeutigen Namens.
Titelthema<br />
www.linux-magazin.de Office-Importfilter 05/2013<br />
28<br />
Nur wer einige exklusive XSLT-2.0-Features<br />
benötigt, sollte den Schalter »Der<br />
Filter benötigt XSLT 2.0‐Prozessoren« aktivieren.<br />
Sonst ist immer Version 1.0 die<br />
bessere Wahl, weil viel einfacher und von<br />
der in Libre Office verwendeten Libxslt<br />
deutlich besser unterstützt.<br />
Wer sich so weit durch die Dialoge gekämpft<br />
hat, kann seine Filterprogramme<br />
über die Schaltfläche »XSLTs testen« aus<br />
Abbildung 1 ausprobieren, sie im Erfolgsfall<br />
direkt als Paket exportieren und über<br />
Plattformen [3] mit anderen Anwendern<br />
sharen. <strong>Die</strong>se relativ einfache, aber direkt<br />
mit der Community vernetzte Vorgehensweise<br />
erklärt, warum in den letzten Jahren<br />
so viele Filter rund um Libre Office<br />
entstanden sind.<br />
Das Xfilter-Framework<br />
Auch der größte Vorteil der Implementierung<br />
als XSLT-Filter liegt in seiner Einfachheit.<br />
Allerdings hat die auch Nachteile:<br />
Obwohl die Entwickler den zugrunde<br />
liegenden XSLT-Prozessor auf die<br />
relativ schnelle Libxslt-Engine migriert<br />
haben, kann eine Konvertierung mit XSLT<br />
besonders bei umfangreichen Dokumenten<br />
recht lange dauern. Außerdem mag<br />
Listing 1: Filterbeschreibung<br />
01 <br />
02 <br />
03 IMPORT ALIEN USESOPTIONS<br />
3RDPARTYFILTER PREFERRED<br />
04 <br />
05 <br />
06 com.sun.star.comp.Draw.<br />
MSPUBImportFilter<br />
07 <br />
08 <br />
09 Microsoft<br />
Listing 2: Definition des Dateityps<br />
01 <br />
02 <br />
03 com.sun.star.comp.Draw.<br />
MSPUBImportFilter<br />
04 <br />
05 <br />
06 pub<br />
07 <br />
08 <br />
09 application/x‐mspublisher<br />
diese Methode ungeeignet sein, wenn<br />
sich die Basiskonzepte des Eingabe- und<br />
des Ausgabeformats nicht ohne Weiteres<br />
aufeinander übertragen lassen.<br />
Eine Lösung bietet das Xfilter-Framework.<br />
(Genau genommen nutzen auch die<br />
XSLT-Filter dieses Framework intern als<br />
eine Zwischenschicht.) Wer das Xfilter-<br />
Framework verwendet, profitiert von den<br />
Möglichkeiten höherer Programmiersprachen,<br />
was eine leichtere Abbildung von<br />
abweichenden Konzepten ermöglicht.<br />
Anders als bei XSLT lässt sich ein Dokument<br />
in mehreren Durchgängen verdauen,<br />
was ein komplexeres Verarbeiten<br />
der eingelesenen Daten möglich macht.<br />
Bei nicht XML-basierten Formaten ist das<br />
Xfilter-Framework ebenfalls angezeigt –<br />
ein XSLT-Filter kann mit Binärformaten<br />
nichts anfangen.<br />
MS Publisher integrieren<br />
<strong>Die</strong> Integration in das Xfilter-Framework<br />
ist etwas komplizierter als das Nutzen der<br />
XSLT-Filterdialoge, aber auch kein Hexenwerk.<br />
Das folgende Beispiel verfolgt die<br />
nötigen Schritte anhand des in Libre Office<br />
4 neu hinzugekommenen Microsoft-<br />
Publisher-Filters. Der Einfachheit halber<br />
Publisher 97‐2010<br />
10 <br />
11 <br />
12 0<br />
13 <br />
14 <br />
15 draw_Publisher_Document<br />
16 <br />
17 <br />
18 com.sun.star.drawing.<br />
DrawingDocument<br />
19 <br />
20 <br />
10 <br />
11 <br />
12 true<br />
13 <br />
14 <br />
15 Publisher Document<br />
16 <br />
17 <br />
18 Microsoft Publisher<br />
19 <br />
20 <br />
beginnt es mit den Konfigurationsdaten.<br />
Dazu benötigt man zwei XML-Schnipsel:<br />
einen für die Filterbeschreibung (Listing<br />
1), einen anderen für die Definition des<br />
Dateityps (Listing 2).<br />
Das Attribut »oor:name« des Knotens<br />
ist die interne Bezeichnung des Filters<br />
und von besonderer Bedeutung, dient<br />
es doch zur Verknüpfung des Dateityps<br />
mit einem zugehörigem Filter. <strong>Die</strong> meisten<br />
»Flags« lassen sich einfach übernehmen:<br />
»IMPORT« markiert den Filter als<br />
einen Importfilter, ein Exportfilter hätte<br />
das Flag »EXPORT«, bei einem bidirektionaler<br />
Filter hätte der Entwickler beide<br />
angegeben.<br />
Das Flag »ALIEN« weist den Filter (aus<br />
Sicht von Libre Office) als einen nichtnativen<br />
Filter aus. Im Fall eines Exportfilters<br />
würde Libre Office beim Speichern<br />
eine Warnmeldung für einen potenziellen<br />
Informationsverlust anzeigen.<br />
Filter-<strong>Die</strong>nst<br />
Der Wert von »FilterService« nennt den<br />
für die Konvertierung des Dokuments<br />
verwendeten Service und muss genau<br />
mit dem Namen in der Implementierung<br />
des Filters übereinstimmen. UNO-<br />
Komponenten verwenden Java-ähnliche<br />
Bezeichner: Der erste Teil »com.sun.star.<br />
comp.Draw« weist auf eine Komponente<br />
hin, die eine Zeichnung konvertiert, und<br />
»MSPubImportFilter« ist der eigentliche<br />
Name des Filters. Der Wert aus »UIName«<br />
wird in der grafischen Benutzeroberfläche<br />
verwendet, so zum Beispiel im Dialog<br />
zur manuellen Filterauswahl, der<br />
erscheint, wenn Libre Office für eine<br />
Datei keinen bestimmten Importfilter bestimmen<br />
konnte.<br />
»DocumentService« benennt jene Komponente,<br />
die Empfänger des umgewandelten<br />
Dokuments sein soll. In diesem Fall<br />
wird eine Microsoft-Publisher-Datei als<br />
Zeichnung in Libre Office Draw importiert,<br />
deshalb lautet der Wert »com.sun.<br />
star.drawing.DrawingDocument«. Würde<br />
es sich um ein Textdokument handeln, so<br />
ließe sich »com.sun.star.text.TextDocument«<br />
verwenden.<br />
Der Wert der »Type«-Eigenschaft benennt<br />
den Dateityp, den der Filter versteht. Er<br />
muss mit dem »oor:name«-Attribut der<br />
entsprechenden Dateitypbeschreibung<br />
übereinstimmen und sollte mit dem Na-
opensourcepress.de<br />
Abbildung 3: <strong>Die</strong> Umwandlung definieren Anwender in XSLT-Transformationen.<br />
men der entsprechenden Teilapplikation<br />
beginnen. Im vorliegenden Beispiel hört<br />
er auf den Namen »draw_Publisher_Document«.<br />
Zum Vergleich heißt der Dateityp<br />
für das Wordperfect-Format in Libre<br />
Office »writer_WordPerfect_Document«.<br />
Mit diesem Wissen erklärt sich auch das<br />
zweite XML-Fragment mit der Dateityp-<br />
Definition (Listing 2).<br />
Detektivisch<br />
Der »DetectService« benennt den Service,<br />
der entscheidet, ob eine Datei tatsächlich<br />
vom passenden Dateityp ist. Im vorliegenden<br />
Fall erledigt der Service »com.<br />
sun.star.comp.Draw.MSPUBImportFilter«<br />
beide Aufgaben, also sowohl Konvertierung<br />
als auch die Dateiformaterkennung.<br />
<strong>Die</strong> Eigenschaft »Extensions« listet – getrennt<br />
durch ein Semikolon – die möglichen<br />
Datei-Endungen auf.<br />
Bei Exportfiltern verwendet Libre Office<br />
beim Speichern mit aktivierter Option<br />
»Automatische Dateiendung« die an<br />
erster Stelle gelistete Erweiterung. »MediaType«<br />
entspricht dem Mime-Typ des<br />
Dateiformats. <strong>Die</strong> Eigenschaft »Preferred-<br />
Filter« verknüpft den Dateityp mit dem<br />
entsprechenden Dokumentfilter.<br />
Publisher erkennen<br />
Libre Office übergibt eine zu öffnende<br />
Datei dem Filter mit dem internen Namen<br />
»Publisher Document«, wenn es<br />
den Dateityp mit Hilfe der Typerkennung<br />
als »draw_Publisher_Document« identifiziert<br />
hat. Den »UIName« bekommt der<br />
Anwender dann im Datei-Auswahldialog<br />
angezeigt.<br />
Ist die Konfiguration erledigt, geht es an<br />
das Bauen des C++-Gerüsts. Da der Filter<br />
sowohl die Konvertierung als auch die<br />
Typerkennung leisten soll, muss er auch<br />
zwei separate Services<br />
bereitstellen: »com.<br />
sun.star.document.ImportFilter«<br />
und »com.<br />
sun.star.document.ExtendedTypeDetection«.<br />
Bei einem Exportfilter<br />
wäre der entsprechende<br />
Service »com.<br />
sun.star.document.ExportFilter«.<br />
In beiden Fällen muss<br />
der Entwickler das Interface »com::<br />
sun::star::document::XFilter« implementieren.<br />
Bei einem Exportfilter käme das<br />
Interface »com::sun::star::document::<br />
XExporter« hinzu, bei einem Importfilter<br />
»com::sun::star::document::XImpor ter«.<br />
Außerdem bedarf es der Initialisierung<br />
des Interface »com::sun::star::lang::XInitialization«.<br />
Da es sich bei dem Filter um<br />
einen UNO-Service handelt, sollte auch<br />
das Interface »com::sun::star::lang::XServiceInfo«<br />
bereitgestellt sein.<br />
Filtern oder abbrechen<br />
Für den Importfilter selbst sind zwei<br />
Funktionen des Xfilter-Interface nötig:<br />
»filter« und »cancel«. <strong>Die</strong> Cancel-Funktion<br />
im vorliegenden Beispiel tut einfach<br />
gar nichts, aber die Filter-Funktion übernimmt<br />
die eigentliche Konvertierung:<br />
sal_Bool SAL_CALL MSPUBImportFilter::filterU<br />
(const Sequence& aDescriptor)<br />
Zuerst besorgt sich der Entwickler eine<br />
Referenz auf den Input-Stream, der dem<br />
zu importierenden Dokument entspricht.<br />
»aDescriptor« ist eine Sequenz aus Name-<br />
Wert-Paaren, der Operator »>>=« extrahiert<br />
einen Wert vom UNO-Typ Any<br />
(der – wie der Name schon andeutet –<br />
verschiedenste Typen beinhalten darf)<br />
und konvertiert ihn in den Typ der Variablen<br />
auf der Empfängerseite:<br />
sal_Int32 nLength = aDescriptor.getLength();<br />
const PropertyValue *pValue = aDescriptor.U<br />
getConstArray();<br />
OUString sURL;<br />
Reference xInputStream;<br />
for (sal_Int32 i = 0 ; i >= xInputStream;<br />
Als Nächstes muss der Entwickler den<br />
Importservice angeben, der das konvertierte<br />
Dokument in Form von SAX-Nach-<br />
ISBN 978-3-95539-000-6 ISBN 978-3-95539-001-3<br />
150 Seiten · ¤ 9,99<br />
PDF<br />
NEU<br />
mobil e<br />
Schneller erfahren, wie’s geht<br />
opensourceschool.de<br />
TRAINING<br />
Programmierung<br />
13. – 15. 05. iPhone und iPad Entwicklung<br />
13. – 15. 05. C++ für Fortgeschrittene<br />
27. – 29. 05. Git<br />
Webentwicklung<br />
24. – 26. 04. JavaScript<br />
13. – 15. 05. Node.js<br />
22. – 24. 05. ExtJS<br />
Administration<br />
25. – 26. 04. Tine 2.0 - Anwendung<br />
06. – 08. 05. Vorbereitung auf <strong>Linux</strong> Essentials<br />
13. – 17. 05. Nagios<br />
weitere Themen und Termine:<br />
opensourceschool.de/kurstermine<br />
Office-Importfilter 05/2013<br />
Titelthema<br />
www.linux-magazin.de<br />
SCHREIBEN<br />
SIE!<br />
Wir freuen uns über Ihre Publikation –<br />
schon ab 40 Seiten!<br />
www.opensourcepress.de/autor-werden<br />
dition<br />
29
Titelthema<br />
www.linux-magazin.de Office-Importfilter 05/2013<br />
30<br />
richten empfängt. SAX ist der XML-Parser<br />
in Libre Office. Für jedes XML-Element,<br />
sowohl öffnend als auch schließend, für<br />
jeden Cdata-Content und so weiter erzeugt<br />
er eine Nachricht. <strong>Die</strong> wird als<br />
Funktionsaufruf in dem benutzenden<br />
Code abgebildet [4]. Der Service »com.<br />
sun.star.comp.Draw.XMLOasisImporter«<br />
akzeptiert XML entsprechend der Open-<br />
Document-Graphics-XML-Spezifikation:<br />
OUString sXMLImportService U<br />
("com.sun.star.comp.Draw.XMLOasisImporter");<br />
Reference <br />
xInternalHandler(<br />
comphelper::ComponentContext(mxContext)U<br />
.createComponent(sXMLImportService),<br />
UNO_QUERY);<br />
Der »XImporter« richtet ein leeres Zieldokument<br />
ein, in das der »XDocument-<br />
Handler« das Ergebnis schreiben kann:<br />
Reference <br />
xImporter(xInternalHandler, U<br />
UNO_QUERY_THROW);<br />
xImporter‐>setTargetDocument(mxDoc);<br />
01 OUString SAL_CALL MSPUBImportFilter::detect(Sequence<br />
02 {<br />
& Descriptor)<br />
03 OUString sTypeName;<br />
Listing 3: »detect«<br />
04 sal_Int32 nLength = Descriptor.getLength();<br />
05 sal_Int32 location = nLength;<br />
06 const PropertyValue *pValue = Descriptor.<br />
getConstArray();<br />
07 Reference xInputStream;<br />
08 for (sal_Int32 i = 0 ; i >= xInputStream;<br />
01 if (!sTypeName.isEmpty())<br />
02 {<br />
03 if (location == Descriptor.getLength())<br />
04 {<br />
05 Descriptor.realloc(nLength+1);<br />
06 Descriptor[location].Name = "TypeName";<br />
07 }<br />
08 Descriptor[location].Value
1&1 DYNAMIC<br />
CLOUD SERVER<br />
1&1 Dynamic Cloud Server<br />
Ob als Web-, Datei-, Applikations- oder<br />
Business-Server. Nutzen Sie maximale<br />
Flexibilität mit voller Kostenkontrolle!<br />
■ Basiskonfiguration: 1 CPU, 1 GB RAM,<br />
100 GB Festplatte<br />
■ Unlimited Traffic mit 100 Mbit/s Bandbreite<br />
ohne Zusatzkosten und ohne Drosselung<br />
■ Mehr Sicherheit durch externe IP-Firewall<br />
(Cisco basiert)<br />
■ Freie Wahl aus CentOS, Debian, Ubuntu,<br />
openSUSE oder Windows (optional)<br />
■ Nur bei 1&1: Optional SUSE<br />
<strong>Linux</strong> Enterprise Server<br />
■ Nur bei 1&1: Server-Management<br />
und -Monitoring per Mobile App<br />
■ NEU! 1&1 Snapshot: Definieren<br />
Sie einfach einen Wiederherstellungszeitpunkt<br />
für Ihren Server.<br />
■ 24/7 Service und Support durch<br />
1&1 Server Expertenteam.<br />
AKTION NUR BIS 30.04.13<br />
0,– € *<br />
39, 99<br />
Aktionspreis<br />
für 3 Monate.*<br />
€/Monat*<br />
VOLLER ROOT-ZUGRIFF<br />
Komfort und Funktionsumfang eines Root<br />
Servers, mit dedizierten Ressourcen.<br />
HÖCHSTE FLEXIBILITÄT<br />
CPU, RAM und Festplattenspeicher<br />
unabhängig voneinander zubuchbar.<br />
Per Mausklick bis zu 99 virtuelle<br />
Maschinen zubuchbar – ohne Migration!<br />
VOLLE KOSTENKONTROLLE<br />
Absolute Kostentransparenz durch stundengenaue<br />
Abrechnung. Parallels ® Plesk Panel 11<br />
inklusive – ohne Domainbegrenzung.<br />
AUSFALLSICHER<br />
Redundant gespiegelte Speicher- und<br />
Recheneinheiten schützen Ihren Cloud-<br />
Server automatisch vor Ausfällen.<br />
0 26 02 / 96 91<br />
0800 / 100 668<br />
1und1.info<br />
* 1&1 Dynamic Cloud Server in den ersten 3 Monaten 0,– €/Monat, danach 39,99 €/Monat in der Basiskonfi guration. Performance Features für 0,01 €/Stunde und Einheit zubuchbar.<br />
Einrichtungsgebühr 39,– €. 12 Monate Mindestvertragslaufzeit. Preise inkl. MwSt.
Titelthema<br />
www.linux-magazin.de Encoding 05/2013<br />
32<br />
Der Weg zu Unicode am Beispiel von Datenbanken<br />
Zeichen des Wandels<br />
Moderne <strong>Linux</strong>-Distributionen benutzen in Zeiten der Globalisierung Unicode, meist in der Ausprägung UTF-8.<br />
Vor dieser Ära entstandene ISO-Textdateien lassen sich noch relativ einfach konvertieren. Eine ganze Datenbank<br />
ins Heute zu bringen, erfordert Fingerspitzengefühl. Jan Kleinert<br />
Auf einem UTF-8-System hingegen materialisiert<br />
sich etwas wie<br />
LANG=de_AT.utf8<br />
LC_CTYPE="de_AT@utf8"<br />
© Fotograf, 123RF.com<br />
01 #!/bin/sh<br />
02<br />
03 if [ ‐z $1 ]<br />
04 then<br />
05 startdir=$HOME<br />
06 else<br />
07 startdir=$1<br />
08 fi<br />
Listing 1: Ascii-Dateien suchen<br />
09<br />
10 find . ‐exec file {} ; | grep 'ISO‐8859 text$' | sed<br />
's/: ISO‐8859 text$//' > kandidaten<br />
Ob die große Verbreitung von Unicode<br />
auf <strong>Linux</strong>- und anderen Systemen Fluch<br />
oder Segen ist, darf dahingestellt bleiben<br />
– die Realität ist nun mal wie sie<br />
ist. Für den Admin heißt es, seine Daten<br />
den Gegebenheiten anzupassen. Glück<br />
hat, wer das Stück für Stück tun kann.<br />
Für alle anderen bedeutet eine Migration<br />
Stress, wenn sie beim Umzug von einem<br />
alten Produktivsystem auf ein neues unvermittelt<br />
feststellen, dass beispielsweise<br />
Umlaute kaputt sind.<br />
Datei-Inhalte konvertieren<br />
Das Problem: Beim Weiterarbeiten<br />
schreibt das neue System frisch erzeugte<br />
und geänderte Daten mit UTF-8. Nach<br />
kurzer Zeit sammelt sich so ein Mischmasch<br />
aus Latin und Unicode an, welchen<br />
automatisch zu reparieren unmöglich erscheint.<br />
Wer in eine solche Zwickmühle<br />
gerät, sollte erwägen, schnell auf das<br />
alte System zurückzukehren und einen<br />
Versuch erst wieder zu wagen, wenn er<br />
einen Migrationsplan ausgearbeitet hat.<br />
Zur Einstimmung ein paar Fingerübungen:<br />
Relevant für die Zeichenkodierung<br />
in <strong>Linux</strong> ist die Variable »LC_CTYPE«.,<br />
fuer ISO-8859-15-Systeme etwa:<br />
LANG=de_AT@euro<br />
LC_CTYPE="de_AT@euro"<br />
Der erste Teil des Wertes »de« gibt die<br />
Sprache an und verwendet Codes, die<br />
der ISO-639-1-Standard festlegt [1]. Der<br />
folgende Abschnitt gibt nach ISO-3166-1<br />
das Land an, im Beispiel »AT« für Österreich<br />
[2].<br />
Der dritte Teil definiert die Zeichenkodierung,<br />
hier »@euro« für die europäische<br />
Erweiterung von ISO-8859-15 oder »@<br />
utf8« für die häufigste Kodierung von<br />
Unicode ([3],[4]). <strong>Die</strong> Kodierung nach<br />
UTF-8 sorgt dafür, ein Unicode-Zeichen<br />
in einer Folge von 1 bis zu 4 Bytes abzubilden<br />
(Abbildung 1). Andere Kodierungen<br />
bilden die Zeichen aus Unicode in<br />
einer anderen Weise ab, beispielsweise<br />
UTF-16 immer in Paaren von 2 Bytes.<br />
Um die Korrektheit der Dateinamen kümmern<br />
sich aktuelle <strong>Linux</strong>-Distributionen<br />
normalerweise selbst. Wer beispielsweise<br />
von einem externen Datenträger oder<br />
übers Netz Dateien, die aus einem Latin8-basierten<br />
Betriebssystem stammen,<br />
ins neue System kopiert, braucht nichts<br />
weiter tun. Bei den Datei-Inhalten trifft<br />
das jedoch nicht zu.<br />
Mit dem »file«-Kommando kann sich jeder<br />
Anwender eine Liste von Kandidaten<br />
zusammenstellen (siehe Listing 1), die er<br />
umzuwandeln hat. Es empfiehlt sich, mit<br />
einem Texteditor zu überprüfen, ob alle<br />
vorgeschlagenen Kandidaten zu Recht<br />
auf der Liste stehen. Auch hier bietet<br />
sich zur Sicherheit ein Backup an. <strong>Die</strong><br />
Kommandos »iconv« und »recode« können<br />
Dateien zwischen vielen gängigen<br />
Kodierungen hin und her konvertieren.<br />
Eine Liste der verfügbaren Kodierungen
zeigen »iconv ‐l« und »recode ‐l« an.<br />
Im folgenden Beispiel, das auf die mit<br />
Listing 1 erkundeten Daten zurückgreift,<br />
bezeichnet »latin9« die ISO-Kodierung<br />
inklusive Euro-Zeichen, »utf8« ist die<br />
Schreibweise für die Zielkodierung:<br />
xargs ‐l1 recode latin9..utf8 < kandidaten<br />
Wer mutig ist, lässt durch diesen Aufruf<br />
alle Kandidaten zugleich umwandeln.<br />
Datenbank-Applikation<br />
umschreiben<br />
<strong>Die</strong> Inhalte der vermutlich meisten im<br />
deutschsprachigen Raum betriebenen Datenbanken<br />
liegen in ISO 8859-15 kodiert<br />
vor. Ob man eigene auf Unicode umstellt,<br />
hängt ganz sicher von der Middleware<br />
und/oder der Applikation ab, welche auf<br />
die Datenbank zugreifen. Neue Datengräber,<br />
so viel lässt sich pauschal empfehlen,<br />
sollte man im Sinne der Zukunftssicherheit<br />
gleich unicodiert anlegen.<br />
Den größten Teil des Umstellungsprojektes<br />
nimmt sicher die Applikation ein. Der<br />
Programmierer muss einkalkulieren, dass<br />
er die Quellen Zeile für Zeile durchgeht,<br />
um nach unmittelbaren und mittelbaren<br />
Datenbankoperationen Ausschau zu halten.<br />
<strong>Die</strong> hat er zu untersuchen und gegebenenfalls<br />
zu ändern, wenn Variablengrößen<br />
für Unicode nicht mehr ausreichen,<br />
API-Funktionen ungeeignete Parameter<br />
oder Rückgabewerte aufweisen,<br />
Checks auf Werte oder Vergleichsopera<br />
tionen auf zu kleine Ranges lauten oder<br />
zu simpel arbeiten und so weiter.<br />
Gerne übersehen werden nach dem Alphabet<br />
sortierte Listen: Hier ist nicht nur<br />
der viel größere Umfang zu erwartender<br />
Buchstaben zu beachten, sondern die Sortierreihenfolge<br />
selbst, beispielsweise an<br />
welcher Stelle Umlaute und Buchstaben<br />
mit Akzenten auftauchen sollen.<br />
Aus der Komplexität ergibt sich fast zwingend<br />
die Notwendigkeit, die Applikation<br />
im stillen Programmierstübchen abseits<br />
des Produktivbetriebs umzubauen. Dazu<br />
legt sich der Entwickler eine Testdatenbank<br />
gleicher Struktur wie die produktive<br />
an, achtet dabei aber darauf, dass sie von<br />
Anfang an mit Unicode arbeitet. Dann<br />
klont er den Entwicklungszweig für die<br />
vorhandene DB-Applikation, biegt sie auf<br />
die Testdatenbank um und schreibt sie<br />
Stück für Stück auf Unicode um. Erst,<br />
wenn das geschafft ist, gehts ans Konvertieren<br />
der Produktivdatenbank und<br />
Freischalten der neuen Applikation.<br />
Nicht automatisch:<br />
MySQL und Unicode<br />
Seit Version 5.0 kennt MySQL zwei Arten<br />
Unicode: »ucs2« (UCS-2) und »utf8«<br />
(UTF-8), wobei letztere die verbreitetere<br />
Kodierung ist. Ohne weitere Angaben<br />
starten die meisten MySQL-Installationen<br />
aber mit Latin1, also ISO 8859-1. Einen<br />
JETZT<br />
ANMELDEN:<br />
www.heinlein-akademie.de<br />
AHA-EFFEKT<br />
GESUCHT?<br />
Schulungen für <strong>Linux</strong>-Admins,<br />
die durchblicken wollen.<br />
Fachlich und didaktisch kompetente<br />
Dozenten, spannende Schulungsthemen,<br />
eine lockere Atmosphäre im Kurs und<br />
angenehme Unterrichtsräume – all das<br />
erwartet Sie bei uns in Berlin an der<br />
Heinlein Akademie.<br />
<strong>Die</strong> nächsten Kurse:<br />
ab 22.04.<br />
Apache 2 Webserver<br />
ab 22.04.<br />
Dovecot IMAP-Server<br />
ab 22.04.<br />
<strong>Linux</strong> Cluster mit pacemaker und LVS<br />
ab 13.05.<br />
Netzwerkrouting für Profis<br />
ab 13.05.<br />
Hochperformante Webcluster<br />
ab 27.05.<br />
<strong>Linux</strong> Admin Fortgeschrittene<br />
ab 27.05.<br />
Nagios / Icinga Networkmonitoring<br />
Encoding 05/2013<br />
Titelthema<br />
www.linux-magazin.de<br />
33<br />
Abbildung 1: Durch die Kodierungsregeln von UTF-8 sind bestimmte Bytes nicht zulässig. <strong>Die</strong> Tabelle fasst die<br />
256 Möglichkeiten zusammen. Bytes in roten Zeilen sind unzulässig, grün beschreibt zulässige Bytes, welche<br />
unmittelbar ein Zeichen darstellen. In blau sind jene Werte hinterlegt, die eine Sequenz von 2 oder mehr Byte<br />
starten und sich als Sequenz mit den Bytes aus orange hinterlegten Zeilen fortsetzen. (Quelle: Wikipedia)<br />
<strong>Linux</strong> höchstpersönlich.
Titelthema<br />
www.linux-magazin.de Encoding 05/2013<br />
34<br />
Überblick über die eigenen Gegebenheiten<br />
verschafft das Statement »SHOW<br />
CHARACTER SET«.<br />
Der Admin darf dem Daemon schon<br />
beim Start ein neues Standard-Encoding<br />
mitgeben: »mysqld ‐‐default‐character‐set=utf8«.<br />
Mit der Option »‐‐default‐collation=utf8_general_ci«<br />
kann<br />
er zugleich die Sortierung bestimmen.<br />
<strong>Die</strong> vorhandene Kollation zeigt »SHOW<br />
COLLATION LIKE 'Suchbegriff'«. <strong>Die</strong> nun<br />
angezeigte Liste sagt aber nur bedingt etwas<br />
über die konkret zu erwartende Sortierung<br />
von Umlauten und so weiter aus.<br />
<strong>Die</strong> macht man sich besser am lebenden<br />
Objekt mit ein paar Beispieldatensätzen<br />
und Abfragen der Art: »SELECT * FROM<br />
Tabelle ORDER BY Feldname« klar. Hier<br />
geht es etwa darum, ob sich „Ü“ bei „U“<br />
oder „UE“ oder „Ue“ oder noch an anderer<br />
Stelle einsortiert.<br />
Weiterhin und abweichend von der Datenbank-Engine<br />
lässt sich eine einzelne<br />
Datenbank beim Anlegen spezifizieren:<br />
»CREATE DATABASE DB‐Name CHA-<br />
RACTER SET Zeichensatz COLLATE Kollationsname«.<br />
Analog geht das sogar auf<br />
Tabellenebene: »CREATE TABLE Tabelle<br />
(Spaltenliste) DEFAULT CHARACTER SET<br />
Zeichensatz [...]« und auf Spaltenebene:<br />
»Spaltenname VARCHAR (Spaltenlänge)<br />
CHARACTER SET Zeichensatz [...]«.<br />
Datenbank konvertieren<br />
Gängige Datenbanken lassen sich nicht<br />
einfach per Statement als Ganzes oder<br />
tabellenweise umkodieren. Das Fehlen<br />
einer solchen Funktion ergibt sich vermutlich<br />
aus dem relationalen Datenbankmodell<br />
mit seinen Entitäten. Ein Konvertierungslauf<br />
würde unter Umständen<br />
die gespeicherten Schlüsselinformationen<br />
korrumpieren, von erweiterten Datenbankfunktionen<br />
ganz zu schweigen.<br />
Alles muss raus<br />
<strong>Die</strong> meisten funktionierenden Anleitungen<br />
im Netz [5] entscheiden sich für<br />
einen Umweg, der bei genauerer Betrachtung<br />
ganz pfiffig ist: Sie schreiben zuerst<br />
einen Dump der Datenbank heraus, konvertieren<br />
diese Datei, wenn nötig, und<br />
lesen den Dump als neue Datenbank wieder<br />
ein. Logischerweise ergibt sich daraus<br />
eine Nebenbedingung – man braucht<br />
temporär reichlich freien Speicher.<br />
Datenbankdumps sind Klartextdateien<br />
– wenn nicht anders gewünscht –, die<br />
eigentlich fürs Backup oder das Umwandeln<br />
von Testdatenbanken in produktive<br />
gedacht sind. Dumps enthalten die Daten<br />
einer Datenbank und bilden zugleich deren<br />
Struktur ab [6]. Bei MySQL schreibt<br />
Mysqldump solche Dateien, im konkreten<br />
Fall auf folgende Weise:<br />
mysqldump ‐‐opt ‐Q ‐u DB‐User ‐p PasswortU<br />
‐h localhost DB‐Name | sed s'/DEFAULTU<br />
CHARSET=.*;/DEFAULT CHARSET=utf8 COLLATE=U<br />
utf8_unicode_ci;/g' > mysql_dump.sql<br />
DB-User, Passwort und DB-Name sind<br />
Platzhalter, die der Admin gegen seine<br />
eigenen Angaben austauscht. <strong>Die</strong> Befehlszeile<br />
ändert zugleich alle Definitionen<br />
von Latin1 auf UTF-8. Anschließend<br />
schaut man sich den Typ der entstandenen<br />
Datei an:<br />
file ‐i mysql_dump.sql<br />
Falls es nicht »utf‐8 text«, sondern das<br />
wahrscheinlichere »ISO‐8859 text« ist,<br />
konvertiert man einfach die Datei manuell,<br />
beispielsweise über:<br />
iconv ‐f Zeichensatz ‐t utf8 mysql_dump.sqlU<br />
> mysql_dump.utf8.sql<br />
<strong>Die</strong> »Zeichensatz«-Angabe ist dann vom<br />
Admin anhand der ihm vorliegenden Datei<br />
zu konkretisieren.<br />
Zurück in die Zukunft<br />
Dann bestückt der Admin die künftige<br />
Produktivdatenbank und benutzt dabei<br />
die Option »default‐character‐set=utf8«:<br />
mysql ‐u DB‐User ‐p Passwort ‐h localhostU<br />
‐‐default‐character‐set=utf8 DB‐NameU<br />
< mysql_dump.utf8.sql<br />
Nun sollte die neue Datenbank durchgängig<br />
in UTF-8 kodiert sein, was sich mit<br />
gängigen Abfragetools prüfen lässt. PHP<br />
Myadmin müsste als Tabellen-Kollation<br />
»utf8_unicode_ci« melden. Ebenfalls in<br />
PHP Myadmin sollte der Admin unter<br />
»Operationen« noch die Standard-Kollation<br />
auf »utf8_unicode_ci« stellen.<br />
Ganz ähnlich wie in MySQL läuft die<br />
Sache für Oracle-Datenbanken, nur dass<br />
die Engine beim Einlesen selbst die<br />
Konvertierung vornimmt (siehe Kasten<br />
„Oracle-Datenbank konvertieren“). n<br />
Oracle-Datenbank konvertieren<br />
Ähnlich wie bei MySQL läuft auch das Konvertieren<br />
einer Oracle-Datenbank. Das erste<br />
Ziel ist, ein so genanntes logisches Backup<br />
anzufertigen. Ab Oracle 11g passiert das mit<br />
dem Tool Data Pump ([7], Kommando »expdp<br />
Benutzer/Passwort Kommando‐Optionen«).<br />
Bei älteren Versionen kommt das Kommando<br />
»exp« zu Ehren, das eine ähnliche Syntax aufweist<br />
– insbesondere, wenn man Data Pump<br />
im Legacy-Modus gewöhnt ist. Kommandos<br />
lassen sich sehr, sehr umfangreich ausgestalten,<br />
beispielsweise um nur bestimmte Teile der<br />
Datenbank zu exportieren.<br />
Ist das geschafft, legt der Admin eine neue<br />
Datenbank mit UTF-8 an. Beim Zurückspielen<br />
des erzeugten Backups mit »impdp« beziehungsweise<br />
»imp« in die neue Datenbank konvertiert<br />
die Datenbank-Engine selbstständig<br />
die enthaltenen Zeichen. Wichtig ist, dass die<br />
Variable »NSL_LANG« beim Backup und beim<br />
Restore auf dem zum Inhalt passenden Wert<br />
steht – beim vorliegenden Vorhaben ist das<br />
regelmäßig der gleiche! Das Statement<br />
SELECT VALUE FROM NLS_DATABASE_PARAMETERSU<br />
WHERE PARAMETER='NLS_CHARACTERSET';<br />
ermittelt jedoch zu Beginn erstmal, in welchem<br />
Zeichensatz Oracle meint die Datenbank gespeichert<br />
zu haben.<br />
Was bei der Migration zu welchem Zeitpunkt<br />
zu sichern und zurückzuspielen ist, hängt von<br />
der Struktur der Datenbank und der Erwartung<br />
der zugehörigen Applikation beziehungsweise<br />
Middleware ab.<br />
Infos<br />
[1] Abkürzungen für Sprachen nach ISO 639:<br />
[http:// de. wikipedia. org/ wiki/ ISO_639]<br />
[2] Abkürzungen für Länder nach ISO 3166:<br />
[http:// de. wikipedia. org/ wiki/ ISO_3166]<br />
[3] Bruno Haible, Oliver Frommel, „In fremden<br />
Zungen“: <strong>Linux</strong>-<strong>Magazin</strong> 10/04, S. 118<br />
[4] Kester Habermann, Nils Magnus, „Abschrift“:<br />
<strong>Linux</strong>-<strong>Magazin</strong> 01/08, S. 76<br />
[5] „MySQL Datenbank in UTF-8 konvertieren“:<br />
[http:// ppfeufer. de/ mysql‐datenbank‐in‐utf<br />
‐8‐konvertieren/]<br />
[6] Thomas Wölfer, „MySQL-Datenbanken sichern<br />
– Teil 1“: <strong>Linux</strong>-<strong>Magazin</strong> 05/04, S. 60<br />
[7] Data Pump Export: [http:// docs. oracle.<br />
com/ cd/ E11882_01/ server. 112/ e10701/ dp_export.<br />
htm# SUTIL200]
Deployment<br />
ohne Rennerei<br />
Verteilen und verwalten Sie Clientsysteme effizient.<br />
Stellen Sie heterogene Infrastrukturen bereit und<br />
ermöglichen Sie flexibles Arbeiten. Unsere ToolBox<br />
Deployment bietet Ihnen Anleitungen und Werkzeuge<br />
– Prepare, Deploy, Control.<br />
Alle Ressourcen und Tools für Ihr erfolgreiches Deployment<br />
mit Windows 8, Internet Explorer 10 und Office 2013<br />
stehen Ihnen online zur Verfügung (inklusive .ISO-Image):<br />
www.technet.de/toolbox<br />
© 2013 Microsoft Corporation. Alle Rechte vorbehalten.
Titelthema<br />
www.linux-magazin.de Streaming-Migration 05/2013<br />
36<br />
Von Flash zu HTML 5<br />
Stream aufwärts<br />
Weiter stromaufwärts wartet HTML 5, um Flash abzulösen – so liest man immer wieder. Zumindest im Videostreaming-Bereich<br />
sind bei der Migration aber noch einige Stromschnellen zu überwinden. David Farine, Kristian Kißling<br />
© Yun Wang, 123rf.com<br />
Dass Flash als Auslaufmodell gilt, davon<br />
haben auch die Kunden der Videostreaming-<strong>Die</strong>nstleister<br />
gehört und fordern<br />
seit einer Weile explizit HTML-5-Support.<br />
Doch egal, ob es um Video-on-Demand<br />
oder Livestreaming geht: Vor dem Durchbruch<br />
von HTML 5 stehen noch technische<br />
und rechtliche Barrieren.<br />
Flash: Der Favorit<br />
<strong>Die</strong> bisherige Situation ist ja ohne Frage<br />
absurd: Flash gehört einem einzelnen Unternehmen<br />
und ist seit Jahren die einzige<br />
relevante Technologie, wenn es darum<br />
geht, Multimedia-Inhalte im Internet zu<br />
01 <br />
02 <br />
03 <br />
04 Your browser does not support the video tag.<br />
05 <br />
Listing 1: Das »video«-Tag von<br />
HTML 5<br />
streamen und plattformübergreifend zu<br />
präsentieren – Silverlight und Java sind<br />
längst nicht so erfolgreich.<br />
Adobe verdient dabei nicht nur an den<br />
Flash-Entwicklern, sondern kassiert<br />
auch für den Einsatz des hauseigenen<br />
Flash Media Servers. Der bekommt aber<br />
nach und nach Konkurrenz von anderen<br />
Anbietern, zu denen auch Open-Source-<br />
Lösungen wie Red Five gehören. Für Anwender<br />
ist Flash zwar kostenlos, einen<br />
Preis zahlen sie dennoch: Dank zahlreicher<br />
Sicherheitslücken gefährdet die Software<br />
seit Jahren ihre Rechner.<br />
Da Flash auf den Clients als Plugin für<br />
Browser existiert, müssen die Plattformen<br />
nicht nur dessen Vorhandensein<br />
sicherstellen, sondern auch – schon aus<br />
Sicherheitsgründen – einen separaten<br />
Update-Mechanismus anbieten. Einige<br />
Seiten zeigen ihre Inhalte gar nicht erst<br />
an, wenn der Nutzer nicht die neueste<br />
Flash-Variante verwendet. Unter <strong>Linux</strong><br />
fällt auf, dass Flash die CPU(s) stark be-<br />
lastet, was in der Vergangenheit nicht<br />
selten zum Einfrieren des Browsers oder<br />
gar des kompletten Betriebssystems<br />
führte. Zu den technischen Beschwerden<br />
kommt, dass sich Flash-Inhalte nur sehr<br />
statisch in das Browserfenster integrieren<br />
und wenig zugänglich sind.<br />
HTML 5: Der Herausforderer<br />
Einige der unter dem Stichwort HTML<br />
5 versammelten Technologien sollen<br />
nicht nur die erwähnten Probleme mit<br />
Flash beheben. Doch beim Standardisieren<br />
reden viele Big Player mit, was die<br />
Konsensfindung nicht vereinfacht, weil<br />
juristische Fragen die technischen oft<br />
überlagern: Auch deshalb ist HTML 5 –<br />
zumindest im Videobereich – ein Moving<br />
Target. Das »video«-Tag ermöglicht es immerhin,<br />
Filme und Streams einfach in<br />
eine Webseite einzubinden (Abbildung<br />
1). Dabei entscheidet der Browser selbst,<br />
welches der angebotenen Formate er abspielt<br />
(Listing 1).<br />
Falsche und echte Streams<br />
Man unterscheidet grob zwei Übertragungsarten:<br />
Livestreaming und Videoon-Demand<br />
[1]. Ersteres findet (fast) in<br />
Echtzeit statt. Klassischerweise verwandelt<br />
ein Transcoder ein Kamerabild in<br />
ein und manchmal mehrere streambare<br />
Videosignale. Listing 2 zeigt, wie man<br />
mit Ffmpeg im Two-Pass-Verfahren ein<br />
plattformübergreifendes Mpeg-4-Video<br />
erstellt. Dabei ist es wichtig, Ffmpeg mit<br />
Support für die nötigen Codecs zu installieren<br />
oder die Software selbst entsprechend<br />
zu kompilieren. Das Video wird<br />
an einen Streamingserver geschickt, von<br />
dem es die Clients dann abholen. Es gibt<br />
Livestreaming-Szenarios, in denen das
Ausgangsmaterial bereits vollständig<br />
vorliegt, meist handelt<br />
es sich aber um ein leicht verzögertes<br />
Livesignal.<br />
Klinken sich sehr viele Nutzer<br />
in einen Livestream ein, ergibt<br />
der Einsatz des Origin-Edge-<br />
Verfahrens Sinn: Dabei ordnet<br />
der Administrator mehrere<br />
Strea ming server in einer Pyramiden-Struktur<br />
an (Abbildung<br />
2), in der der Origin-Server den<br />
Ausgangspunkt bildet. Er gibt<br />
das Signal an die Edge-Server<br />
weiter, um möglichst vielen<br />
Teilnehmern den Zugriff auf den<br />
Stream zu erlauben.<br />
Ein Load Balancer verteilt die<br />
Clients nach dem Round-Robin-Prinzip<br />
auf die Edge-Server, während der (oder<br />
die) Origin-Server unsichtbar im Hintergrund<br />
werkeln und ihr Videosignal wiederum<br />
von einem Transkoder beziehen.<br />
VoD und Pseudostreaming<br />
Abbildung 1: Das »video«-Tag von HTML 5 soll Flash als De-facto-Standard<br />
für Videostreaming ablösen und ist bereits im Einsatz.<br />
Neben dem Livestreaming gibt es noch<br />
progressive Downloads und Pseudostreaming,<br />
die oft gemeinsam unter dem Begriff<br />
Video-on-Demand (VoD) laufen. Der<br />
Anbieter verbreitet dabei fertige Videos<br />
über das HTTP-Protokoll, was vor allem<br />
für die Filmindustrie interessant ist. Zwar<br />
spielen die (oft Web-basierten) Clients die<br />
Videos bereits kurz nach dem Start ab,<br />
ohne sie herunterzuladen, doch handelt<br />
es sich nicht um Livestreams.<br />
Um für dieses Verfahren in Frage zu<br />
kommen, modifiziert der Anbieter vielmehr<br />
seine Videodateien so, dass sich<br />
der Header am Anfang und nicht wie<br />
üblich am Ende der Datei befindet. Der<br />
Vorteil dieser Transformation: Hier muss<br />
kein kostspieliger Flash-Streamingserver<br />
zum Einsatz kommen, weil der Player<br />
den Header schnell identifiziert und mit<br />
dem Abspielen der Datei beginnt, sobald<br />
genügend Bilddaten vorliegen.<br />
Ein Problem progressiver Downloads besteht<br />
darin, dass der Zuschauer nicht ohne<br />
Weiteres zu einem späteren Zeitpunkt im<br />
Film springen kann, hierfür kommt dann<br />
HTTP-Pseudostreaming zum Einsatz. Dabei<br />
bittet ein Client den HTTP-Server, ein<br />
Video ab einem bestimmten Zeitpunkt<br />
abzuspielen. Der Server generiert dann<br />
den Header des Videos neu, ändert dabei<br />
aber die Startposition und spielt den<br />
Film von der Stelle mit dem nächstbesten<br />
Keyframe ab.<br />
Streamingserver<br />
Wer im Internet professionelle Streaming-<br />
Technologie verwendet, setzt meist<br />
zwangsläufig auf Flash – und konfiguriert<br />
seine Server nicht unbedingt selbst. Content<br />
Delivery Networks (CDN) wie<br />
Akamai, Limelight, Edgecast oder Level 3<br />
stellen die komplette Streaming-Infrastruktur<br />
(Video-on-Demand und Livestrea<br />
ming) sowie die geforderte Bandbreite<br />
bereit und erhalten dann die Inhalte<br />
von den Kunden.<br />
Beim Einsatz dieser schlüsselfertigen Server<br />
fallen zwar Kosten an, doch die liegen<br />
meist unter denen, die sich aus dem<br />
hohen Traffic summieren. Wer es eine<br />
Nummer kleiner möchte, wählt entweder<br />
einen kleineren Streamingdienst oder installiert<br />
selbst einen kommerziellen Streamingserver.<br />
Neben Adobes Flash Media<br />
Server gibt es weitere Anbieter, etwa<br />
Wowza, den Helix Universal Server oder<br />
die IIS Media Services von Microsoft.<br />
Listing 2: Two-Pass-Encoding mit Ffmpeg<br />
Wer sich beim Livestreaming<br />
die Lizenzen sparen will, muss<br />
selbst Hand anlegen. Es gibt einige<br />
Server unter Open-Source-<br />
Lizenzen, dazu gehören zum<br />
Beispiel Red Five [2], der unter<br />
der Apache-2.0-Lizenz steht,<br />
Flash-Inhalte streamt und gerade<br />
in Version 1.0 erschienen<br />
ist, sowie Flumotion [3], der<br />
aber nur in einer Basisvariante<br />
unter der GPL frei verfügbar<br />
ist. Auch der Streamingserver<br />
Darwin [4] steht für den nicht<br />
kommerziellen Betrieb unter der<br />
Apple Public Source License,<br />
bringt aber keinen Support für<br />
Flash-Streaming mit.<br />
<strong>Die</strong> Zuverlässigkeit und Handhabbarkeit<br />
der Open-Source-Lösungen ist jedoch<br />
eingeschränkt: So hat Red Five kürzlich<br />
den Origin-Edge-Support aus dem Kern<br />
des Servers entfernt und das Feature in<br />
ein Plugin verwandelt. Nun arbeiten Entwickler<br />
daran, die Funktion wieder zu<br />
reparieren. In der Regel ist der Konfigurationsaufwand<br />
höher, weil die großen<br />
Streaming-Anbieter keine freien Lösungen<br />
im Angebot haben und man beim<br />
Livestreaming die Origin-Edge-Struktur<br />
selbst konfigurieren muss. Doch könnten<br />
die freien Alternativen in Zukunft interessant<br />
werden.<br />
Livestreaming über RTMP<br />
Flash macht Livestreaming auf der Client-<br />
Seite recht einfach: Alle Plattformen – mit<br />
Ausnahme von I-OS 4, 5 und 6, Windows<br />
Phone 7 und 8 sowie Android 4.1 –<br />
bringen Support für Flash mit, auch wenn<br />
die Nutzer es mitunter selbst installieren<br />
müssen. Das Livestreaming setzt einen<br />
Streamingserver voraus, der das verwendete<br />
Mpeg-4-Format in Pakete zerlegt.<br />
Steckten in der alten Version von Flash<br />
01 ffmpeg ‐i eingabedatei ‐an ‐pass 1 ‐s 640x360 ‐aspect 16:9 ‐vcodec libx264 ‐vpre slow_firstpass<br />
‐flags2 +wpred ‐sc_threshold 40 ‐b_strategy 1 ‐g 250 ‐keyint_min 25 ‐me_method esa ‐me_range 18<br />
‐subq 1 ‐partitions all ‐flags2 +dct8x8 ‐bf 5 ‐directpred auto ‐trellis 1 ‐flags2 +wpred ‐b 500k ‐bt<br />
500k ‐qcomp 0.6 ‐threads 0 > /dev/null<br />
02<br />
03 ffmpeg ‐i eingabedatei ‐acodec libfaac ‐ar 44100 ‐ab 128k ‐async 2 ‐pass 2 ‐s 640x360 ‐vcodec libx264<br />
‐vpre slow_firstpass ‐flags2 +wpred ‐sc_threshold 40 ‐b_strategy 1 ‐g 250 ‐keyint_min 25 ‐refs 5<br />
‐me_method esa ‐me_range 18 ‐subq 5 ‐partitions all ‐flags2 +dct8x8 ‐bf 5 ‐directpred auto ‐trellis 1<br />
‐flags2 +wpred ‐b 500k ‐bt 500k ‐qcomp 0.6 ‐threads 2 output.mp4<br />
Streaming-Migration 05/2013<br />
Titelthema<br />
www.linux-magazin.de<br />
37
Titelthema<br />
www.linux-magazin.de Streaming-Migration 05/2013<br />
38<br />
Transcoder<br />
häufig noch der Sorenson-Spark-Codec<br />
und später VP6, die beide nur über eine<br />
konstante Bitrate verfügten, transportiert<br />
das Flash-Format heute meist Mpeg 4<br />
AVC (auch als Mpeg 4 part 10 bekannt)<br />
mit dem H.264-Codec, der eine variable<br />
Bitrate besitzt und Videos in hoher Qualität<br />
erlaubt.<br />
Für Livestreaming setzt Adobe vornehmlich<br />
auf das proprietäre RTMP (Real Time<br />
Messaging Protocol). Über Port 1953<br />
streamen die Server ein Videosignal im<br />
Mpeg-4-Format an alle Clients. RTMP ist<br />
TCP-basiert, die Spezifikation hat Adobe<br />
erst 2009 offengelegt, als ohnehin viele<br />
Details bekannt waren. RTMP lässt sich<br />
wahlweise mit TLS/SSL absichern (RT-<br />
MPS) oder via RTMPT in HTTP einbetten<br />
und über Port 80 tunneln, falls ein Unternehmen<br />
den Port 1953 sperrt.<br />
Nicht zuletzt bietet Adobe über RTMPE<br />
eine eigene Verschlüsselung an, die Digital<br />
Rights Management (DRM) erlauben<br />
soll (Abbildung 3). Sie gilt jedoch<br />
als unsicher, und Tools wie »rtmpdump«<br />
können das Protokoll mitschneiden und<br />
entschlüsseln. Daneben gibt es PRTMP<br />
(Protected RTMP), das Livesignale verschlüsselt,<br />
aber nur einen Origin-Server<br />
zulässt, was es für großflächiges Streaming<br />
ausschließt.<br />
Apples HLS<br />
Origin<br />
Edge Edge Edge<br />
Load Balancer<br />
Client Client Client<br />
Client Client Client<br />
I-OS bereitete den Livestreaming-Anbietern<br />
in der Vergangenheit schnell Probleme,<br />
da Apple bei Live streaming und<br />
Video-on-Demand auf das offene HTTP-<br />
Protokoll HLS (HTTP Live Streaming)<br />
setzte und dafür auch einen Entwurf beim<br />
Gateway<br />
Abbildung 2: Das Origin-Edge-Schema sorgt dafür, dass die Streamingserver<br />
möglichst viele Clients in guter Qualität bedienen.<br />
IETF einreichte [5].<br />
Zunächst verwendet<br />
Apple ebenfalls den<br />
H.264-Videocodec und<br />
AAC oder MP3 für das<br />
Audiosignal, den ein<br />
Software Stream Segmenter<br />
dann in 10-Sekunden-Teile<br />
zerlegt<br />
und in einen Mpeg-2-<br />
Client Transportstream (».ts«)<br />
verpackt. Ein Segment<br />
soll dabei mindestens<br />
einen Keyframe enthalten.<br />
Eine passende Playlist<br />
(auch Indexdatei<br />
genannt) im »m3u8«-Format erzeugt<br />
der Segmenter ebenfalls. Sie enthält<br />
Metadaten und URIs zu den Fragmenten.<br />
Es genügt nun, die Indexdatei samt<br />
Fragmenten über einen gewöhnlichen<br />
Webserver (etwa Apache) und HTTP an<br />
die Clients zu verteilen. Da der Segmenter<br />
die Playlist beim Live streaming dynamisch<br />
generiert, darf der Server höchstens<br />
ein Segment in den Cache schieben,<br />
da die Clients andernfalls auf eine veraltete<br />
Playlist stoßen.<br />
Dank AES-128-Support unterstützt HLS<br />
auch eine Art Digital Rights Management,<br />
wobei der Client den Schlüssel für einen<br />
Stream nach einer gewöhnlichen HTTPS-<br />
Authentifizierung erhält. Daneben gibt es<br />
Lösungen von Drittanbietern.<br />
Soll das Material auf dem iPhone und<br />
iPod Touch laufen, darf man nur H.264-<br />
Material bis zum Baseline Profile Level<br />
3.0 zu verwenden. Das iPad 1 und 2 setzen<br />
maximal auf den Main Profile Level<br />
3.1, das neue iPad beherrscht den High<br />
Profile Level 4.1 [6].<br />
Adobes HDS<br />
Ähnlich wie HLS klingt eine Technologie,<br />
die unter anderem in Adobes Flash<br />
Media Server zum Einsatz kommt: Für<br />
Video-on-Demand, aber auch für Livestreaming<br />
bietet Adobe unter dem Kürzel<br />
HDS (HTTP Dynamic Streaming) eine<br />
Methode an, die HTTP verwendet. Sie<br />
verschickt fragmentierte Mpeg-4-Dateien<br />
(F4F), wobei Adobe die Metadaten sowie<br />
Audio- und Videodaten eines Streams<br />
auseinanderdividiert. Das hat für sehr<br />
professionelle und umfangreiche Videoon-Demand-Lösungen<br />
Vorteile: Anstatt<br />
einen Film zehnmal zu speichern, um<br />
zehn Sprachfassungen abzudecken, genügt<br />
es, eine Video- und zehn Audiospuren<br />
zu archivieren.<br />
Adobes Flash Media Server bietet zudem<br />
die Möglichkeit, über PHDS (Protected<br />
HDS) die Inhalte mit DRM zu schützen:<br />
Dabei bettet der Server Lizenzen in die<br />
Metadaten des Streams ein, die der Flashplayer<br />
11 und Air 3 dann auslesen und<br />
umsetzen – ohne Flash funktioniert die<br />
Technik also nicht.<br />
Adaptive Bitrate Streaming<br />
Da die Qualität der Streams beim Videoon-Demand<br />
und beim Livestreaming<br />
aufgrund sich verändernder Bandbreite<br />
mitunter sehr stark variiert, bieten Apple<br />
und Adobe, aber auch Microsoft Möglichkeiten<br />
der Bandbreitenanpassung zwischen<br />
den Clients und Servern. Apples<br />
HTTP-Livestreaming (HLS) erlaubt es,<br />
eine der Indexdatei übergeordnete Master-Indexdatei<br />
zu erstellen. So lassen sich<br />
mehrere Streams gleichen Inhalts in unterschiedlichen<br />
Qualitätsstufen erzeugen,<br />
der Client wechselt bei eingeschränkter<br />
Bandbreite automatisch auf einen Stream<br />
minderer Qualität.<br />
Adobes HDS trägt das dynamische Streaming<br />
ja bereits im Namen und bearbeitet<br />
Material, das die Video- und Audiocodecs<br />
VP6 und MP3 sowie H.264 und<br />
AAC verwendet. Der Origin-Server, der<br />
ein normaler Apache-Server sein darf,<br />
liefert den Clients die Filmsegmente in<br />
der angefragten Qualität zurück. Im Gegensatz<br />
zu HLS muss der Client nicht<br />
ständig eine neue Manifest-Datei herunterladen,<br />
weil HDS Sequenznummern in<br />
den Segmentanfragen unterbringt, was<br />
auch den Einsatz kleinerer Segmente von<br />
2 bis 5 Sekunden erlaubt. Daneben bietet<br />
Adobe auch RTMP Dynamic Streaming<br />
an: Anders als bei HDS, wo der Encoder<br />
aus einem Ausgangssignal Streams<br />
unterschiedlicher Qualität erzeugt, muss<br />
der Streaming-Anbieter die Streams hier<br />
explizit selbst enkodieren.<br />
Bei Microsoft läuft es ähnlich, mit dem<br />
Unterschied, dass die als Smooth Streaming<br />
bezeichnete Technologie anfänglich<br />
nur mit Silverlight und Windows Phone<br />
7 funktionierte und der <strong>Die</strong>nst Teil der<br />
IIS Media Services Extension ist. Ab IIS
Media Services 4.0 beherrscht Microsoft<br />
auch Smooth Streaming für Apples I-OS,<br />
nicht aber für Flash-Clients.<br />
Mpeg-Dash<br />
Der HTML-5-Ansatz für das dynamische<br />
Streamen von Inhalten heißt Dynamic<br />
Adaptive Streaming over HTTP (auch<br />
Mpeg-Dash genannt) und funktioniert<br />
ähnlich wie Apples HLS. Im Gegensatz<br />
zu den anderen Lösungen ist es aber<br />
bereits seit April 2012 ein internationaler<br />
Standard (ISO/IEC 23009-1:2012) und<br />
wird von Adobe bereits offiziell unterstützt,<br />
allerdings noch nicht von Apple<br />
und Microsoft.<br />
<strong>Die</strong> Spezifikation schlägt als Containerformate<br />
Mpeg 4 und Mpeg-2-Transportstream<br />
vor, schert sich aber sonst nicht<br />
um den Audio- und Videocodec oder das<br />
darunterliegende Transportprotokoll. Zu<br />
den ersten Implementierungen gehören<br />
ein VLC-Plugin und eine Open-Source-<br />
Abbildung 3: Nicht nur der Flashplayer unterstützt Adobes DRM, auch der JW Player 6 spielt ein Video nur<br />
nach einer Passwortabfrage ab, wenn der Stream-Anbieter es so einrichtet.<br />
Bibliothek namens Libdash [7]. Browser<br />
sollen Mpeg-Dash künftig über die Media<br />
Source Extensions [8] unterstützen. In<br />
Chromium 25 lässt sich ein experimenteller<br />
Mpeg-Dash-Support über »chrome://<br />
flags« aktivieren, was aber noch nicht für<br />
den Einsatz im professionellen Livestreaming<br />
genügt.<br />
Resümierend lässt sich feststellen, dass<br />
Livestreaming über HTML 5 derzeit noch<br />
Streaming-Migration 05/2013<br />
Titelthema<br />
www.linux-magazin.de<br />
39<br />
IT-Onlinetrainings<br />
Mit Experten lernen.<br />
powered by<br />
MEDIALINX<br />
IT-ACADEMY<br />
Sparen Sie Zeit und Kosten mit unseren<br />
praxisorientierten Onlinetrainings.<br />
Bestimmen Sie Ihr eigenes Lerntempo<br />
und nutzen Sie die flexible Zeiteinteilung.<br />
Effiziente BASH-Skripte<br />
mit Klaus Knopper,<br />
KNOPPER.NET<br />
199 €<br />
Konzentriertes BASH-Wissen<br />
vom Gründer der Knoppix-Live-<br />
Distribution.<br />
Lösen Sie komplexe Aufgaben mit<br />
schnellen Ad-hoc-Lösungen auf der<br />
Kommandozeile. Automatisieren<br />
Sie Ihre System administration mit<br />
Hilfe von Skripten.<br />
www.medialinx-academy.de
Titelthema<br />
www.linux-magazin.de Streaming-Migration 05/2013<br />
40<br />
01 <br />
nicht funktioniert, weil Mpeg-Dash noch<br />
nicht so weit ist – wenigstens Video-on-<br />
Demand klappt. Apples HLS unterstützt<br />
bisher lediglich Safari und I-OS. Offiziell<br />
soll zwar auch Android HLS-Support<br />
mitbringen, doch in der Praxis ist selbst<br />
unter Android 4.1 keine Suche im Stream<br />
möglich, auch wenn das System wenigstens<br />
das Seitenverhältnis von Videos<br />
richtig erkennt.<br />
Bleibt noch RTSP: Das Realtime Streaming<br />
Protocol wird gern als Fallback-<br />
Lösung für Android-Clients empfohlen,<br />
wenn diese weder Flash noch HLS beherrschen.<br />
Der Praxistest mit diversen<br />
Android-Systemen zeigt allerdings, dass<br />
auch RTSP nicht zuverlässig funktioniert.<br />
Am besten lassen sich diese Streams noch<br />
über ein VLC-Plugin betrachten, aber das<br />
erfordert von den Nutzern wiederum die<br />
Installation einer Zusatzsoftware.<br />
<strong>Die</strong> große Migration<br />
Immerhin unterstützen bereits 80 Prozent<br />
aller Systeme das »video«-Tag von<br />
HTML 5 – eine Ausnahme bilden die<br />
IE-Versionen 6, 7 und 8 sowie einige exotische<br />
Browser. Doch das Video-Element<br />
birgt verschiedene Attribute, mit denen<br />
die Browser schon weniger gut klarkommen.<br />
Ein Test [9] von Longtail Video,<br />
dem Hersteller des JW Player, offenbarte<br />
im Januar 2013, wo es noch hakt. So<br />
fehlte dem Internet Explorer 9 und 10 sowie<br />
den Browsern von I-OS 4, 5 und 6 die<br />
Unterstützung für das »preload«-Attribut,<br />
und nur die wenigsten Browser brachten<br />
Support für »poster« mit.<br />
Das »video«-Element bringt von Hause<br />
aus zwar ein paar grundlegende Steuerfunktionen<br />
mit, doch häufig kontrollieren<br />
Javascript-basierte Player wie JW<br />
Player (Listing 3), Flowplayer, Video<br />
02 <br />
03 <br />
04 jwplayer('video').setup({<br />
05 autostart: true,<br />
06 sources: [<br />
07 { file: "http://stream10.streampark.tv/<br />
bbb720.mp4" },<br />
Listing 3: HTML-5-Stream mit Flash-Fallback<br />
08 { file: "http://stream.streampark.tv/<br />
streampark/bbb720/playlist.m3u8" },<br />
Abbildung 4: Google bietet ein Plugin an, über das sich der Internet Explorer mit Webm erweitern lässt.<br />
JS Player die Videos Server-seitig und<br />
greifen dafür auf das Javascript-API für<br />
das »video«-Tag zu. Insbesondere ältere<br />
Android-Versionen bieten für Buffering,<br />
Seeking, Loading und Playback nur sehr<br />
eingeschränkten Support an.<br />
Im Bereich Barrierefreiheit unterstützen<br />
laut Longtail Video nur 43 Prozent der<br />
Browser Features wie »text track« und das<br />
zugehörige Web-VTT-Format. Hier gibt<br />
es noch einiges nachzuholen. Doch fast<br />
noch wichtiger wäre es, zunächst einen<br />
gemeinsamen Codec zu finden.<br />
Einer für alle<br />
Sah die HTML-5-Spezifikation [10] anfangs<br />
vor, den freien Theora-Codec im<br />
Ogg-Container plattformübergreifend<br />
zu verwenden, verschwand diese Idee<br />
recht bald sang- und klanglos aus der<br />
Spezifikation. Der angeblich Grund war,<br />
dass Theora Patente verletzen könne,<br />
was große Firmen wie Apple, die sich an<br />
der Codec-Findung beteiligen, unruhig<br />
machte. <strong>Die</strong> unbewiesene Patentbehauptung<br />
stammte von der Mpeg Licensing<br />
09 { file: "rtmp://stream.streampark.tv/<br />
streampark/mp4:bbb720.mp4" },<br />
10 { file: "http://stream10.streampark.tv/td/<br />
bbb720.webm" }<br />
11 ],<br />
12 height: 360,<br />
13 width: 640,<br />
14 primary: "html5"<br />
15 });<br />
16 <br />
Administration (MPEG LA), einem Unternehmen,<br />
das offiziell Lizenzen für<br />
diverse Videocodecs vergibt. Zugleich<br />
hat es kein Problem damit, mit Mobile<br />
Medias Ideas ein Subunternehmen zu<br />
betreiben, das Beobachter als klassischen<br />
Patenttroll bezeichnen.<br />
Aktuell unterstützen Microsoft und Apple<br />
mit ihren Browsern Internet Explorer und<br />
Safari das Mpeg-4-AVC-Format mit dem<br />
H.264-Codec, den auch Adobe und Apple<br />
einsetzen. Der Codec ist weit verbreitet,<br />
aber patentbelastet. Hersteller und Nutzer<br />
müssen ihn bei der MPEG LA lizenzieren.<br />
Dennoch unterstützen ihn Safari und der<br />
IE bisher. Google hat angekündigt, ihn<br />
aus Chrome zu entfernen, das aber noch<br />
nicht getan. Selbst Mozilla denkt darüber<br />
nach, künftig H.264 zu unterstützen, falls<br />
ein Drittanbieter einen Decoder dafür verfügbar<br />
macht.<br />
<strong>Die</strong> bessere Lösung wäre sicher, wenn die<br />
Browserhersteller sich auf Webm einigen<br />
würden, dessen Containerformat dem<br />
von Matroska ähnelt. Mozilla, Opera und<br />
Chrome unterstützen Webm bereits, für<br />
den Internet Explorer 9 gibt es ein Plugin<br />
von Google (Abbildung 4).<br />
Den darin enthaltenen VP8-Codec hat<br />
Google von On2 gekauft und kürzlich<br />
von angeblichen Patentansprüchen der<br />
MPEG LA befreit [11], selbst gegen VP9<br />
kann die MPEG LA künftig keine Ansprüche<br />
geltend machen. Auch wenn<br />
Webm bisher längst nicht so verbreitet<br />
ist wie H.264, könnte die Lizenzfreiheit<br />
die Sachlage komplett ändern.<br />
Weite Teile der Open-Source-Community<br />
stehen hinter dem Codec, den Google<br />
unter einer BSD-Lizenz veröffentlicht
und an dessen Entwicklung sich unter<br />
anderem Vorbis- und Theora-Entwickler<br />
Christopher Montgomery beteiligt. Es<br />
kann aber ebenso passieren, dass sich die<br />
Parteien nicht auf einen Codec einigen<br />
und fortan mehrere nutzen.<br />
Wer also VoD mit HTML-5-Technologien<br />
umsetzt, sollte den Stream gleich in zwei<br />
Varianten anbieten: Im Mpeg-4-Format<br />
und als Webm-Container. Als Fallback-<br />
Lösungen kommen bevorzugt Flash und<br />
RTSP zum Einsatz, weil vor allem ältere<br />
Browser noch kein HTML-5-Video unterstützen.<br />
Auf der Webseite [http:// html5test. com]<br />
lässt sich prüfen, welche Videoformate<br />
der eigene Browser kennt. Das führt zu<br />
Überraschungen, wenn sich herausstellt,<br />
dass auch der Standardbrowser von Cyanogenmod<br />
10.1 (Abbildung 5) – das<br />
auf Android 4.2.1 basiert – weder Webm<br />
noch Ogg noch Mpeg 4 beherrscht. Erst<br />
die Installation von Firefox bringt Ogg,<br />
Webm und Mpeg 4 aufs Smartphone.<br />
Tatsächlich sind einige Codecs Teil des<br />
Browsers, andere stecken in Plugins von<br />
Drittanbietern und wieder andere im Multimedia-Framework<br />
des Betriebssystems,<br />
etwa im Falle von Gstreamer. In einer<br />
perfekten Welt würden die Codecs hingegen<br />
für alle Browser auf allen Systemen<br />
in einem Browser-Add-on oder ‐Plugin<br />
stecken, das der Browser gleich mitinstalliert.<br />
Das würde es auch ermöglichen,<br />
neue Codecs auch auf älteren Rechnern<br />
einfach nachzurüsten.<br />
<strong>Die</strong> Rechtefrage<br />
Digital Rights Management ist für die<br />
Entwickler freier Software ein rotes Tuch.<br />
Ihre Argumente sind schlüssig: Sobald<br />
ein Client Bild und Ton abspielt, lassen<br />
sich davon Kopien erstellen – sei es als<br />
Screencast oder mit einer herkömmlichen<br />
Kamera unter Nutzung des Kopfhörersignals.<br />
Schutzfunktionen lassen sich<br />
meist hacken: Tools wie das erwähnte<br />
»rtmpdump« entschlüsseln RTMPS- und<br />
RTMPE-Streams, auch die Verschlüsselungen<br />
für DVDs (CSS) und Bluray (BD+<br />
und AACS) sind längst ausgehebelt. Will<br />
ein findiger Hacker an die Inhalte kommen,<br />
wird ihm das auch gelingen. Trotzdem<br />
verlangen einige Kunden DRM, weshalb<br />
das Thema in der HTML-5-Debatte<br />
wieder hochkocht.<br />
Encrypted Media Extension<br />
Ende Februar 2013 haben Mitarbeiter von<br />
Microsoft, Netflix und Google einen Entwurf<br />
für eine Encrypted Media Extension<br />
auf den Weg gebracht [12], sie soll HTML<br />
5 und DRM zusammenbringen. Netflix<br />
dürfte ein typischer DRM-Befürworter<br />
sein: Kann das Unternehmen Hollywood<br />
gegenüber glaubhaft versichern, dass die<br />
Inhalte beim HTML-5-Streaming sicher<br />
sind (oder zumindest so erscheinen),<br />
dürfte die Filmindustrie einer Verbreitung<br />
ihrer Inhalte zustimmen. E<br />
Streaming-Migration 05/2013<br />
Titelthema<br />
www.linux-magazin.de<br />
41<br />
Digitales aBO<br />
linuxUser: Das Monatsmagazin für die Praxis<br />
DigisUB *<br />
nur 56,10 €<br />
im Jahr (12 PDFs)<br />
* Digitales Abo, jederzeit kündbar<br />
Jetzt Bestellen Unter:<br />
www.linux-user.de/digisub<br />
Telefon: 07131 /2707 274<br />
Fax: 07131 / 2707 78 601<br />
E-Mail: abo@linux-user.de
Titelthema<br />
www.linux-magazin.de Streaming-Migration 05/2013<br />
42<br />
Abbildung 5: Überraschung! Der Standardbrowser<br />
von Cyanogenmod 10.1 unterstützt offenbar keines<br />
der aktuellen Videoformate.<br />
<strong>Die</strong> Autoren des Entwurfs wollen DRM<br />
aber nicht in HTML 5 selbst implementieren,<br />
weil das schlicht mit den Zielen von<br />
HTML 5 nicht vereinbar ist. In einem Bugreport<br />
zum Thema [13] bringt David Singer<br />
die Problematik auf den Punkt: HTML<br />
sei ein Präsentationslayer, das DRM-Problem<br />
gehöre nicht dorthin. Ein Redakteur<br />
des Entwurfs – der Google-Mitarbeiter (!)<br />
Ian Hickson – lehnte den DRM-Vorstoß<br />
mit dem lapidaren Satz „DRM is evil“ ab,<br />
konkretisierte ihn jedoch später. Unter<br />
anderem führte er an, dass DRM mit einem<br />
offenen Standard nicht vereinbar sei<br />
und seine Implementierer in einigen Ländern<br />
rechtliche Konsequenzen befürchten<br />
müssten.<br />
<strong>Die</strong> Encrypted Media Extension schlägt<br />
daher vor, das API des »HTMLMediaElements«<br />
auszubauen und damit die Wiedergabe<br />
geschützter Inhalte zu steuern.<br />
Stößt das »video«-Element von HTML<br />
5 auf einen verschlüsselten Film, bittet<br />
es ein externes Content Decryption Module<br />
(CDM) darum, den Inhalt zu entschlüsseln.<br />
Das DRM-System soll dabei<br />
das komplette Spektrum von einfachen<br />
bis zu komplexen Schutzverfahren unterstützen.<br />
Das CDM, das den geheimen<br />
Schlüssel verwaltet, kann dabei Teil des<br />
Browsers sein oder als Bibliothek auf dem<br />
Betriebssystem lagern. Auf Samsungs<br />
ARM-Chromebook setzt Netflix das Verfahren<br />
bereits in die Praxis um und vertraut<br />
für den DRM-Teil offenbar auf eine<br />
mitgelieferte Bibliothek [14].<br />
Open vs. DRM<br />
An dieser Stelle ergibt sich allerdings ein<br />
fundamentales Problem für die freie Software:<br />
Ein vor dem Nutzer im Content Decryption<br />
Module verborgener Schlüssel<br />
widerspricht der Open-Source-Philosophie<br />
und verstößt zudem teilweise gegen<br />
die Lizenzbedingungen freier Software.<br />
Ein Lösungsvorschlag der Industrie besteht<br />
darin, das CDM in die Firmware<br />
einer externen Hardware einzubacken<br />
und dem Browser per API zugänglich<br />
zu machen. Offen ist die Frage, wie man<br />
trotz offenem Grafikstack dafür sorgen<br />
will, dass der Zuschauer die entschlüsselten<br />
Frames nicht abgreift.<br />
Aufgrund dieser offenen Fragen bleibt<br />
abzuwarten, ob der Vorschlag zum W3C-<br />
Standard werden kann. Ist das nicht der<br />
Fall, könnte die Industrie einmal mehr<br />
ein eigenes Süppchen kochen oder einfach<br />
Fakten schaffen. Möglicherweise<br />
weichen die Unternehmen aber auch auf<br />
andere Wege aus, um ihre Inhalte zu<br />
schützen, etwa auf digitale Wasserzeichen.<br />
Selbst einige Tricks mit Javascript<br />
führen bei vielen Nutzern schon zum erhofften<br />
Effekt, aber DRM im klassischen<br />
Sinn ist beim Streaming mit Bordmitteln<br />
nicht möglich.<br />
Fazit<br />
Wer zurzeit im Livestreaming-Bereich<br />
von Flash zu HTML 5 wechseln möchte,<br />
kommt ohne Fallback-Lösungen nicht<br />
weit, wobei auch RTSP nur unter bestimmten<br />
Konditionen funktioniert. Bei<br />
Video-on-Demand gibt es hingegen die<br />
Möglichkeit, Videostreams in zwei oder<br />
mehr Formaten anzubieten, die dann in<br />
allen aktuellen Browsern laufen. <strong>Die</strong> Betonung<br />
liegt auf aktuell: In Behörden,<br />
Unternehmen und Organisationen sind<br />
oft noch Windows XP oder ältere <strong>Linux</strong>-<br />
Versionen im Einsatz. Deren Uralt-Browser<br />
kennen das »video«-Element oft gar<br />
nicht, sondern nur Flash.<br />
Auf Mobilgeräten fehlt Flash vielfach,<br />
aber auch die HTML-5-Lage ist recht<br />
unklar. Insbesondere ältere Android-<br />
Systeme bereiten beim Livestreaming<br />
Probleme. <strong>Die</strong> Codec-Abdeckung bleibt<br />
Glückssache, weil die Hardwarehersteller<br />
mitunter selbstständig am Videosupport<br />
schrauben. Auf der anderen Seite gibt<br />
es fast täglich Neues zu den HTML-5-<br />
Features zu berichten, denn es passiert<br />
in diesem Bereich gerade sehr viel. Insofern<br />
bleibt die Hoffnung, dass Flash eines<br />
möglichst nahen Tages aus Altersschwäche<br />
friedlich entschlummert. n<br />
Infos<br />
[1] Streaming-Überblick in O’Reillys Web-<br />
TV-Buch: [http:// www. oreilly. de/ catalog/<br />
webtvavstrger/]<br />
[2] Quelloffener Streamingserver Red Five:<br />
[http://www.red5.org/]<br />
[3] Open-Source-Streaming mit Flumotion:<br />
[http://www.flumotion.net/]<br />
[4] Apples Streamingserver Darwin:<br />
[http://dss.macosforge.org/]<br />
[5] Apples Draft für HLS bei der IETF:<br />
[http:// tools. ietf. org/ html/ draft‐pantoshttp‐live‐streaming‐07]<br />
[6] Profile Level für Apples Mobilgeräte:<br />
[http:// developer. apple. com/ library/ ios/<br />
# technotes/ tn2224/ _index. html]<br />
[7] Wikipedia über Mpeg-Dash-Implementierungen:<br />
[http:// en. wikipedia. org/ wiki/<br />
Dynamic_Adaptive_Streaming_over_HTTP]<br />
[8] Spec der Media Source Extensions: [https:<br />
// dvcs. w3. org/ hg/ html‐media/ raw‐file/ tip/<br />
media‐source/ media‐source. html]<br />
[9] HTML-5-Test von Longtail Video:<br />
[http:// www. longtailvideo. com/ html5/]<br />
[10] »video«-Element in HTML 5: [http:// www.<br />
w3. org/ wiki/ HTML/ Elements/ video]<br />
[11] Google kauft Webm frei:<br />
[http:// www. linux‐magazin. de/ NEWS/<br />
Google‐erwirbt‐Lizenz‐fuer‐VP8‐Codec]<br />
[12] Entwurf für die Encrypted Media Extension:<br />
[https:// dvcs. w3. org/ hg/<br />
html‐media/ raw‐file/ tip/ encrypted‐media/<br />
encrypted‐media. html]<br />
[13] DRM-Bug-Report: [https:// www. w3. org/<br />
Bugs/ Public/ show_bug. cgi? id=10902]<br />
[14] Netflix nutzt DRM mit HTML 5:<br />
[http:// www. linux‐magazin. de/ NEWS/<br />
Netflix‐nutzt‐offenbar‐HTML‐5‐und‐DRM/]<br />
Der Autor<br />
David Farine ist der Gründer und technische Direktor<br />
von Streampark.tv. Er sammelt seit 2008<br />
für die Berliner Firma Erfahrungen im Streaming-<br />
Bereich.
JETZT NEU<br />
AM KIOSK!<br />
196 Seiten<br />
im Pocket-Format<br />
für nur 9,80 Euro<br />
QR-Code scannen und<br />
direkt online bestellen!<br />
www.apps-und-tipps.de
Titelthema<br />
www.linux-magazin.de VM-Livemigration 05/2013<br />
44<br />
Livemigration für virtuelle Maschinen<br />
Migrationshintergrund<br />
Ein großer Vorteil von Virtualisierungen ist die Möglichkeit, Systeme von einem Host auf einen anderen umzuziehen,<br />
ohne dass für den Anwender eine längere Downtime entsteht. Damit das reibungslos klappt, müssen<br />
sowohl der Hypervisor als auch der verwendete Storage mitspielen. Martin Loschwitz<br />
migriert der Admin alle VMs auf andere<br />
Server und kann dann mit dem Update-<br />
Kandidaten tun und lassen, was er will.<br />
Dass das allerdings zwischen verschiedenen<br />
Produkten, Architekturen oder CPU-<br />
Varianten leider immer noch nicht geht,<br />
zeigt der Kasten „Gelingt nicht ohne<br />
Downtime“.<br />
Der technische Hintergrund<br />
© Michael Edward, 123RF.com<br />
Effizient und flexibel sei die Cloud, erzählen<br />
Experten gebetsmühlenartig. Aber<br />
weder Virtualisierung noch die Abrechnung<br />
nach Ressourcennutzung sind neu,<br />
die Konzepte stammen aus der Urzeit der<br />
IT. Mittlerweile gelten die Cloudlösungen<br />
als Mainstream. Planer und Consultants<br />
gehen in IT-Unternehmen davon aus,<br />
dass die Admins eine neue Serverplattform<br />
nur mehr virtualisiert betreiben.<br />
Das spart Kosten für Hardware und den<br />
laufenden Betrieb und bringt quasi im<br />
Vorbeigehen zahlreiche weitere Vorteile.<br />
Einer davon ist das Live-Migrieren laufender<br />
Systeme. Was bei echter Hardware<br />
unmöglich wäre, gelingt mit virtualisierten<br />
Systemen ganz leicht. Eine auf einem<br />
Host laufende VM „einzufrieren“, sie auf<br />
einen der anderen Virtualisierungs-Gastgeber<br />
zu verschieben und dort fortzusetzen,<br />
ohne dass für die Nutzer des in<br />
der VM laufenden <strong>Die</strong>nstes ein spürbarer<br />
Aussetzer entsteht, das ist immer noch<br />
die hohe Schule der Virtualisierungskunst,<br />
und hier trennt sich Spreu von<br />
Weizen.<br />
Spiele ohne Grenzen<br />
In der Tat sind die Ergebnisse beeindruckend.<br />
Furore machte vor einigen Jahren<br />
ein archetypisches Demo-Setup, bei dem<br />
Spieler des 3-D-Egoshooters Quake 3 während<br />
des Spiels nichts davon mitbekamen,<br />
dass die VM mit ihrem Server gerade von<br />
einem auf den anderen Host umgezogen<br />
war. <strong>Die</strong> effektive Downtime beim Client<br />
lag bei wenigen Sekunden, sodass problemlos<br />
auch ein Schluckauf im Netzwerk<br />
die Ursache hätte sein können.<br />
Admins freuen sich freilich auch aus anderen<br />
Gründen über eine Livemigra tion,<br />
denn sie erlaubt es, ohne lange Downtime<br />
Wartungsarbeiten auf Virtualisierungshosts<br />
zu erledigen. Bevor die Arbeit<br />
auf einem Computing-Knoten losgeht,<br />
Mittlerweile existieren einige fertige Lösungen<br />
zur Livemigration, die das Feature<br />
ab Werk mitbringen und oft gar per<br />
GUI die Option bieten, Livemigration per<br />
Mausklick zu aktivieren. Der technische<br />
Hintergrund der meisten Lösungen ist der<br />
gleiche. <strong>Die</strong> im RAM abgelegten Inhalte<br />
einer virtuellen Maschine, die auf Host A<br />
läuft und im laufenden Betrieb auf einen<br />
anderen Host wandern soll, kopiert die<br />
verwendete Virtualisierungslösung auf<br />
den Zielhost und ruft dort bereits den<br />
Virtualisierungsprozess auf, während<br />
das System auf Host A noch weiterhin<br />
funktioniert.<br />
Erst wenn der RAM-Inhalt vollständig auf<br />
dem Zielhost angekommen ist, hält der<br />
Virtualisierer die VM am Quellhost kurz<br />
an, kopiert das inzwischen entstandene<br />
Delta ebenfalls zum Ziel und beendet<br />
schließlich den Emulator auf dem Quell-<br />
Host. <strong>Die</strong>se kurze Zeit ist im Idealfall die<br />
einzige Downtime, die entsteht.<br />
Damit das Prinzip so funktioniert, sind<br />
ein paar Bedingungen zu erfüllen. <strong>Die</strong><br />
wichtigsten Fragen betreffen den Storage .<br />
Denn damit die virtuelle Maschine<br />
gleichzeitig auf zwei Hosts laufen kann,<br />
ist eine Grundvoraussetzung, dass ihr<br />
Storage zum genannten Zeitpunkt auf<br />
beiden Rechnern lesend und schreibend<br />
zur Verfügung steht. Wie das in der Reali-
VM-Livemigration 05/2013<br />
Titelthema<br />
Abbildung 1: Ceph verwaltetet seine OSDs zentral, zieht zwischen Benutzern und<br />
Blockdevice aber noch eine Zwischenschicht ein und ist so sehr flexibel.<br />
tät funktioniert, hängt von der genutzten<br />
Storage-Technologie und der Architektur<br />
der Virtualisierungslösung ab.<br />
Für den Storage: NFS,<br />
I-SCSI, DRBD, Ceph<br />
SAN-Storages sind häufig Bestandteil<br />
von VM-Setups. Sie bieten ihre Daten<br />
meist entweder per NFS oder per I-SCSI<br />
an. Mit NFS gelingt der Zugriff auf die<br />
Daten von mehreren Seiten problemlos,<br />
denn schließlich ist genau das ein Use-<br />
Case für NFS. I-SCSI-SANs sind hakeliger<br />
und bedingen zusätzliche Funktionen im<br />
Hinblick auf die Software, die sich um<br />
die Verwaltung der virtuellen Maschinen<br />
kümmert. Der I-SCSI-Standard sieht den<br />
konkurrierenden Zugriff zweier Server<br />
auf dieselbe LUN nämlich gar nicht vor,<br />
sodass Hilfskonstruktionen mittels LVM<br />
oder Cluster-Dateisystemen wie OCFS2<br />
und GFS2 nötig werden.<br />
Angenehmer lässt sich ein VM-Setup<br />
mit Livemigration auf Grundlage eines<br />
DRBD-Clusters konstruieren. DRBD bietet<br />
grundsätzlich die Option, eine vorhandene<br />
Ressource<br />
im Dual‐Primary-<br />
Modus zu nutzen<br />
[2], in dem schreibender<br />
Zugriff auf<br />
beiden Seiten eines<br />
Clusters möglich<br />
ist. Zusammen<br />
mit einem modernen<br />
Clustermanager<br />
wie Pacemaker<br />
und Libvirt wird<br />
aus dem Gespann ein Setup mit echten,<br />
Enterprise-tauglichen Livemigrations-<br />
Fähigkeiten. Der Pferdefuß an dieser Lösung<br />
ist jedoch, dass sie – DRBD-bedingt<br />
– auf zwei Knoten beschränkt bleibt, zumindest<br />
so lange, wie DRBD 9 noch nicht<br />
reif für den Einsatz in einer Produktionsumgebung<br />
ist.<br />
Administratoren, die auf der Suche nach<br />
zuverlässiger Virtualisierung mit Live-<br />
Migration und Scale-out-Funktionalität<br />
sind, sollten für neue Setups Ceph ([3],<br />
[4]) mit in ihre Planungen einbeziehen.<br />
Denn deren Komponenten, die für ein<br />
solches Setup notwendig sind, gelten<br />
Abbildung 2: DRBD lässt sich mit der Dual‐Primary-Funktion nutzen, um virtuelle<br />
Maschinen in Zwei-Knoten-Clustern live zu migrieren.<br />
nach Meinung der Autoren der Umgebung<br />
mittlerweile als stabil und eignen<br />
sich für den Produktiveinsatz.<br />
Ein Object Store<br />
<strong>Die</strong> Lösung mit dem tierischen Namen<br />
(Ceph steht für Krake) gehört zur Kategorie<br />
der so genannten Object Storages,<br />
was insbesondere darin zum Ausdruck<br />
kommt, dass in Ceph abgelegte Dateien<br />
in binäre Objekte aufgeteilt und dann auf<br />
eine Vielzahl Speicherorte verteilt sind.<br />
Object Stores umgehen auf diese Weise<br />
ein Designproblem, das entsteht, würde<br />
www.linux-magazin.de<br />
45<br />
Gelingt nicht ohne Downtime: Den Hypervisor wechseln<br />
<strong>Die</strong> wichtigste Komponente bei einer Livemigration<br />
ist der Hypervisor. Mit dessen Wahl legt<br />
sich der Administrator allerdings fest, denn die<br />
Livemigration von einem zu einem anderen Hypervisor<br />
ist unter <strong>Linux</strong> derzeit unmöglich. Wer<br />
eine Virtualisierungsumgebung baut, sollte sich<br />
also vor Augen halten, dass homogene Setups<br />
grundsätzlich leichter zu warten sind als solche,<br />
in denen verschiedene Hypervisoren zum<br />
Einsatz kommen.<br />
Das Prinzip der Homogenität lässt sich in gleicher<br />
Weise übrigens auch auf das Thema Architektur<br />
anwenden. Bereits die Migration von<br />
einer VM, die auf einem 32-Bit-Host läuft, auf<br />
einen 64-Bit-Hypervisor ist eine Herausforderung.<br />
64-Bit-VMs können auf 32-Bit-CPUs gar<br />
nicht ordentlich laufen. Wer plant, Architekturen<br />
in Virtualisierungs-Setups zu kombinieren,<br />
muss sich also mit dem kleinsten gemeinsamen<br />
Nenner abfinden, nicht selten also mit 32-Bit-<br />
Systemen.<br />
Livemigration zu anderen Hypervisoren?<br />
Schließlich ist ein oft anzutreffendes Prozedere<br />
der Umstieg von einem Hypervisor auf einen<br />
anderen, kombiniert mit dem typischen Wunsch<br />
nach so wenig Downtime wie möglich. Wer solch<br />
eine Aufgabe zu erledigen hat, muss sich über<br />
die entsprechenden Fähigkeiten der künftigen<br />
Lösung informieren. KVM und Qemu bringen<br />
jede Menge Werkzeuge zum Konvertieren von<br />
Images mit, die sich auch ohne langes Studium<br />
der Manpages leicht bedienen lassen.<br />
Aber die Idee, eine Qemu-KVM-VM ohne Downtime<br />
auf einen Hypervisor-Host mit Windows<br />
zu migrieren, schlägt schon deshalb fehl, weil<br />
Livemigration mit KVM zum großen Teil direkt<br />
in Qemu passiert, Qemu aber zum Beispiel mit<br />
Microsofts Hyper-V nicht kommunizieren kann.<br />
Eine solche Lösung wäre zwar technisch elegant,<br />
fällt im Moment aber leider in die Gehtnicht-Kategorie.<br />
Auch eine Migration von Xen hin zu KVM lässt<br />
sich kaum sinnvoll ohne eine – wenn auch kurze<br />
– Unterbrechung erledigen. Wer zu einer kommerziellen<br />
Virtualisierungssoftware, also zum<br />
Beispiel VMware, greift, hat mehr Glück. So<br />
bietet VMware eine Migrationsfunktion namens<br />
Virtual to Virtual an, die eine beliebige virtuelle<br />
Maschine in eine neue VMware-VM umbaut.<br />
Ganz ohne Downtime geht das zwar auch nicht,<br />
aber die Zeitspanne ist dennoch deutlich kürzer,<br />
als es bei einem händischen Umwandeln<br />
der Fall wäre.
Titelthema<br />
www.linux-magazin.de VM-Livemigration 05/2013<br />
46<br />
Abbildung 3: Mit den richtigen Konfigurationsparametern lauscht Libvirt auf einem Port für eingehende<br />
Verbindungen von anderen Libvirt-Instanzen im Netz.<br />
man verteilte Systeme auf Grundlage von<br />
Blockspeichern konstruieren: Blöcke sind<br />
starr und eng mit dem Dateisystem verbunden,<br />
das die Block-basierten Datenträger<br />
überhaupt erst für die Anwender<br />
nutzbar macht.<br />
Eine „nackte“ Festplatte wäre ab Werk<br />
nicht sinnvoll zu nutzen; zwar lassen<br />
sich Daten auf ihr ablegen, doch wäre<br />
es unmöglich, diese zu einem späteren<br />
Zeitpunkt geordnet wieder zu lesen. <strong>Die</strong><br />
Struktur, die den geordneten Zugriff auf<br />
Block-basierten Speicher erlaubt, bringen<br />
erst Dateisysteme. Weil ein Dateisystem<br />
sich aber nicht problemlos in mehrere<br />
Streifen aufteilen und dann auf verschiedene<br />
Server verteilen lässt, sind Blöcke<br />
im Grunde nicht für Scale-out-Lösungen<br />
zu gebrauchen.<br />
Object Stores umgehen das Problem, indem<br />
sie ihre interne Verwaltung selbst<br />
übernehmen und auf Grundlage binärer<br />
Objekte konstruieren, die beliebig teilbar<br />
und auch wieder zusammensetzbar sind.<br />
Sie ziehen zwischen Dateisystem und Benutzer<br />
gewissermaßen eine zusätzliche<br />
Schicht ein.<br />
Beliebige Frontends? Mit<br />
Object Stores kein Problem<br />
Daraus ergibt sich ein großer Vorteil von<br />
Object Stores: Sie sind in der Lage, letztlich<br />
dem Client jedes beliebige Frontend<br />
zur Verfügung zu stellen. Denn wenn<br />
der Object Store seine interne Organisation<br />
auf Basis der binären Objekte abwickelt,<br />
kann er diese in jedem beliebigen<br />
Format auch an die Clients ausliefern.<br />
Im Falle von Ceph, bei dem der Object<br />
Store Rados heißt, machen die Entwickler<br />
von dieser Möglichkeit mannigfaltig<br />
Gebrauch. Denn neben dem Posix-kompatiblen<br />
Dateisystem Ceph-FS und dem<br />
Rest-API mit Namen Radosgw exponiert<br />
Rados seine Daten auch in Form eines<br />
Blockdevice, das RBD heißt – die Abkürzung<br />
für Rados Block Device.<br />
<strong>Die</strong> gute Nachricht ist: Aktuelle Libvirt-<br />
Versionen können mit Rados bereits umgehen,<br />
auch Qemu kommt in aktuellen<br />
Versionen mit einer nativen Anbindung<br />
an Rados per RBD (und dem Umweg über<br />
die C-Bibliothek Librados).<br />
Der Effekt ist durchaus beeindruckend:<br />
Von beliebig vielen Virtualisierungsknoten<br />
aus lässt sich der Object Store direkt<br />
an Libvirt beziehungsweise Qemu anbinden,<br />
und auch der gleichzeitige Zugriff<br />
von mehreren Orten auf die gleichen binären<br />
Objekte ist möglich, sodass Livemigration<br />
kein Problem ist.<br />
Libvirt kümmert sich dabei darum, dass<br />
nichts schiefgeht, verhindert also feindlichen,<br />
schlimmstenfalls konkurrierenden<br />
Schreibzugriff beim eigentlichen Migrieren<br />
der VM.<br />
Der Weg zum<br />
Virtualisierungscluster<br />
Für ein sinnvolles Ceph-Setup sind drei<br />
einzelne Server Grundvoraussetzung –<br />
drei Server deshalb, damit das Quorum-<br />
Handling in Ceph sinnvoll funktioniert.<br />
Ceph behandelt jede einzelne Festplatte<br />
als ein eigenes Speichergerät, sodass die<br />
Zahl der Platten (OSD, Object Storage<br />
Daemon, Abbildung 1) pro Host letztlich<br />
eine untergeordnete Rolle spielt. Es empfiehlt<br />
sich anfangs trotzdem, drei Rechner<br />
mit identischer Hardwarekonfiguration<br />
für das Setup zu nutzen.<br />
In Sachen Hardware sollten Admins nicht<br />
sparen, denn neben der Rolle des Object<br />
Store übernehmen die Rechner zugleich<br />
auch die Rolle der Virtualisierungshosts.<br />
Jeder ist also zugleich Teil des Object<br />
Store und virtualisiert auch.<br />
In Kombination mit Pacemaker und einer<br />
Konfiguration ähnlich wie der beschriebenen<br />
für DRBD wird dann aus den<br />
einzelnen Clusterknoten ein sich selbst<br />
verwaltender VM-Cluster, bei dem jede<br />
virtuelle Maschine auf jedem Host laufen<br />
kann und bei dem auch die Live migration<br />
zwischen den Rechnern – dank des Gespanns<br />
aus Qemu und RBD – problemlos<br />
funktioniert. Weitere Informationen zum<br />
Thema Ceph finden sich in weiteren Artikeln<br />
des Autors unter [5], [6] und [7].<br />
DRBD, Libvirt und<br />
Pacemaker<br />
<strong>Die</strong> VM-Migrationskonzepte diverser<br />
Dritt anbieter sind ebenso unterschiedlich<br />
wie komplex. Allerdings gibt es auf<br />
<strong>Linux</strong>-Systemen auch schon mit Bordmitteln<br />
die Möglichkeit, eine VM-Migration<br />
per Libvirt und Pacemaker einzurichten.<br />
Das folgende Beispiel orientiert sich zunächst<br />
an einem simplen Zwei-Knoten-<br />
Cluster, der seine Daten per DRBD zwischen<br />
den Hosts synchron hält. <strong>Die</strong>se Art<br />
von Setup ist nicht besonders komplex<br />
und erlaubt einen guten Einblick in seine<br />
Funktionsweise.<br />
Damit Livemigration mit Libvirt und<br />
Pacemaker auf Grundlage von DRBD wie<br />
gewünscht funktioniert, muss DRBD zunächst<br />
lernen im Dual-Primary-Modus zu<br />
funktionieren; diese Option ist ab Werk<br />
aus Sicherheitsgründen deaktiviert.<br />
Mit DRBD 8.3<br />
Es hängt von der genutzten DRBD-Version<br />
ab, wie sich dieser Modus für DRBD<br />
aktivieren lässt. Kommt, wie bei der<br />
Mehrzahl der Enterprise-Systeme üblich,<br />
DRBD 8.3 zum Einsatz, aktiviert der folgende<br />
Eintrag in der Konfiguration einer<br />
Ressource den Dual-Primary-Modus:<br />
net {<br />
allow‐two‐primaries;<br />
}<br />
Kommt hingegen DRBD 8.4 ins Spiel,<br />
ist die Konfiguration einer Ressource um<br />
den folgenden Eintrag zu erweitern:<br />
net {<br />
protocol C;<br />
allow‐two‐primaries yes;<br />
}<br />
<strong>Die</strong> Änderungen lassen sich auch im laufenden<br />
Betrieb durchführen, wenn im<br />
Anschluss ein »drbdadm adjust Resource«<br />
erfolgt. Vorsicht: Mit Pacemaker empfiehlt<br />
es sich, den Cluster wenigstens in<br />
den Wartungsmodus zu versetzen, bevor<br />
irgendwelche Änderungen an DRBD oder
Libvirt stattfinden. Das geht mit »crm configure<br />
property maintenance‐mode=true«<br />
direkt auf der Kommandozeile einer der<br />
Knoten, die zum Cluster gehören, und<br />
gilt danach Cluster-weit.<br />
Pacemaker mit mehr als<br />
zwei Knoten?<br />
Apropos Pacemaker: Wer einen Zwei-<br />
Knoten-Cluster für Virtualisierung nutzt,<br />
wird in diesem üblicherweise auch DRBD<br />
von Pacemaker verwalten lassen. <strong>Die</strong> im<br />
Netz kursierenden Anleitungen konfigurieren<br />
DRBD-Ressourcen dabei so, dass<br />
nur einer der beiden Knoten im Primary-<br />
Modus läuft (Abbildung 2). Um das zu<br />
ändern, ist eine Konfigurationsänderung<br />
in Pacemaker notwendig. Meist sehen<br />
DRBD-Ressourcen in Pacemaker so aus:<br />
ms ms_drbd‐vm1 p_drbd‐vm1 \<br />
meta notify="true" master‐max="1" U<br />
clone‐max="2"<br />
Um für eine solche DRBD-Ressource den<br />
Dual-Primary-Modus zu aktivieren, genügt<br />
es, den Wert hinter »master‐max«<br />
auf »2« zu setzen. Danach konfiguriert<br />
Pacemaker die DRBD-Ressource automatisch<br />
so, dass sie auf den beiden Clusterknoten<br />
im Primary-Modus läuft.<br />
Gestatten? <strong>Die</strong> Libvirt-<br />
Instanzen<br />
<strong>Die</strong> nächste Hürde für Livemigration besteht<br />
darin, die Instanzen von Libvirt<br />
auf den Knoten miteinander bekannt zu<br />
machen. Denn damit eine Livemigration<br />
zwischen den Knoten A und B funktionieren<br />
kann, müssen die Libvirt-Instanzen<br />
miteinander kooperieren. Konkret<br />
heißt das, dass jede Libvirt-Instanz einen<br />
TCP/IP-Socket öffnen. Dafür reichen<br />
die folgenden Einträge in »/etc/libvirt/<br />
libvirtd.conf«:<br />
listen_tls = 0<br />
listen_tcp = 1<br />
auth_tcp = "none"<br />
Aber Achtung: <strong>Die</strong> gezeigte Konfiguration<br />
verzichtet auf jede Form von<br />
Authentifizierung zwischen den Clusterknoten.<br />
Anstelle von TCP ließe sich auch<br />
SSL-Kommunikation mit entsprechenden<br />
Zertifikaten bauen. <strong>Die</strong>se Konfiguration<br />
wäre aber deutlich umständlicher, so<br />
dass diese Anleitung darauf verzichtet,<br />
sie zu dokumentieren.<br />
Zusätzlich zu den Änderungen in »libvirtd.conf«<br />
müssen Admins auch sicherstellen,<br />
dass Libvirt mit dem<br />
Parameter »‐l« startet; auf<br />
Ubuntu genügt es, den Eintrag<br />
»libvirtd_opts« in »/etc/<br />
default/libvirt‐bin« um den<br />
entsprechenden Parameter<br />
zu erweitern. Im Anschluss<br />
ist ein Libvirt-Neustart fällig,<br />
danach gelingt bereits die<br />
Livemigration zumindest auf<br />
Libvirt-Ebene (Abbildung 3).<br />
Livemigration mit<br />
Pacemaker<br />
Damit Pacemaker Livemigration<br />
tatsächlich kontrollieren<br />
kann, ist noch eine kleine<br />
Änderung der Konfiguration<br />
notwendig im Hinblick auf die in Pacemaker<br />
abgelegten Definitionen der virtuellen<br />
Maschinen. Der Agent in Pacemaker,<br />
der sich um virtuelle Maschinen<br />
kümmert, würde ab Werk auch dann,<br />
wenn der Admin eine VM per »migrate«-<br />
Befehl verschiebt, diese stoppen und auf<br />
dem Ziel-Host wieder starten.<br />
Damit er das nicht tut, muss er lernen,<br />
dass Livemigration erlaubt ist. Dazu ein<br />
konkretes Beispiel, dessen ursprüngliche<br />
Konfiguration so aussieht:<br />
primitive p_vm‐vm1<br />
ocf:heartbeat:VirtualDomain \<br />
params config="/etc/libvirt/qemu/vm1.cfg"\<br />
op start interval="0" timeout="60" \<br />
op stop interval="0" timeout="300" \<br />
op monitor interval="60" timeout="60"<br />
start‐delay="0"<br />
Um die Livemigration zu aktivieren, wäre<br />
die Konfiguration wie folgt zu ändern.<br />
Abbildung 4: Ein typisches Pacemaker-Setup.<br />
VM-Livemigration 05/2013<br />
Titelthema<br />
www.linux-magazin.de<br />
47<br />
NEU NEU NEU<br />
Webseiten ab sofort,<br />
RUCK ZUCK und<br />
mit wenigen Klicks<br />
selbst erstellen!!!<br />
Mit dem CANDAN HomepageBaukasten!<br />
Buchbar schon ab 1.50 € monatlich!<br />
Weitere WebspaceAngebote CMSSysteme ShopSysteme SSLCerts Hosted Exchange SpezialAngebote u.v.m. auf www.candan.eu
Titelthema<br />
www.linux-magazin.de VM-Livemigration 05/2013<br />
48<br />
Abbildung 5: Libvirt enthält in aktuellen Versionen bereits eine native Anbindung an Ceph. Livemigrationen<br />
sind in solchen Setups kein Problem mehr.<br />
Wichtig sind insbesondere die zusätzlichen<br />
Parameter sowie das neue »meta«-<br />
Attribut in der letzten Zeile:<br />
primitive p_vm‐vm1<br />
ocf:heartbeat:VirtualDomain \<br />
params config="/etc/libvirt/qemu/vm1.cfg"U<br />
migration_transport="tcp" \<br />
op start interval="0" timeout="60" \<br />
op stop interval="0" timeout="300" \<br />
op monitor interval="60" timeout="60" U<br />
start‐delay="0" \<br />
meta allow‐migrate="true"<br />
target‐role="Started"<br />
Mit dieser Konfiguration migriert »crm<br />
resource move p_vm‐vm1« die virtuelle<br />
Maschine im laufenden Betrieb.<br />
I-SCSI-SANs<br />
Wer darauf angewiesen ist, Livemigration<br />
auf Grundlage eines SAN mit I-<br />
SCSI-Anbindung zu realisieren, hat ein<br />
ungleich schwereres Los. Das liegt im<br />
Wesentlichen an der Tatsache, dass SAN-<br />
Storages eigentlich nicht darauf ausgelegt<br />
sind, von mehreren Seiten konkurrierenden<br />
Zugriff auf bestimmte LUNs zu verstehen.<br />
Es ist deshalb notwendig, eine<br />
Zwischenebene einzuziehen, die diese<br />
Funktion nachrüstet.<br />
<strong>Die</strong> meisten Admins erledigen das mit der<br />
Clusterversion von LVM (»cLVM«) oder<br />
einem der typischen Cluster-Dateisysteme<br />
(GFS2 oder OCFS2). Konkret sieht<br />
das Setup so aus wie in Abbildung 4: Auf<br />
jedem Knoten des Clusters ist die I-SCSI-<br />
LUN als lokales Device angemeldet, eine<br />
Instanz von CLVM oder OCFS/GFS2 kümmert<br />
sich um den koordinierten Zugriff.<br />
Zudem setzt die Konstruktion zwingend<br />
voraus, dass Libvirt sich selbst zuverlässig<br />
um das Locking kümmert.<br />
Setups wie das erwähnte sind deshalb<br />
nur sinnvoll, wenn Libvirt gleichzeitig<br />
das kleine Tool Sanlock [8] nutzt. Denn<br />
nur dies verhindert, dass dieselbe VM<br />
auf mehr als einem Server gleichzeitig<br />
gestartet ist, was ebenfalls tödlich für die<br />
Konsistenz der Dateisysteme innerhalb<br />
der VM selbst wäre.<br />
LVM als schwächstes Glied<br />
Was in der Theorie einleuchtend klingt,<br />
kann im Alltag des Sysadmin schnell<br />
nervig werden. Das schwächste Glied in<br />
der Kombination aus Libvirt, einem SAN,<br />
Pacemaker sowie GFS2/OCFS2/CLVM ist<br />
zweifellos CLVM. Das liegt einerseits daran,<br />
dass der DLM-Stack auf <strong>Linux</strong> (DLM<br />
steht für Distributed Locking Manager) in<br />
den letzten Jahren immer wieder umgebaut<br />
worden ist, sodass auf SLES, RHEL,<br />
Debian sowie Ubuntu heute jeweils unterschiedliche<br />
Dinge zu erledigen sind,<br />
wenn solch ein Setup überhaupt entstehen<br />
soll.<br />
Andererseits kommen die DLM-basierten<br />
Komponenten mit viel Komplexität einher.<br />
Das betrifft sowohl die Ebene der<br />
<strong>Die</strong>nste selbst wie auch ihre ordnungsgemäße<br />
Verwaltung mittels eines Clustermanagers,<br />
der für solche Setups zum<br />
Pflichtprogramm gehört.<br />
Bastian Blank, der maßgeblich an der<br />
Pflege des <strong>Linux</strong>-Kernels für Debian beteiligt<br />
ist, hat den CLVM-<strong>Die</strong>nst im Debian-Kernel<br />
kürzlich sogar mit dem Kommentar<br />
deaktiviert, dieser habe ohnehin<br />
nie zuverlässig funktioniert. Wer ein SAN<br />
zur Verfügung hat, das NFS kann, tut<br />
sehr gut daran, lieber dieses zu nutzen,<br />
statt zu einem Cluster-Dateisystem oder<br />
verteiltem LVM zu greifen.<br />
Basteln oder kaufen?<br />
Wenn Admins auf eine der diversen<br />
fertigen Virtualisierungslösungen wie<br />
VMware oder Red Hats O-Virt setzen,<br />
müssen sie sich mit dem Thema Migration<br />
und Livemigration in der Regel gar<br />
nicht mehr befassen. Denn alle fertigen<br />
Lösungen dieser Art beherrschen Livemigration.<br />
Wenn ein kleines Virtualisierungs-Setup<br />
auf Grundlage von DRBD<br />
gewünscht ist, so reicht die Kombination<br />
aus DRBD, Libvirt und Pacemaker für<br />
Livemigration völlig aus. Wer sich hingegen<br />
mit einem SAN-Storage konfrontiert<br />
sieht, hofft auf die NFS-Fähigkeiten<br />
des Geräts oder greift notgedrungen zu<br />
Werkzeugen, die aus einem SAN einen<br />
verteilten Storage machen.<br />
Als Alternative bietet sich jedenfalls Ceph<br />
an, bei dem Livemigration mittels Libvirt<br />
von Anfang an serienmäßig war (Abbildung<br />
5). Nachdem der Hersteller Inktank<br />
die dafür benötigten Komponenten von<br />
Ceph, also Rados, Librados und DRBD,<br />
mittlerweile auch offiziell als stabil betrachtet,<br />
sollte Ceph jedenfalls mit in die<br />
Überlegungen einfließen, in deren Rahmen<br />
ein Setup wie das hier erläuterte<br />
entsteht. (mfe)<br />
n<br />
Infos<br />
[1] Studie der NSDI (2005):<br />
[http:// static. usenix. org/ event/ nsdi05/<br />
tech/ full_papers/ clark/ clark. pdf]<br />
[2] Dual-Primary in DRBD:<br />
[http:// www. drbd. org/ users‐guide/<br />
s‐dual‐primary‐mode. html]<br />
[3] Ceph: [http:// ceph. com]<br />
[4] Udo Seidel, „Speicher satt“: <strong>Linux</strong>-<strong>Magazin</strong><br />
02/13, S. 30<br />
[5] Martin Gerhard Loschwitz, „Der RADOS-Objectstore<br />
und Ceph“, Teil 1: Admin-<strong>Magazin</strong><br />
06/12<br />
[6] Martin Gerhard Loschwitz, „Der RADOS-Objectstore<br />
und Ceph“, Teil 2: Admin-<strong>Magazin</strong><br />
01/13<br />
[7] Martin Gerhard Loschwitz, „Der RADOS-Objectstore<br />
und Ceph“, Teil 3: Admin-<strong>Magazin</strong><br />
02/13<br />
[8] Sanlock:<br />
[https:// fedorahosted. org/ sanlock/]<br />
Der Autor<br />
Martin Gerhard Loschwitz<br />
arbeitet als Principal Consultant<br />
bei Hastexo. Er beschäftigt<br />
sich dort intensiv<br />
mit Hochverfügbarkeitslösungen<br />
und pflegt in seiner<br />
Freizeit den <strong>Linux</strong>-Cluster-Stack für Debian..
In eigener Sache: DELUG-DVD<br />
Suse 12.3, Cebit-Videos, E-Book<br />
Einführung 05/2013 12/2010<br />
Software<br />
Sie ist da! Kurz vor Redaktionsschluss haben die Nürnberger Suse-Entwickler die Version 12.3 freigegeben, die<br />
eine ganze Seite der DELUG-DVD füllt. Auf der anderen gibt’s eine Jubiläums-VM von Citadel sowie exklusiv ein<br />
E-Book und das Beste aus dem Cebit Open Source Forum des <strong>Linux</strong>-<strong>Magazin</strong>s als Videos. Markus Feilner<br />
www.linux-magazin.de<br />
49<br />
Inhalt<br />
50 Bitparade<br />
Frontends für die Verschlüsselung mit<br />
GnuPG: Kleopatra, Seahorse und andere.<br />
56 Visualisierungstools<br />
Ansprechende Grafiken und Animationen<br />
generieren mit <strong>Linux</strong>-Werkzeugen.<br />
60 Tooltipps<br />
Kurz angetestet: Shellcat, Rf, Fdm,<br />
Check Logfiles, Iotop und Rainbarf.<br />
64 Libre Office 4.0<br />
Mit Android-Fernsteuerung und zahlreichen<br />
neuen Importfiltern kommt die<br />
vierte Ausgabe von Libre Office.<br />
Neben einem normalen <strong>Linux</strong>-<strong>Magazin</strong><br />
ohne Datenträger gibt es die DELUG-<br />
Ausgabe mit Monats-DVD, bei der die<br />
Redaktion den Datenträger nach einem<br />
speziellen Konzept zusammenstellt: In<br />
einer Art modularem System enthält er<br />
Programme und Tools, die in der jeweiligen<br />
<strong>Magazin</strong>-Ausgabe getestet und besprochen<br />
werden. Zudem gibt es nicht im<br />
Abbildung 1: Kostenlos auf der DELUG-DVD: 550<br />
Seiten „<strong>Linux</strong> Server-Sicherheit“ von Michael Bauer.<br />
Heft abgehandelte Software, die<br />
die Redaktion besonders empfiehlt,<br />
alles gebündelt unter einer<br />
HTML-Oberfläche. Von der<br />
ersten Seite bootet dieses Mal<br />
Open Suse 12.3 in der 64-Bit-<br />
Version.<br />
Open Suse 12.3<br />
<strong>Die</strong> neue Version 12.3 der beliebten<br />
Distribution Open Suse<br />
bietet den <strong>Linux</strong>-Kernel in<br />
Version 3.7, unterstützt UEFI<br />
und taucht KDE 4.10 in ein<br />
elegantes Schwarz, bringt aber<br />
auch topaktuelle Gnome- oder<br />
LXDE-Desktops mit. Das Büropaket<br />
Libre Office meldet sich<br />
noch mit der Versionsnummer<br />
3.6, die aktuelle Version 4 soll sich jedoch<br />
problemlos per Hand nachinstallieren<br />
lassen. Um den Systemstart kümmert<br />
sich Systemd 195, der das alte Sys-V-Init<br />
komplett abgelöst hat und nun für die<br />
Stromsparmechanismen zuständig ist.<br />
Exklusiv: E-Book<br />
Wer den Silberling umdreht und mit dem<br />
Browser darauf zugreift, findet ein Menü<br />
mit vielen exklusiven Inhalten. Darunter<br />
auch ein E-Book, das die <strong>Linux</strong>-Server-<br />
Sicherheit im Titel führt (Abbildung 1).<br />
<strong>Die</strong> 2. Auflage liefert Administratoren das<br />
State-of-the-Art-Rüstzeug, um ihr System<br />
zu härten, und vermittelt neben einem<br />
soliden Verständnis auch konkrete Vorgehensweisen<br />
zur Absicherung der einzelnen<br />
Internetdienste wie E-Mail, Web-,<br />
Datenbank- oder LDAP-Server, aber auch<br />
Tipps zur Mailverschlüsselung. Das E-<br />
Book kostet normalerweise 30 Euro,<br />
DELUG-Käufer erhalten es so.<br />
Abbildung 2: Happy Birthday, Citadel! <strong>Die</strong> Groupware mit Räumen<br />
und Besuchern feiert im März ihren 25. Geburtstag. Der DELUG-<br />
DVD liegt sie als virtuelle Maschine zum einfachen Testen bei.<br />
Es gibt nicht viele Open-Source-Projekte,<br />
die bereits über ein Vierteljahrhundert<br />
alt sind. <strong>Die</strong> Groupware Citadel (Abbildung<br />
2) ist so eins: Das aus den Bulletin<br />
Boards der 80er Jahre entstandene System<br />
feierte im März seinen 25. Geburtstag.<br />
Mit der Zeit reifte die Software zu einer<br />
vollständigen Enterprise-Groupware<br />
mit Unterstützung für Hochverfügbarkeitsszenarien,<br />
LDAP, Synchronisation,<br />
<strong>Linux</strong>-Desktop-Clients und zahlreiche<br />
offene Standards.<br />
Best-of-Cebit-Videos<br />
Damit nicht genug: Neben Munin,<br />
Logstash, Node.js, Libre Office 4.0 und<br />
den Werkzeugen aus den Tooltipps findet<br />
sich auf der DELUG-DVD auch noch ein<br />
exklusives Special mit den besten Videos<br />
aus dem Open Source Forum der Cebit.<br />
Mitwirkende <strong>Linux</strong>-<strong>Magazin</strong>-Autoren:<br />
Jon „Maddog“ Hall, Klaus Knopper, Peer<br />
Heinlein und Holger Gantikow. n
Software<br />
www.linux-magazin.de Bitparade 05/2013<br />
50<br />
Frontends für GnuPG<br />
Bund fürs Leben<br />
Wer kryptographische Schlüssel und Zertifikate unter <strong>Linux</strong> erzeugen oder verwalten möchte, der greift in der<br />
Regel zum allseits bekannten GnuPG. Erscheint das Kommandozeilentool mit seinen zahlreichen Parametern<br />
zu verwirrend, helfen fünf grafische Frontends weiter. Tim Schürmann<br />
onen bereit – allerdings in einigen leicht<br />
veralteten Fassungen. Pyrite bauen Nutzer<br />
aus den Quellen selbst.<br />
E GNU Privacy Assistant<br />
© Igor Averin, 123rf.com<br />
Sicherheitsbewussten Anwendern leistet<br />
GnuPG [1] unter <strong>Linux</strong>, Windows und<br />
OS X gleichermaßen gute <strong>Die</strong>nste, da es<br />
Daten ver- und entschlüsselt sowie elektronische<br />
Signaturen erzeugt und prüft.<br />
Das freie Kryptographiesystem übermittelt<br />
somit nicht nur vertrauliche Informationen<br />
und sorgt für eine sichere Kommunikation<br />
per Mail und Chat, sondern<br />
es gewährleistet mit der Signatur zu den<br />
versandten Daten auch deren Authentizität<br />
und Integrität.<br />
Das Kommandozeilentool »gpg« ist auf<br />
Unix-Betriebssystemen die erste Anlaufstelle.<br />
Es erzeugt, exportiert und importiert<br />
Schlüssel, verwaltet den eigenen<br />
Schlüsselbund, ver- und entschlüsselt<br />
Daten, kommuniziert mit Keyservern und<br />
vieles mehr. <strong>Die</strong> zahlreichen Aufrufoptionen<br />
erfordern allerdings ein gutes Gedächtnis<br />
oder einen wiederholten Blick<br />
in die Manpage.<br />
Zahlreiche Frontends stellen daher »gpg«-<br />
Funktionen über eine grafische Oberfläche<br />
bereit. Sie erfordern allesamt das<br />
grundsätzliche Verständnis der asymmetrischen<br />
Verschlüsselung. Teilweise<br />
verlangen sie sogar nach Hintergrundwissen<br />
zur Bedienung von GnuPG selbst.<br />
In diesem Test treten der GNU Privacy<br />
Assistant [2], das Duo Kgpg [3] und Kleopatra<br />
[4], Pyrite [5] sowie Seahorse [6]<br />
an und zeigen, ob sie <strong>Linux</strong>-Anwendern<br />
die Arbeit mit der Kryptographiesoftware<br />
erleichtern können.<br />
Aktuelle Versionen der GUIs finden Anwender<br />
auf der jeweiligen Projekthomepage.<br />
Zusätzlich stehen von GPA, Kgpg,<br />
Kleopatra und Seahorse Pakete in den<br />
Repositories fast aller großen Distributi-<br />
Das offizielle Frontend für GnuPG [2]<br />
steht unter den Fittichen der Free Software<br />
Foundation. GPA ist laut Webseite<br />
„Work in progress“ – und das seit 2000.<br />
Im Test trat die neueste Version 0.9.3 vom<br />
August 2012 an. Das Werkzeug setzt auf<br />
die GTK+-Bibliothek in der älteren Version<br />
2. Mangels Dokumentation muss der<br />
Benutzer alle weiteren Abhängigkeiten<br />
mit »configure« mühsam selbst herausfinden,<br />
will er das Frontend selbst bauen.<br />
Unter Ubuntu 12.10 wollte das Programm<br />
nicht starten, sondern lieber unendlich<br />
lange die Verlässlichkeits-Datenbank<br />
wiederherstellen. <strong>Die</strong> Zusammenarbeit<br />
mit Open Suse 12.2 klappte nach einigen<br />
Anlaufschwierigkeiten jedoch.<br />
Einen neuen Schlüssel fertigen Anwender<br />
mit einem kleinen Assistenten an, der<br />
nacheinander Name und E-Mail-Adresse<br />
abfragt. Anschließend bietet er an, eine<br />
Kopie des Schlüssels auf einem (externen)<br />
Medium zu speichern, wozu er eine Diskette<br />
vorschlägt. <strong>Die</strong> Passphrase fordert<br />
danach das Tool Pinentry [7] an; unter<br />
Open Suse ist das die installierte Variante<br />
»pinentry‐qt4«. Sie bescheinigte im Test<br />
dem simplen Kennwort »1234567891«<br />
eine Qualitätsbestnote von sagenhaften<br />
100 Prozent.<br />
Auf dem Open-Suse-Testrechner schaffte<br />
der GNU Privacy Assistant es dann gerade<br />
noch, die Kopie des geheimen Schlüssels<br />
in eine Datei zu schreiben, bevor er sich<br />
reproduzierbar mit einem Speicherfehler<br />
verabschiedete. Nach einem Neustart<br />
arbeitete GPA jedoch ohne Probleme
ihn etwas irreführend als Zwischenablage.<br />
Es ver- und entschlüsselt in diesen<br />
Dialog kopierte oder getippte Texte.<br />
Außerdem kann GPA sie dort signieren<br />
oder vorhandene Signaturen prüfen. Eine<br />
Funktion zum Speichern suchen Benutzer<br />
hier allerdings vergeblich – den Inhalt<br />
übernehmen sie per Copy & Paste in<br />
eine andere Anwendung. Last, but not<br />
least stellt GPA einen Dialog zur Verfügung,<br />
der Smartcards verwaltet und<br />
einbindet.<br />
Bitparade 05/2013<br />
Software<br />
www.linux-magazin.de<br />
51<br />
E Kgpg und Kleopatra<br />
Abbildung 1: Nur in der Betriebsart für Experten blendet der GNU Privacy Assistent am unteren Fensterrand<br />
ausführliche Informationen zu den Schlüsseln und Zertifikaten, zu Signaturen und Subkeys ein.<br />
weiter. Wer die Standardeinstellung für<br />
die Schlüssellänge (2048 Bits) ändern<br />
möchte, der muss in den Optionen des<br />
Programms zum Expertenmodus wechseln.<br />
Das Verfallsdatum eigener Schlüssel<br />
legen Anwender ebenfalls über GPA fest.<br />
Das Tool blendet als Hilfe einen kleinen<br />
Kalender ein.<br />
Experten bevorzugt<br />
Abbildung 2: <strong>Die</strong> GPA-Zwischenablage verschlüsselt und signiert Texte.<br />
Das Hauptfenster listet im oberen Bereich<br />
alle lokal vorhandenen Zertifikate und<br />
Schlüssel auf. Markiert der Anwender<br />
einen Eintrag, erscheinen im unteren<br />
Bereich weitere Details, zum Beispiel<br />
das Verfallsdatum und der Verschlüsselungsalgorithmus.<br />
Angaben zur Signatur<br />
und zu den untergeordneten Schlüsseln<br />
beziehungsweise Informationen zur Vertrauenskette<br />
und Schlüsseln bei Zertifikaten<br />
bietet nur die Darstellung für Fortgeschrittene<br />
(Abbildung 1).<br />
Zum Signieren anderer Schlüssel verwendet<br />
der GNU Privacy Assistant ausschließlich<br />
den Standardschlüssel. <strong>Die</strong>sen<br />
wiederum müssen Benutzer umständlich<br />
in den Programmeinstellungen wählen.<br />
Das Tool erlaubt es, die Vertrauensstufen<br />
festzulegen, und importiert und exportiert<br />
die Schlüssel. Im Test hinterließ GPA<br />
allerdings kommentarlos eine leere Datei<br />
bei dem Versuch, mehrere Schlüssel<br />
gleichzeitig zu exportieren.<br />
Eine eigene Dateiverwaltung verschlüsselt<br />
Files auf der lokalen Platte. Sie bietet<br />
nicht den gleichen Komfort wie ein Dateimanager,<br />
erledigt aber ihren Job. Zum<br />
Verschlüsseln und Signieren dürfen Anwender<br />
einen der vorhandenen Schlüssel<br />
auswählen und dem chiffrierten Ergebnis<br />
zudem eine Ascii-Verpackung spendieren.<br />
Eine symmetrische<br />
Verschlüsselung<br />
bietet GPA für Dateien<br />
nicht an.<br />
Um schnell einen kleinen<br />
Textschnipsel vor<br />
neugierigen Augen zu<br />
verbergen, hält der<br />
GNU Privacy Assistant<br />
einen speziellen Texteditor<br />
bereit (siehe<br />
Abbildung 2). Das<br />
Programm bezeichnet<br />
Fest mit dem KDE-Desktop verbunden<br />
sind Kgpg [3] und Kleopatra [4]. <strong>Die</strong> beiden<br />
Programme arbeiten daher auch mit<br />
anderen KDE-Komponenten zusammen.<br />
So verschicken sie beispielsweise öffentliche<br />
Schlüssel über Kmail oder legen zu<br />
einem Schlüssel den passenden Kontakt<br />
im KDE-Adressbuch an.<br />
Während sich Kgpg hauptsächlich um die<br />
GnuPG-Schlüssel kümmert, ist Kleopatra<br />
für die X.509- und Open-PGP-Zertifikate<br />
verantwortlich. Teilweise überschneidet<br />
sich der Funktionsumfang, beide Programme<br />
stellen das jeweilige Feature<br />
bereit. Im Test stellte das Gespann unter<br />
Open Suse 12.3 (KDE SC 4.10) seine Fähigkeiten<br />
unter Beweis; Kgpg liegt dort<br />
in Version 2.9 vor, Kleopatra trägt die<br />
Nummer 2.1.1.<br />
Kgpg öffnet nach dem ersten Start einen<br />
Assistenten, der ein paar Basiseinstellungen<br />
zu GnuPG abfragt und danach<br />
ein Dialogfenster öffnet, um ein neues<br />
Schlüsselpaar zu generieren. Anwender<br />
dürfen dabei die Schlüsselgröße, den<br />
Verschlüsselungsalgorithmus und ein<br />
Ablaufdatum vorgeben, ohne wie bei<br />
GPA in den Expertenmodus wechseln zu<br />
müssen. Als Verfahren schlägt das KDE-<br />
Programm in der Voreinstellung DSA und<br />
El Gamal mit einer Schlüssellänge von<br />
1024 Bits vor; empfohlen sind jedoch inzwischen<br />
2048 Bits.<br />
Ein Klick auf die Schaltfläche »Expertenmodus«<br />
öffnet ein Terminalfenster, in<br />
dem das Kommando »gpg ‐‐gen‐key ‐‐expert«<br />
auf Benutzereingaben wartet. <strong>Die</strong><br />
Stärke der eingetippten Passphrase prüft<br />
Kgpg zwar, bescheinigt der trivialen Eingabe<br />
»123456789« aber eine Qualität von<br />
25 Prozent und übernimmt das Kennwort<br />
zudem ohne Warnung.
Software<br />
www.linux-magazin.de Bitparade 05/2013<br />
52<br />
Abbildung 3: Kgpg-Benutzer erkennen vertrauenswürdige Schlüssel sofort an der Farbe.<br />
Das Kgpg-Hauptfenster listet alle selbst<br />
angelegten beziehungsweise importierten<br />
Schlüssel auf (siehe Abbildung 3).<br />
Ein Klick auf einen Eintrag klappt diesen<br />
auf und zeigt die Subschlüssel an. Kgpg<br />
ordnet jeder Vertrauensstufe eine Farbe<br />
zu, sodass Anwender auf einen Blick erkennen,<br />
welche Schlüssel nicht (mehr)<br />
vertrauenswürdig sind. Auf Wunsch fasst<br />
das Programm Schlüssel in Gruppen zusammen,<br />
was wiederum für mehr Ordnung<br />
in der Liste sorgt.<br />
Detailinformationen zu einem Schlüssel<br />
präsentiert ein eigenes Dialogfenster<br />
(siehe Abbildung 4). In diesem dürfen<br />
Nutzer die Vertrauensstufe und für ihre<br />
Keys das Ablaufdatum und die Passphrase<br />
ändern. Außerdem können sie<br />
den Schlüssel komplett deaktivieren. <strong>Die</strong><br />
Modifikationen zeigt Kgpg im Hauptfenster<br />
allerdings erst an, nachdem der<br />
Anwender die Anzeige von Hand mit der<br />
Taste [F5] aktualisiert hat.<br />
Arbeitsteilung<br />
Öffentliche Schlüssel kann das KDE-Werkzeug<br />
nicht nur auf einen Server laden<br />
oder in eine Datei exportieren, sondern<br />
auch in die Zwischenablage kopieren<br />
oder direkt als Mail verschicken. Auch<br />
Abbildung 4: Änderungen an einem Schlüssel nehmen Anwender im Dialogfenster<br />
»Schlüsseleigenschaften« vor.<br />
der Import klappt über die Zwischenablage.<br />
Beim Signieren von Schlüsseln fragt<br />
ein Assistent explizit ab, wie der Nutzer<br />
den zu signierenden Schlüssel überprüft<br />
hat. Auch beim Sperren müssen Anwender<br />
einen Grund angeben, erst dann erzeugt<br />
das KDE-Tool ein Sperrzertifikat.<br />
Im Test schlug Letzteres allerdings wiederholt<br />
fehlt. <strong>Die</strong> Gründe dafür mochte<br />
Kgpg nicht nennen.<br />
Einige Funktionen verstecken sich im<br />
Kontextmenü der rechten Maustaste.<br />
Über dieses ordnen Anwender beispielsweise<br />
Fotos oder Benutzerkennungen zu,<br />
signieren sie und sichern beziehungsweise<br />
exportieren den geheimen Schlüssel.<br />
Praktisch ist der Eintrag »Schlüssel<br />
in Konsole bearbeiten«. Er öffnet wie<br />
der Expertenmodus beim Erstellen ein<br />
Terminal und startet darin den interaktiven<br />
GnuPG-Schlüsseleditor (»gpg<br />
‐‐edit‐key«).<br />
Genau wie GPA enthält Kgpg einen Texteditor,<br />
der allerdings etwas komfortabler<br />
zu bedienen ist. <strong>Die</strong> Entwickler haben<br />
in ihn sogar eine automatische Rechtschreibprüfung<br />
integriert. Eingetippte<br />
oder über die Zwischenablage eingefügte<br />
Texte signiert das Tool und ver- und entschlüsselt<br />
sie. Auch eine Signaturprüfung<br />
ist dabei. Der Texteditor chiffriert<br />
die Daten auf Wunsch<br />
mit symmetrischer<br />
Verschlüsselung. Das<br />
Passwort muss sich<br />
der Benutzer aber<br />
selbst merken; Kgpg<br />
kann es nicht verwalten.<br />
Eine Möglichkeit für<br />
das Verschlüsseln<br />
von Dateien ist nicht<br />
vorhanden. Stattdessen<br />
klinkt sich Kgpg<br />
in den Dateimanager<br />
Dolphin ein, wo ein<br />
Rechtsklick auf eine<br />
Datei eine entsprechende<br />
Funktion zum Vorschein bringt.<br />
Alternativ bietet der eingebaute Texteditor<br />
zwei Menüpunkte, die Dateien auf der<br />
Platte ver- und entschlüsseln. In jedem<br />
Fall hat der Benutzer die Wahl zwischen<br />
symmetrischer und asymmetrischer Verschlüsselung.<br />
Zertifiziert<br />
<strong>Die</strong> Anwendung mit dem stolzen Namen<br />
Kleopatra kümmert sich um Zertifikate,<br />
bietet aber auch Menüpunkte, die Dateien<br />
direkt verschlüsseln, entschlüsseln,<br />
signieren und verifizieren. Kleopatra kann<br />
die Dateien auf Wunsch komprimieren,<br />
die unverschlüsselten Originale löschen<br />
und die Daten in einen Ascii-Mantel packen.<br />
Eine symmetrische Verschlüsselung<br />
ist nicht möglich. Dafür kann das<br />
Programm genau wie GPA Smartcards<br />
einbinden und nutzen.<br />
Im Hauptfenster zeigt Kleopatra auf drei<br />
Registern die selbst erstellten sowie alle<br />
vertrauenswürdigen und alle anderen<br />
Zertifikate an (Abbildung 5). <strong>Die</strong> Liste<br />
der Tabs erweitern Benutzer über das<br />
grüne Pluszeichen. Über das Dropdown-<br />
Menü neben dem Suchfeld schalten sie<br />
die Ansicht für den aktuellen Reiter um<br />
und blenden so etwa abgelaufene, widerrufene<br />
und ungeprüfte Schlüssel sowie<br />
Smartcard-Zertifikate ein.<br />
Zusätzlich zu diesen Filtermöglichkeiten<br />
sorgt noch die Farbgebung für eine bessere<br />
Übersicht. Kleopatra verpasst Einträgen<br />
ähnlich wie Kgpg abhängig von<br />
ihrer Vertrauenswürdigkeit einen anderen<br />
Anstrich. So erscheinen beispielsweise<br />
abgelaufene Zertifikate in der Voreinstellung<br />
in roter Schrift.<br />
Kleopatra fertigt auf Wunsch Prüfsummen<br />
für Dateien an, mit denen es diese<br />
später auf Unversehrtheit testet. Anwender<br />
können Zertifikate beglaubigen (signieren),<br />
das Ablaufdatum und die Passphrase<br />
ändern, eine Benutzerkennung<br />
hinzufügen, die Vertrauenswürdigkeit<br />
des Inhabers ändern sowie dem Wurzelzertifikat<br />
das Vertrauen aussprechen<br />
beziehungsweise entziehen. Zertifikat-<br />
Sperrlisten importiert das Programm aus<br />
einer Datei.<br />
Beim Ausstellen eines neuen Zertifikats<br />
hilft ein Assistent. Er generiert wahlweise<br />
ein Open-PGP- oder X.509-Schlüsselpaar,<br />
letzteres samt Beglaubigungsanfrage. Das
der Konsole; Anwender sollten daher Pyrite<br />
tunlichst aus einem Terminalfenster<br />
heraus starten.<br />
E Seahorse<br />
Bitparade 05/2013<br />
Software<br />
Abbildung 5: Kleopatra öffnet mehrere Ansichten der Zertifikate und Schlüssel auf Tabs im Hauptfenster.<br />
Verschlüsselungsverfahren dürfen Benutzer<br />
selbst bestimmen, voreingestellt ist<br />
RSA mit einer Schlüssellänge von 2048<br />
Bits. Der Assistent holt wie GPA die Passphrase<br />
über »pinentry‐qt4« ein, welches<br />
wiederum »123465789« für ein qualitativ<br />
hochwertiges Kennwort hält. Das frisch<br />
gebackene Zertifikat verschickt Kleopatra<br />
per E-Mail, lädt es zu einem Server hoch<br />
oder sichert es in einer Datei.<br />
E Pyrite<br />
Das kleine Tool Pyrite [5] ist komplett<br />
in Python geschrieben. Version 1.0.0<br />
(getestet unter Ubuntu 12.10) verschlüsselt,<br />
entschlüsselt, signiert und verifiziert<br />
lediglich Dateien, eine Schlüsselverwaltung<br />
fehlt komplett. Um eine Textnachricht<br />
zu chiffrieren, tippen Anwender sie<br />
ins große Eingabefeld des Hauptfensters,<br />
denken sich ein Passwort aus, wählen<br />
einen Algorithmus und klicken dann auf<br />
»Encrypt« (Abbildung 6).<br />
In der Voreinstellung verschlüsselt Pyrite<br />
die Daten mit einem symmetrischen<br />
Verfahren. Für eine asymmetrische Verschlüsselung<br />
schaltet der Nutzer per<br />
Klick in die entsprechende Checkbox um<br />
und legt danach fest, ob er den eigenen<br />
privaten oder einen öffentlichen Schlüssel<br />
von einem anderen Nutzer verwenden<br />
möchte. <strong>Die</strong> Schlüsselkennung hinterlegt<br />
er in einem Eingabefeld – umständlicher<br />
geht es kaum.<br />
In jedem Fall schlägt Pyrite AES 256 vor,<br />
bietet aber auch andere Verschlüsselungsalgorithmen<br />
an. Das chiffrierte Ergebnis<br />
speichert das Python-Tool in einer Datei<br />
oder verfrachtet es in die Zwischenablage.<br />
Um eine Datei zu verschlüsseln,<br />
klappen Anwender zunächst am unteren<br />
Fensterrand den kleinen, etwas unscheinbaren<br />
Bereich »Input File For Direct Operation«<br />
aus und wählen dann in einem<br />
Dialog die gewünschte Datei aus.<br />
Nach dem gleichen Schema funktioniert<br />
auch das Signieren und Verifizieren. Allerdings<br />
muss der Benutzer hierfür bereits<br />
mit GnuPG auf der Kommandozeile<br />
einen Standardschlüssel festgelegt haben.<br />
Fehler- und Statusmeldungen landen auf<br />
Auch der Gnome-Desktop hat sein eigenes<br />
GnuPG-Frontend: Seahorse [6],<br />
auch bekannt unter »Passwörter und Verschlüsselung«.<br />
<strong>Die</strong> Tester schauten sich<br />
Version 3.6.3 unter Open Suse 12.3 an.<br />
Das Hauptfenster gibt sich recht karg, dafür<br />
aber übersichtlich (siehe Abbildung<br />
7). Es zeigt in einer Liste alle Schlüssel<br />
an, beschränkt die Anzeige auf Wunsch<br />
aber auf die vertrauenswürdigen. Zertifikate<br />
präsentiert Seahorse erst, wenn<br />
der Benutzer über den entsprechenden<br />
Menüpunkt die Darstellung aller Schlüssel<br />
aktiviert.<br />
Ein Doppelklick auf einen Schlüssel öffnet<br />
ein neues Fenster, das Details und<br />
Optionen zum Bearbeiten enthält (Abbildung<br />
8). Hier darf der Anwender dem<br />
Schlüssel ein Foto des Besitzers sowie<br />
mehrere Benutzernamen zuweisen. Beim<br />
Signieren eines Schlüssels fragt auch die<br />
Gnome-Anwendung nach, wie sorgfältig<br />
der Benutzer den Schlüssel geprüft hat.<br />
Des Weiteren erlaubt der Dialog die Passphrase<br />
zu ändern, die Vertrauensstufe zu<br />
setzen, einen Schlüssel zu exportieren<br />
und ein Ablaufdatum zu definieren. Letzteres<br />
darf der Nutzer bequem aus einem<br />
kleinen Kalender picken.<br />
Beim Erstellen eines neuen Schlüssels<br />
greift ein Assistent dem Nutzer unter<br />
die Arme. Er erzeugt auf Wunsch auch<br />
SSH-Passwörter und nimmt einfache<br />
Passwörter zur sicheren Verwahrung entgegen.<br />
Für den GnuPG-Schlüssel dürfen<br />
Anwender den Verschlüsselungsalgorithmus,<br />
die Schlüssellänge und das Ablaufdatum<br />
bestimmen. In der Voreinstellung<br />
schlägt der Seahorse-Assistent RSA mit<br />
einer Schlüssellänge von 2048 Bits vor. Er<br />
prüft aber nicht die Stärke der eingetipp-<br />
www.linux-magazin.de<br />
53<br />
Abbildung 7: Das Hauptfenster von Seahorse<br />
beschränkt sich auf das Notwendigste.<br />
Abbildung 6: Pyrite eignet sich lediglich zum schnellen Ver- und Entschlüsseln von Dateien.
Software<br />
www.linux-magazin.de Bitparade 05/2013<br />
54<br />
gibt es für die fehlenden Hinweise zu den<br />
Installationsvoraussetzungen, die mangelhafte<br />
Dokumentation und Programmabstürze<br />
auf den Testsystemen.<br />
Pyrite landet weit abgeschlagen auf dem<br />
letzten Platz. <strong>Die</strong> Anwendung eignet sich<br />
nur zum schnellen Ver- und Entschlüsseln<br />
beziehungsweise Signieren. Mangels<br />
eigener Schlüsselverwaltung sollten<br />
Benutzer das Python-Programm zurzeit<br />
noch links liegen lassen.<br />
Apropos unbrauchbar: <strong>Die</strong> Qualitätschecks<br />
aller Kandidaten bei der Eingabe<br />
der Passphrase verdienen die Bezeichnung<br />
nicht. Keines der Programme arbeitet<br />
intelligent und bescheinigte im Test<br />
selbst trivialen Kennwörtern ein erschreckend<br />
hohes Niveau. (hej) n<br />
Abbildung 8: Auf dem Reiter »Details« konfigurieren Anwender viele Schlüsseleigenschaften.<br />
ten Passphrase und winkte im Test daher<br />
»123456« ohne Warnung durch.<br />
Seahorse selbst verwaltet die Schlüssel<br />
nur. Ähnlich wie unter KDE erfolgt das<br />
eigentliche Chiffrieren in den anderen<br />
Gnome-Programmen. Dateien verschlüsselt<br />
und signiert etwa Nautilus über die<br />
entsprechenden Punkte im Kontextmenü<br />
der rechten Maustaste. Symmetrische<br />
Verschlüsselung ist auf diesem Weg aber<br />
nicht möglich. Pluspunkte gibt es dafür,<br />
dass Seahorse Schlüssel gleich<br />
mit mehreren Keyservern auf<br />
einmal abgleichen kann.<br />
Aufgeschlüsselt<br />
Grundwissen über Verschlüsselung,<br />
das Public-Key-Verfahren<br />
und GnuPG vorausgesetzt,<br />
erledigen alle Kandidaten ihren<br />
Job. Wer ein möglichst<br />
einfaches Werkzeug für unerfahrene<br />
Endanwender sucht,<br />
der sollte zu Seahorse greifen,<br />
auch wenn das Frontend ausgerechnet<br />
beim Anlegen neuer<br />
Schlüssel mit Abfragen zu<br />
Schlüsseltypen verwirrt. Das<br />
Programm ist zudem auf den<br />
Gnome-Desktop zugeschnitten<br />
und benötigt auf anderen<br />
Oberflächen die entsprechenden<br />
Bibliotheken.<br />
Den größten Funktionsumfang<br />
bietet das Gespann Kgpg und<br />
Kleopatra. <strong>Die</strong> Programme sind aber tief<br />
in KDE verwurzelt und stellenweise unübersichtlich.<br />
Obendrein überschneidet<br />
sich ihr Funktionsangebot: Nicht immer<br />
ist für den Anwender klar, welches der<br />
beiden Werkzeuge er für die jeweilige<br />
Aufgabe heranziehen soll.<br />
Der GNU Privacy Assistant kann in puncto<br />
Funktionsumfang mit den KDE-Siegern<br />
zwar nicht ganz mithalten, läuft aber unter<br />
beliebigen Desktopumgebungen. Abzüge<br />
Tabelle 1: Frontends für GnuPG<br />
Infos<br />
[1] GnuPG: [http:// gnupg. org]<br />
[2] GNU Privacy Assistant:<br />
[ftp:// ftp. gnupg. org/ gcrypt/ gpa]<br />
[3] Kgpg: [http:// utils. kde. org/ projects/ kgpg]<br />
[4] Kleopatra: [http:// www. kde. org/<br />
applications/ utilities/ kleopatra]<br />
[5] Pyrite: [https:// github. com/ ryran/ pyrite]<br />
[6] Seahorse:<br />
[http:// projects. gnome. org/ seahorse]<br />
[7] Pinentry: [http:// www. gnupg. org/ related_<br />
software/ pinentry]<br />
Name GNU Privacy Assistant Kgpg/Kleopatra Pyrite Seahorse<br />
Getestete Version 0.9.3 2.9/2.1.1 1.0.0 3.6.3<br />
GUI-Toolkit GTK+ 2 Qt/KDE Python GTK+/Gnome<br />
Schlüssel erzeugen ja ja nein ja<br />
Revocation Certificate nein ja nein nein<br />
Schlüssel löschen ja ja nein ja<br />
Schlüssel signieren ja ja nein ja<br />
Vertrauensstufe wählen ja ja nein ja<br />
Schlüssel importieren ja ja nein ja<br />
Schlüssel exportieren ja ja nein ja<br />
Sicherheitskopie anlegen ja ja nein ja<br />
Public Key mailen nein ja nein nein<br />
Export/Import von Server ja/ja ja/ja nein ja/ja<br />
Verfallsdatum bearbeiten ja ja nein ja<br />
Passphrase ändern ja ja nein ja<br />
Dateien ver-/entschlüsseln ja/ja ja/ja ja/ja über Nautilus<br />
Dateien signieren ja ja ja über Nautilus<br />
Signatur von Dateien verifizieren ja ja ja über Nautilus<br />
Symmetrische Verschlüsselung nein ja ja nein<br />
Zertifikatsverwaltung ja ja nein ja<br />
Externe Smartcards einbinden ja ja nein nein
Not to Miss at ISC:<br />
NEW Industry track NEW Distinguished speakers series |<br />
Human Brain Project | The largest HPC exhibition in Europe |<br />
TOP500 awarding<br />
Tutorials June 16, 2013<br />
@ Full and half-day tutorials<br />
@ Cover a broad range of HPC areas of interest<br />
Exhibition June 17 – 19, 2013<br />
@ With almost 170 exhibitors from research institutions and industries<br />
representing supercomputing, storage and networking, ISC’13 will<br />
stand out as the largest HPC exhibition in Europe in 2013.<br />
The 2013 Keynotes<br />
@<br />
Future Challenges of Large-Scale Computing<br />
Prof. Dr. Bill Dally, Willard R. and Inez Kerr Bell Professor,<br />
Stanford University & Chief Scientist and SVP of Research, NVIDIA<br />
@ Moore’s Law in the Year 2020<br />
Stephen S. Pawlowski, Senior Fellow, Chief Technology Officer for the<br />
Datacenter & Connected Systems Group (DCSG) & General Manager<br />
for the Architecture Group & DCSG Pathfinding, Intel<br />
@ HPC Achievement & Impact 2013<br />
Prof. Dr. Thomas Sterling, Professor, School of Informatics & Computing<br />
and Chief Scientist & Associate Director, CREST, Indiana University<br />
@<br />
Fooling the Masses with Performance Results:<br />
Old Classics & Some New Ideas<br />
Prof. Dr. Gerhard Wellein, Head of High Performance<br />
Computing Group, Erlangen Regional Computing Center<br />
Top 10 Reasons to Attend ISC’13<br />
@ A great networking event<br />
@ Unmatched access to thought leaders<br />
@ Relevant and practical information<br />
@ Source of inspiration for new ideas and new ventures<br />
@ Sessions organized into new dynamic formats<br />
@ The latest information on the TOP500 systems<br />
@ Your next customer could be here<br />
@ Meet with the specialists who can help solve your problems<br />
@ Gain insight to help advance your career<br />
@ Leipzig is the better Berlin<br />
Conference June 17 – 20, 2013<br />
Conference Highlights<br />
@ State of the Art in Petascale Applications<br />
@ Four-Day Research Track<br />
@ Parallel Programming Models and Tools<br />
@ Analysis of Big Data: Hard Problems for HPC<br />
@ Petascale Computing in the Cloud?<br />
@ HPC Centers Subject to Change<br />
@ Challenges for HPC<br />
@ Panel: Long-Term Investments into Parallel Programming<br />
@ Publication of the 41 st TOP500 list<br />
@ ISC Think Tank series on Big Data<br />
@ HPC in Asia Session<br />
@ Analyst Crossfire<br />
NEW The Industry Track June 18 – 19, 2013<br />
@ The goal of the Industry Track is to help commercial firms make informed<br />
decisions about acquiring and managing HPC systems.<br />
Contributed Sessions<br />
@ Research Papers & Posters<br />
@ Birds-of-a-Feather Sessions (BoFs)<br />
Vendor Sessions<br />
Platinum Sponsors<br />
Partner<br />
Gold Sponsors<br />
Silver Sponsors<br />
For more details,<br />
please visit:<br />
www.isc13.org
Software<br />
www.linux-magazin.de Visualisierungstools 05/2013<br />
56<br />
Log- und andere Daten visualisieren<br />
Malen nach Zahlen<br />
Logdateien enthalten äußerst nützliche Spuren des täglichen Geschehens – wären sie nur nicht immer so<br />
dröge. Glücklicherweise gibt es einige Spezialwerkzeuge, die aus der Datenmasse nicht nur bunte, leicht<br />
interpretierbare Grafiken generieren, sondern diese auch noch über die Zeit animieren. Tim Schürmann<br />
© Gennadiy Poznyakov, 123RF.com<br />
Wer seine Logdateien auswerten will,<br />
greift zu einem Logviewer. <strong>Die</strong>se Werkzeuge<br />
zeigen im einfachsten Fall die Daten<br />
in Tabellenform an, etwas aufgewecktere<br />
Gesellen präsentieren immerhin<br />
kleine Balken-, Torten- oder Liniendiagramme.<br />
<strong>Die</strong>se Grafiken bieten aber meist<br />
nur eine Momentaufnahme. Wesentlich<br />
aufschlussreicher wäre es, etwa die Auslastung<br />
eines Webservers über einen gewissen<br />
Zeitraum zu verfolgen.<br />
Gerade technische Visualisierungen haben<br />
sich Gource, Code_swarm, Logstalgia,<br />
Fudgie, Conky und Cpuplayer in diesem<br />
Test zur Aufgabe gemacht. Jedes der<br />
sechs Programme hat sich dabei auf ein<br />
ganz bestimmtes Anwendungsgebiet spezialisiert.<br />
Logstalgia animiert beispielsweise<br />
die Accesslogs eines Webservers,<br />
während sich Gource der Änderungen in<br />
einer Versionsverwaltung annimmt. Jedes<br />
Tool wählt zudem eine etwas andere<br />
Darstellungsform – Punkte und Kreise<br />
scheinen sich jedoch einer ziemlich großen<br />
Beliebtheit zu erfreuen.<br />
Alle Kandidaten sind für normale Desktop-PCs<br />
ausgelegt und nicht für den<br />
direkten Einsatz auf einem (virtuellen)<br />
Server gedacht. Bis auf wenige Ausnahmen<br />
muss der Administrator<br />
daher die zu<br />
analysierenden Daten<br />
auf seinen Computer<br />
transferieren. Logstalgia<br />
und Gource geben<br />
ihre Grafiken übrigens<br />
über die Open-GL-<br />
Schnittstelle aus.<br />
E Gource<br />
Der Inhalt einer Versionsverwaltung<br />
sieht<br />
wie eine bunte Baumkrone<br />
aus – zumindest<br />
wenn der Admin<br />
Gource [1] darauf ansetzt. Nach dem<br />
Start erscheinen zunächst kleine bunte<br />
Bällchen, die jeweils einer (Quellcode-)<br />
Datei entsprechen. Ihre Farbe hängt vom<br />
Dateityp ab, C++-Dateien erscheinen<br />
beispielsweise blau. Alle Dateien, die<br />
in einem gemeinsamen Verzeichnis liegen,<br />
versammeln sich zu einem kleinen<br />
Haufen. <strong>Die</strong> Verzeichnisstruktur zeichnet<br />
Gource als dünne weiße Äste ein (siehe<br />
Abbildung 1).<br />
<strong>Die</strong> am Projekt beteiligten Entwickler<br />
visualisiert Gource als Spielfiguren. Sie<br />
strahlen mit einem Lichtkegel die Dateien<br />
an, die sie gerade erstellt oder verändert<br />
haben. Ein Projektmanager oder Administrator<br />
kann also anhand jeder Puppe<br />
leicht verfolgen, welche Dateien der zugehörige<br />
Entwickler wann angelegt und<br />
modifiziert hat.<br />
<strong>Die</strong> Visualisierungssoftware zapft für ihre<br />
Zwecke die Repositories von Subversion,<br />
Git, Mercurial und Bazaar an, aufgeweckte<br />
Administratoren können dem<br />
Werkzeug aber auch den Umgang mit<br />
weiteren Logformaten beibringen [2].<br />
Abbildung 1: Hier visualisiert Gource das eigene SVN-Repository, die zugehörige<br />
Animation lässt sich im Bild leider nur schlecht darstellen.
Gource beantwortet vor allem zwei Fragen:<br />
Welche Entwickler waren in der<br />
Vergangenheit besonders aktiv und wie<br />
hat sich die Projektstruktur im Laufe der<br />
Zeit verändert? Bilden sich dichte bunte<br />
Punktehäufchen, so befinden sich viele<br />
unterschiedliche Dateien in einem Verzeichnis,<br />
was ein Indiz für ein schlecht<br />
strukturiertes Projekt sein kann (Abbildung<br />
2). Das gilt auch bei starken Verästelungen,<br />
was auf eine unübersichtliche<br />
Verzeichnisstruktur hindeutet.<br />
Abschließend erhalten Administratoren<br />
noch einen Einblick in die Aktivität des<br />
Projekts: Leuchten viele Lichtkegel auf,<br />
spricht das für eine hohe Geschäftigkeit.<br />
Bei sehr großen Projekten fällt es allerdings<br />
trotz Zeitlupenfunktion und Navigationsmöglichkeit<br />
schwer, im Gewusel<br />
den Überblick zu behalten – so erscheint<br />
beispielsweise der <strong>Linux</strong>-Kernel wie ein<br />
einziges großes Feuerwerk.<br />
E Code_swarm<br />
Eine Alternative zu Gource ist das in Java<br />
geschriebene, schon etwas angestaubte<br />
Code_swarm. Seine Entwickler bezeichnen<br />
es als „Experiment in organischer<br />
Software-Visualisierung“ [3]. Ähnlich<br />
wie Gource animiert Code_swarm die<br />
Änderungen eines Projekts in einer Versionsverwaltung.<br />
Dateien erscheinen als<br />
Punkte, ihre Farbe deutet auch hier auf<br />
den Dateityp hin (Abbildung 3).<br />
Sobald ein Programmierer eine Datei ändert,<br />
wandert der zugehörige Punkt auf<br />
seinen Namen zu. Inaktive Entwickler<br />
blendet Code_swarm langsam aus. Zu-<br />
Logstalgia erwartet<br />
die zugeführten Logdateien<br />
im Commonoder<br />
Combined-Logformat,<br />
wie sie auch<br />
Apache und Nginx<br />
ausgeben.<br />
Jedem Host ist eine<br />
eindeutige Farbe zugeordnet,<br />
in die Logstalgia<br />
auch dessen<br />
Anfragen taucht. So<br />
kann der Admin die<br />
Punkte während des<br />
Abbildung 2: Schon bei wenigen Dateien kann die Ausgabe von Gource Fluges von links nach<br />
unübersichtlich eng werden, wodurch die Details verschwinden.<br />
rechts leichter voneinander<br />
unterscheiden.<br />
sätzlich zeigt ein Histogramm am unteren Sofern der Webserver die Anfrage beantwortet,<br />
schmettert ein kleiner Balken den<br />
Fensterrand die bisherige Aktivität an,<br />
hohe Ausschläge verweisen auf viele Änderungen.<br />
Anders als bei Gource erkennt Anfrage zu einem Fehler führen, fliegt ihr<br />
zugehörigen Punkt zurück. Sollte eine<br />
der interessierte Admin auf den ausgegebenen<br />
Grafiken allerdings grundsätzlich hinaus – in diesem Fall blitzt noch kurz<br />
Punkt über den rechten Bildschirmrand<br />
nur wirre Punktewolken. An der Größe der Statuscode auf.<br />
der Namen lässt sich erahnen, welcher Das dargebotene Pong-Spiel läuft in Echtzeit<br />
ab, wobei Logstalgia gnädigerweise<br />
Entwickler besonders fleißig war.<br />
leere Zeitabschnitte überspringt. Wer<br />
E Logstalgia<br />
einen Internetauftritt mit nur wenigen<br />
Anfragen pro Tag betreut, sieht folglich<br />
Wer seinem Webserver gern mal beim nur wenige Punkte über den Bildschirm<br />
Pong-Spielen zusehen möchte, greift zu flitzen. Umgekehrt erscheint bei einem<br />
Logstalgia [4]. Das kleine Programm sehr hohen Besucheraufkommen bloß<br />
liest Accesslogs und visualisiert die darin noch ein wirrer Pixelbrei.<br />
abgelegten Anfragen als kleine Punkte. Auch wer die Animation mit der Leertaste<br />
anhält oder über [+] und [-] be-<br />
<strong>Die</strong>se wandern von ihrer Ursprungs-IP-<br />
Adresse beziehungsweise dem Domainnamen<br />
am linken Bildschirmrand zu der tut sich schwer damit, das Geschehen<br />
schleunigt beziehungsweise verlangsamt,<br />
auf dem Server angefragten URL am rechten<br />
(Abbildung 4).<br />
lediglich, welcher Host besonders<br />
eindeutig zu interpretieren. Man erkennt<br />
viele<br />
Visualisierungstools 05/2013<br />
Software<br />
www.linux-magazin.de<br />
57<br />
Abbildung 3: <strong>Die</strong> von Code_swarm gezeichneten Grafiken visualisieren die<br />
Dateien in der Versionsverwaltung und erinnern an eine Sternenkarte.<br />
Abbildung 4: Prasseln zu viele Anfragen auf einen Server ein, sieht auch das geübte<br />
Auge den Wald vor lauter Bäumen nicht.
Software<br />
www.linux-magazin.de Visualisierungstools 05/2013<br />
58<br />
Anfragen feuert und wann welche Anfragen<br />
auf welche URLs besonders häufig zu<br />
Fehlermeldungen führten.<br />
Sobald Logstalgia am rechten Bildschirmrand<br />
der Platz ausgeht, fasst es URLs<br />
zusammen, was jedoch andererseits eine<br />
genauere Analyse bei größeren Websites<br />
behindert. Immerhin bildet das Werkzeug<br />
bei Bedarf auch Gruppen, alle angeforderten<br />
Bilder (URLs mit den Endungen<br />
».png«, ».gif« oder ».jpeg«) stehen beispielsweise<br />
am rechten Rand unter der<br />
Überschrift »Images«.<br />
Logstalgia kann auch kontinuierlich ein<br />
Accesslog beobachten, wodurch sich die<br />
Software in ein ansprechendes Monitoring-Werkzeug<br />
verwandelt: Lässt es ein<br />
Administrator nebenher in einem anderen<br />
Fenster laufen, sieht er schon aus<br />
dem Augenwinkel, wenn die Last auf<br />
einem Server überproportional zunimmt,<br />
und kann eingreifen.<br />
E Fudgie<br />
Auch Fudgie [5] hat sich den Accesslogs<br />
verschrieben. Seine Darstellung ähnelt<br />
leicht der von Logstalgia: <strong>Die</strong> auf der<br />
linken Seite aufgelisteten Hosts spucken<br />
ihre Anfragen in Form von Kreisen in die<br />
Mitte des Bildschirms (Abbildung 5). Je<br />
größer der Kreis, desto umfangreicher<br />
war die Anfrage. Auf der rechten Bildschirmseite<br />
stehen die URLs, die ihrerseits<br />
für jede Anfrage einen passenden<br />
Kreis in die Mitte werfen.<br />
Alle dort versammelten Kreise purzeln<br />
schließlich über einen Trichter langsam<br />
aus dem unteren Bildschirmrand heraus.<br />
Zusätzlich berechnet Fudgie die Anzahl<br />
der gestellten Anfragen pro Minute. Auf<br />
Wunsch meldet sich das Tool selbst auf<br />
dem Webserver an und saugt dort die<br />
Logdateien direkt ab.<br />
Anders als bei Logstalgia erkennen Administratoren<br />
hier jedoch nicht, welche<br />
Anfrage für welche URL bestimmt war<br />
oder ob sie zu einem Fehler führte. Sie<br />
sehen lediglich anhand der sich im Trichter<br />
sammelnden Kreise, welcher Host mit<br />
seinen Anfragen die größte Last auf dem<br />
Server erzeugt hat. Aus der am häufigsten<br />
angefragten URL sprudeln zudem die<br />
meisten Kreise. Ein sehr dichter Strahl<br />
lässt dabei auf zahlreiche, schnell nacheinander<br />
gestellte Anfragen schließen,<br />
die einen Server eventuell überlasten.<br />
Abbildung 5: Fudgie wirft Anfragen als Kreise in die Mitte des Bildschirms.<br />
Wer Fudgie ausprobieren möchte, sollte<br />
sich auf eine recht komplizierte Installation<br />
einstellen: Man benötigt eine Ruby-<br />
Umgebung mit ganz bestimmten Ruby-<br />
Gems und muss danach eine Konfigurationsdatei<br />
im Yaml-Format anlegen. Unter<br />
aktuellen Distributionen lässt sich Fudgie<br />
zudem nur mit einigen Verrenkungen und<br />
Ruby-Kenntnissen installieren.<br />
Ubuntu-Nutzer zum Beispiel müssen erst<br />
Ruby 1.9 installieren, dies zum Standard-<br />
Ruby-System erklären, dann im Quellcode<br />
von Fudgie eine Versionsabfrage<br />
entfernen (in der Datei »lib/gl_tail.rb«<br />
in Zeile 28 das Komma und alle nachfolgenden<br />
Zeichen löschen) und noch alle<br />
nach und nach von Fudgie eingeforderten<br />
Gems einspielen.<br />
Abschließend funktionierte beim Test zu<br />
diesem Artikel der Trichter nicht, alle<br />
Kreise fielen direkt in den Abgrund. Da<br />
will man nicht widersprechen, wenn<br />
der Fudgie-Autor höchstselbst seinen<br />
Programmcode als „furchtbar“<br />
bezeichnet.<br />
E Conky<br />
<strong>Die</strong> Prozessoraktivität und Systemauslastung<br />
visualisieren<br />
mittlerweile unzählige kleine<br />
Programme, viele von ihnen<br />
stecken in den Repositories der<br />
Distributionen. Hinzu kommen<br />
entsprechende Widgets beziehungsweise<br />
Miniprogramme<br />
der Desktopumgebungen. Aus<br />
der Masse heraus sticht das äußerst<br />
beliebte Conky, das mit<br />
besonders vielen Gesichtern<br />
aufwartet [6].<br />
Im Gegensatz zu einigen seiner Konkurrenten<br />
können Anwender die Darstellung<br />
der Prozessor-Aktivität beziehungsweise<br />
-Auslastung selbst beeinflussen und konfigurieren.<br />
Standardmäßig erscheinen die<br />
Informationen als Zahlen, simple Balken<br />
oder in Form eines Histogramms. Normalerweise<br />
schreibt Conky dabei seine Ausgaben<br />
direkt auf den Desktop, genauer<br />
gesagt auf das Root-Window (Abbildung<br />
6). Auf Wunsch präsentiert Conky die Informationen<br />
aber auch in einem eigenen<br />
(transparenten) Fenster.<br />
Über eine Konfigurationsdatei dürfen<br />
Admins der Darstellung deutlich mehr<br />
Pep geben. Dabei lässt ihnen das Tool<br />
weitgehend freie Hand: Angefangen bei<br />
der Farbwahl bis hin zu gekrümmten Balken<br />
ist fast alles möglich (Abbildung 7).<br />
Beispiele stehen zuhauf im Internet, eine<br />
kleine Galerie besonders außergewöhnlicher<br />
Darstellungsformen liefert ein Blogbeitrag<br />
von Pushakr Gaur [7].<br />
Abbildung 6: Mit der mitgelieferten einfachen Konfigurationsdatei<br />
sieht Conky wenig ansehnlich aus.
Abbildung 7: Mit einer entsprechend angepassten Konfigurationsdatei sieht Conky beispielsweise wie in diesem<br />
Bild aus. Im Internet findet der Admin zahlreiche Konfigurationsbeispiele und Tuning-Tipps.<br />
Pfiffig war auch die Idee von Henrik Brix<br />
Andersen: Er wählte als Hintergrundbild<br />
eine Zeichnung seines Notebooks und<br />
platzierte die Conky-Informationen mit<br />
Pfeilen an den entsprechenden Stellen<br />
[8]. Letztlich stecken in diesen Grafiken<br />
wieder nur unterschiedlich stark<br />
geschwungene Balkendiagramme und<br />
geschickt platzierte Zahlen, die zum Teil<br />
schwieriger zu erfassen sind als ihre geraden<br />
Pendants.<br />
Neben der Prozessorauslastung kann<br />
Conky noch viele weitere Systeminformationen<br />
anzeigen und visualisieren. Dazu<br />
zählen nicht nur der ein- und ausgehende<br />
Netzwerkverkehr oder der Speicherbedarf.<br />
Das Werkzeug meldet sogar eingehende<br />
E-Mails und erlaubt es, den schon<br />
recht angestaubten Audioplayer XMMS<br />
zu integrieren. Insgesamt bietet Conky<br />
von Haus aus über 250 Datenquellen an.<br />
Weitere Funktionen und Informationslieferanten<br />
rüsten Anwender über Shelloder<br />
Lua-Skripte nach.<br />
Standardmäßig präsentiert Conky nur<br />
die aktuellen Daten des gerade laufenden<br />
Systems. Aufgezeichnete Daten muss<br />
man mit Hilfe eines entsprechenden<br />
Skripts selbst einlesen, aufbereiten und<br />
dann von Conky anzeigen lassen. Umgekehrt<br />
zeichnet Conky aber bei Bedarf die<br />
angezeigten Daten in einer Logdatei auf.<br />
E Cpuplayer<br />
Einen etwas anderen Ansatz verfolgt der<br />
Cpuplayer [9]: Er verwendet ein baryzentrisches<br />
Koordinatensystem [10]. Was<br />
kompliziert klingt, entpuppt sich als ein<br />
Dreieck, in dem jeder Prozessor als Punkt<br />
erscheint. Dreht einer der Prozessoren<br />
Däumchen, wandert sein Punkt in die<br />
linke untere Ecke, rechnet er angestrengt,<br />
läuft er zur Spitze. Bei einer hohen Systemtime<br />
klebt er rechts unten.<br />
Durch die Position innerhalb des Dreiecks<br />
lässt sich sehr gut ablesen, welcher<br />
Prozessor gerade wie stark von wem ausgelastet<br />
ist. Ein buntes Gitter ermöglicht<br />
zudem das recht genaue Ablesen der<br />
jeweiligen Last: Der Admin muss nur ermitteln,<br />
in welchem kleinen Gitterdreieck<br />
der Prozessor liegt, dann den Gitterlinien<br />
zum Rand folgen und die Skala ablesen.<br />
<strong>Die</strong> Darstellung in einem Dreieck ist etwas<br />
unkonventionell, nach einer kurzen<br />
Gewöhnungsphase lässt sie sich jedoch<br />
schneller und vor allem genauer erfassen,<br />
als es die kleinen Balkendiagramme<br />
der Konkurrenz gestatten.<br />
Dummerweise kann der Cpuplayer nicht<br />
einfach das gerade laufende System beobachten,<br />
sondern visualisiert lediglich<br />
vorangegangene Aufzeichnungen. <strong>Die</strong><br />
müssen zudem in einem ganz speziellen<br />
Datenformat vorliegen. <strong>Die</strong> beispielsweise<br />
mit »mpstat« aufgezeichneten Daten<br />
muss der Administrator daher erst<br />
noch mit Hilfe eines selbst geschriebenen<br />
Skripts umwandeln. Cpuplayer zeigt zudem<br />
nur die Veränderung der Auslastung<br />
über die Zeit: Warum plötzlich der Kernel<br />
einen Prozessor stark einspannt, muss<br />
der Nutzer selbst herausfinden.<br />
Fazit<br />
Abbildung 8: Der Cpuplayer zeigt im Beispielbild<br />
vier aktive Prozessoren an, von denen jedoch nur<br />
einer richtig ausgelastet ist.<br />
Alle vorgestellten Programme gewähren<br />
völlig neue und zum Teil faszinierende<br />
Einblicke in Accesslogs, Versionsverwaltungen<br />
und Prozessorauslastung. <strong>Die</strong><br />
Aussagekraft der erzeugten Bilder und<br />
Animationen ist jedoch begrenzt: Wenn<br />
dem Administrator wie in Logstalgia nur<br />
noch bunte Punkte wirr um die Ohren<br />
fliegen, ist er trotz der hübschen Oberfläche<br />
am Ende kaum schlauer als bei<br />
einem Blick in das sehr textlastige Accesslog<br />
selbst.<br />
Für andere Aufgaben eignen sich die<br />
grafischen Log-Auswerter schon eher. So<br />
können die Werkzeuge dem Admin einen<br />
ersten Fingerzeig auf (sich anbahnende)<br />
Probleme geben. Sausen beispielsweise<br />
bei Logstalgia zu viele Punkte mit einem<br />
404-Fehler am Schläger vorbei, scheint<br />
sehr wahrscheinlich etwas mit den Links<br />
auf der Website nicht zu stimmen. Ob<br />
dem tatsächlich so ist, müssen dann weitere<br />
Untersuchungen mit anderen Programmen<br />
zeigen.<br />
<strong>Die</strong> meisten der vorgestellten Programme<br />
bieten auf ihrer Homepage ein Video an,<br />
das Administratoren einen recht guten<br />
Überblick von den Möglichkeiten vermittelt.<br />
Letztendlich macht es aber auch<br />
einfach mehr Spaß, dabei zuzusehen,<br />
wie die Kreise in den Trichter oder die<br />
Punkte gegen einen Schläger fliegen, als<br />
sich durch die langen Zahlenkolonnen<br />
der Logdateien zu wühlen. (kki) n<br />
Infos<br />
[1] Gource:<br />
[http:// code. google. com/ p/ gource/]<br />
[2] Gource, Custom-Log-Format:<br />
[http:// code. google. com/ p/ gource/ wiki/<br />
CustomLogFormat]<br />
[3] Code_swarm: [http:// www. michaelogawa.<br />
com/ code_swarm/]<br />
[4] Logstalgia:<br />
[http:// code. google. com/ p/ logstalgia/]<br />
[5] Fudgie: [http:// www. fudgie. org]<br />
[6] Conky:<br />
[http:// conky. sourceforge. net/ index. html]<br />
[7] Hitliste mit Conky-Konfigurationen:<br />
[http:// gorgod. blogspot. de/ 2011/ 11/ top‐10<br />
‐unique‐conky‐configurations‐till. html]<br />
[8] Wallpaper als Systemmonitor:<br />
[http:// blog. brixandersen. dk/ 2007/ 09/ 23/<br />
system‐monitoring‐wallpaper/]<br />
[9] Cpuplayer: [http:// www.<br />
systemdatarecorder. org/ cpuplayer/]<br />
[10] Wikipedia-Eintrag zu baryzentrischen Koordinaten:<br />
[http:// de. wikipedia. org/ wiki/<br />
Baryzentrische_Koordinaten]<br />
Visualisierungstools 05/2013<br />
Software<br />
www.linux-magazin.de<br />
59
Software<br />
www.linux-magazin.de Tooltipps 05/2013<br />
60<br />
Werkzeuge im Kurztest<br />
Tooltipps<br />
Check Logfiles 3.5.3.1<br />
Nagios-Plugin für Logdateien<br />
Quelle: [http:// labs. consol. de/ nagios/<br />
check_logfiles]<br />
Lizenz: GPLv2<br />
Alternativen: Check Mk, Logwarn<br />
Rf 0.4.4<br />
RSS-Feedreader für die Konsole<br />
Quelle: [http:// code. google. com/ p/ readfeed]<br />
Lizenz: GPLv3<br />
Alternativen: Snownews, Newsbeuter<br />
Fdm 1.7<br />
E-Mails abrufen<br />
Quelle: [http:// fdm. sourceforge. net]<br />
Lizenz: ISC<br />
Alternativen: Fetchmail, Getmail<br />
<strong>Die</strong> offiziellen Nagios-Plugins enthalten<br />
Skripte, die rotierte Protokolldateien<br />
nicht erfassen. So entstehen Lücken in<br />
der Überwachung. <strong>Die</strong>se Mängel behebt<br />
das Perl-Skript Check Logfiles, das auch<br />
ad acta gelegte Protokolle untersucht. Es<br />
alarmiert den Admin bei kritischen Einträgen<br />
in einem Log und löst optional<br />
Aktionen unmittelbar nach einem Treffer<br />
oder bei Laufzeitende aus.<br />
Das Tool durchsucht die Protokolle mit<br />
regulären Ausdrücke. In der aktuellen<br />
Version schaltet ein Parameter die Case<br />
Sensivity ab. Zu allen Mustern darf der<br />
Admin Ausnahmen definieren. Er kann<br />
auch die Länge der Ausgabezeile beschränken<br />
und Optionen in der Konfiguration<br />
mit Makros belegen.<br />
Welche Logfiles das Werkzeug im Auge<br />
behält, legt der Anwender beim Aufruf<br />
fest. Dabei sorgt die Option »‐‐rotation«<br />
dafür, dass rotierte Protokolle nicht außen<br />
vor bleiben. Auf Wunsch erzeugt<br />
»‐‐report« einen umfassenden Bericht<br />
des letzten Durchlaufs im HTML-Format.<br />
Weitere Parameter sowie Informationen<br />
zur Konfiguration und zur Zusammenarbeit<br />
mit externen Programmen erklärt<br />
die sehr ausführliche Dokumentation der<br />
Projekthomepage.<br />
★★★★★ Check Logfiles behält Protokolldateien<br />
im Auge. Dabei ist das Tool<br />
nicht auf Systemlogs beschränkt. Im Netz<br />
zeigen etliche Anleitungen die Zusammenarbeit<br />
mit anderen Protokollen. n<br />
Der Name ist Programm: Readfeed (Rf)<br />
liest und verwaltet Newsfeeds. Das Shellskript<br />
erfordert kaum Konfiguration, ist<br />
anschließend sofort einsatzbereit und<br />
tickert News im RSS- und Atom-Format.<br />
<strong>Die</strong> Datei »~/.rf/feeds« enthält die Feed-<br />
Adressen. Eine Vorlage mit interessanten<br />
Links liefert das Quellarchiv mit. Sie landet<br />
im Verzeichnis »/usr/share/doc/rf«.<br />
Nach dem Kopieren passen Anwender<br />
das Template mit einem Texteditor der<br />
Wahl an eigene Wünsche an.<br />
Eine Liste aller verfügbaren Feeds zeigt<br />
»rf ‐l« an. Zusammen mit dem Namen<br />
einer Kategorie aufgerufen blendet Rf<br />
dann die letzten Schlagzeilen ein. Vor der<br />
jeweiligen Headline steht eine Nummer.<br />
<strong>Die</strong>se geben Benutzer hinter »rf ‐d« an,<br />
um die ersten paar Zeilen eines Artikels<br />
zu betrachten. Wer gerne die URL zur<br />
Meldung in Erfahrung bringen möchte,<br />
ruft das Tool zusammen mit »‐n« und der<br />
Nummer der Schlagzeile auf. Mehr Parameter<br />
und Optionen kennt das Programm<br />
nicht, eine Verlängerung der Cachezeit<br />
(Voreinstellung: 30 Minuten) ist ebenfalls<br />
nicht vorgesehen.<br />
★★★★★ Rf ist ein praktischer Feedreader<br />
für Konsolenfans. Das Tool verwaltet<br />
RSS- und Atom-Feeds und präsentiert die<br />
Neuigkeiten übersichtlich auf der Standardausgabe<br />
– prima zur Weiterverarbeitung<br />
in eigenen Skripten.<br />
n<br />
Fdm (Fetch and deliver mail) lädt E-Mails<br />
via POPs(S) und IMAP(S) herunter, speichert<br />
sie lokal in Maildir-Verzeichnissen<br />
beziehungsweise Mbox-Dateien oder<br />
reicht sie zum Weiterverarbeiten an andere<br />
Programme weiter. Darüber hinaus<br />
liest das Tool eingehende elektronische<br />
Post von der Standardeingabe, was die<br />
Kombination mit anderen Anwendungen<br />
oder das Einbinden in eigene Skripte ermöglicht.<br />
Zahlreiche Parameter oder auch reguläre<br />
Ausdrücke filtern die Mails vor der<br />
Ablage. So begrenzen Nutzer beispielsweise<br />
die Größe der heruntergeladenen<br />
Nachrichten. Fdm sortiert ebenfalls nach<br />
Absenderadressen. Anwender dürfen verschiedene<br />
Aktionen definieren, um etwa<br />
Mails zu verwerfen oder Kopien auf dem<br />
Server zu belassen. Das Tool ist zudem<br />
in der Lage, Elemente aus dem Mailheader<br />
zu entfernen oder hinzuzufügen.<br />
Zusammen mit anderen Tools wie Sed<br />
überarbeitet Fdm sogar den Inhalt der<br />
elektronischen Post.<br />
<strong>Die</strong> systemweite Konfiguration befindet<br />
sich in »/etc/fdm.conf«, die persönliche in<br />
»~/.fdm.conf«. Alternativ dürfen Anwender<br />
über »‐f« eine andere Einrichtungsdatei<br />
übergeben. Eine eigene Manpage zu<br />
»fdm.conf« erklärt alle Optionen.<br />
★★★★★ Fdm ist eine leistungsfähige<br />
Alternative zu Fetchmail & Co. n
Iotop 0.5<br />
I/O-Durchsatz beobachten<br />
Quelle: [http:// guichaz. free. fr/ iotop]<br />
Lizenz: GPLv2<br />
Alternativen: Iostat, Atop<br />
Rainbarf 0.6<br />
Monitor für Terminal-Multiplexer<br />
Quelle: [https:// github. com/ creaktive/<br />
rainbarf]<br />
Lizenz: GPLv1/Artistic License<br />
Alternativen: Tmux-Powerline<br />
Das Python-Skript ermittelt die aktuelle<br />
I/O-Auslastung des Systems. Iotop stellt<br />
den Verbrauch der jeweiligen Prozesse in<br />
einer Top-ähnlichen Tabelle dar. Um die<br />
Werte zu ermitteln, greift das Tool auf<br />
Kernelfunktionen zurück, die seit Version<br />
2.6.20 enthalten sind. Es erfordert Rootrechte<br />
und nistet sich in dem Verzeichnis<br />
»/sbin« ein.<br />
Für jeden Prozess zeigt es den aktuellen<br />
Schreib- und Lesedurchsatz und das Swap-<br />
Volumen an. <strong>Die</strong> Kopfzeile der Tabelle<br />
gibt Auskunft über den Gesamtdurchsatz<br />
pro Sekunde. Genau wie bei Top dürfen<br />
Anwender die Prozesse in der Ausgabe<br />
selbst sortieren. Über die Pfeiltasten beeinflussen<br />
sie die Anzeige. Ein Druck auf<br />
[R] invertiert die Darstellung. In neuen<br />
Versionen zeigt [P] statt aller Threads nur<br />
die Prozesse an, und [I] beeinflusst den<br />
I/O-Nicelevel.<br />
Neben dieser interaktiven Ansicht bietet<br />
das Tool auch einen Batchmodus, den<br />
die Aufrufoption »‐b« initiiert. <strong>Die</strong> Daten<br />
erscheinen dann zwar nur noch rudimentär<br />
formatiert, der Modus eignet sich aber<br />
ideal für den Einsatz in eigenen Skripten.<br />
Der Parameter »‐t« versieht die Ausgaben<br />
zusätzlich mit einem Zeitstempel, »‐o«<br />
zeigt nur jene Prozesse an, die genau in<br />
diesem Moment I/O-Last erzeugen. Um<br />
die Ausgabe nach Prozessen einzelner<br />
Benutzer zu filtern, übergeben Benutzer<br />
die Option »‐u«. Sind die Informationen<br />
weiterhin zu umfangreich, blendet »‐p«<br />
außerdem alle Threads aus.<br />
★★★★★ Iotop beobachtet den aktuellen<br />
Datendurchsatz eines Systems und gibt<br />
so Auskunft über mögliche Engpässe.<br />
Das Tool steuern Anwender entweder<br />
über Aufrufoptionen im Batchmodus<br />
oder interaktiv über die Tastatur. n<br />
Rainbarf bringt Farbe ins Leben von<br />
Screen- oder Tmux-Anwendern. Der Systemmonitor<br />
nistet sich in der Statuszeile<br />
der Terminal-Multiplexer ein und zeigt<br />
die CPU-Auslastung, die Speichernutzung<br />
und bei Notebooks die Batteriebelastung<br />
an. Grün repräsentiert freien Speicher,<br />
Gelb den aktiven. Inaktiven Speicher<br />
stellt Rainbarf blau dar, Cache-Memory<br />
leuchtet in Cyan. Zusätzlich zeichnet das<br />
Tool für die CPU-Auslastung einen schattierten<br />
Blockgraphen, und der Ladestatus<br />
des Akkus erscheint als kleines Icon am<br />
rechten Rand.<br />
Das Perl-Skript ermittelt den Systemstatus<br />
nicht selbst, sondern wertet die Daten<br />
aus dem »/proc«-Verzeichnis aus. Wird<br />
es dort nicht fündig, greift es auf Acpi<br />
und Top zurück. Auch unter OS X funktioniert<br />
das Ganze; Rainbard befragt hier<br />
ebenfalls Top und macht somit auch auf<br />
Apple-Terminals eine gute Figur.<br />
Einfluss auf das Erscheinungsbild nehmen<br />
Benutzer über Kommandozeilen-<br />
Parameter. Mit diesen passen sie nicht<br />
nur die Farbe an, sondern auch die Anordnung<br />
der Informationen. Um Rainbarf<br />
direkt zusammen mit Tmux zu starten,<br />
integrieren Anwender den Monitor in die<br />
Tmux-Konfigurationsdatei. <strong>Die</strong> Webseite<br />
des Projekts zeigt ebenfalls, wie die Zusammenarbeit<br />
mit Screen gelingt. Entsprechende<br />
Beispiele sowie eine Liste<br />
aller Parameter und Optionen sind dort<br />
ebenfalls zu finden.<br />
★★★★★ Rainbarf ist ein Teamplayer und<br />
arbeitet wahlweise mit Tmux oder Screen<br />
zusammen. In deren Statusbalken informiert<br />
es zuverlässig und in Farbe über die<br />
Systemlast und den Batteriezustand. (U.<br />
Vollbracht/hej)<br />
n
1Gbit/s<br />
Port
Software<br />
www.linux-magazin.de Libre Office 4.0 05/2013<br />
64<br />
Libre Office 4.0 im Test<br />
Nun geht’s rund<br />
Libre Office nullt und stellt zum ersten Mal eine 4 voran. Alle Module bieten zahlreiche Verbesserungen und<br />
zu einer Majorversion angemessene Neuerungen. Der Test zeigt, ob es Grund zum Feiern gibt. Heike Jurzik<br />
© Isabel Poulin, 123RF.com<br />
Anfang Februar veröffentlichten die<br />
Libre-Office-Entwickler Version 4.0 des<br />
freien Büropakets [1]. Schon auf der diesjährigen<br />
Fosdem [2] konnten Anwender<br />
am Libre-Office-Stand und in diversen<br />
Vorträgen die neuen Features und Funktionen<br />
bewundern. Dass das Büropaket<br />
deutlich flotter zu Werke geht, ist sicherlich<br />
den gründlichen Aufräumarbeiten im<br />
Quellcode zu verdanken. Wie so etwas<br />
bei einem solch großen Projekt abläuft,<br />
veranschaulichte unter anderem der<br />
Talk von Michael Meeks „The story of<br />
cleaning and re-factoring a giant codebase“<br />
[3].<br />
Inzwischen hat das Projekt eine erste verbesserte<br />
und fehlerbereinigte Fassung mit<br />
der Nummer 4.0.1 veröffentlicht. Auf den<br />
beiden Testrechnern mit Ubuntu 12.10<br />
(Quantal Quetzal) und 12.04 LTS (Precise<br />
Pangolin) installierten die Tester Version<br />
4.0.1 vom 5. März 2013. Dazu entfernten<br />
sie wie empfohlen zunächst die von der<br />
Distribution ausgelieferte Version der Office-Suite<br />
und spielten danach die Libre-<br />
Office-Pakete von Hand ein.<br />
Vorbereitungen zur Party<br />
<strong>Die</strong> Entwickler trennten sich von einigen<br />
Java-Altlasten und implementierten den<br />
Fax- und Brief-Assistenten in Python. Das<br />
eigene Suchmodul ersetzten sie durch<br />
das schnellere und kleinere für reguläre<br />
Ausdrücke von ICU (International Components<br />
for Unicode, [4]). ODS-, XLSXund<br />
RTF-Dokumente sind nun insgesamt<br />
flotter geladen; das gilt vor allem für Präsentationen,<br />
die Folien mit vielen Fanglinien<br />
enthalten. Libre Office 4.0 erzeugt<br />
schneller <strong>Vorschau</strong>en für Medien und<br />
eingebettete Videos und integriert dank<br />
des neuen Sitzungs-Installers zusätzliche<br />
Komponenten im laufenden Betrieb.<br />
An der Front der proprietären Dokumentformate<br />
hat sich ebenfalls etwas getan.<br />
<strong>Die</strong> Macher spendierten einen neuen Importfilter<br />
für Microsoft Publi sher und besseren<br />
Support für das Visio-Dateiformat<br />
(Versionen von Visio 1.0 bis Microsoft Visio<br />
2013). Dateien aus Dokumentmanagement-Systemen<br />
wie Alfresco, Sharepoint<br />
und Nuxeo sind nun dank der neuen<br />
CMIS-Protokoll-Unterstützung ebenfalls<br />
zugänglich (siehe den entsprechenden<br />
Artikel in dieser Ausgabe).<br />
<strong>Die</strong> Entwickler haben aber nicht nur<br />
Neues hinzugefügt, sondern auch aufgeräumt<br />
und alte Zöpfe abgeschnitten.<br />
Außer der Unterstützung für Windows<br />
2000 fallen der Support für ältere Star-<br />
Office-Filter (Versionen 1.x bis 5.x) und<br />
der Export in ältere Word- und Excel-<br />
Formate (Version 6.0/95) weg. Anwender<br />
können diese Dateien weiterhin öffnen,<br />
Writer und Impress speichern sie aber im<br />
eigenen Standardformat ODT und ODS.<br />
Im Designerkleid<br />
Libre Office 4.0 hat sich hübsch gemacht<br />
– ab sofort sorgen Firefox-Personas [5]<br />
für den individuellen Look. In den Programmeinstellungen<br />
wählen Anwender<br />
zwischen der normalen Ansicht oder<br />
einem Browser-Theme (Abbildung 1).<br />
Ebenfalls an seinem Look & Feel gearbeitet<br />
hat der neue Template-Manager. Der<br />
Dialog »Dokumentvorlagen verwalten«<br />
bietet komfortablen Zugriff auf mitgelieferte<br />
und eigene Vorlagen.<br />
Grafiken in Draw, Impress und Calc manipulieren<br />
Anwender nun direkt und ohne<br />
Umweg über externe Tools. Dazu klicken<br />
sie ein Bild mit der rechten Maustaste<br />
an und wählen aus dem Kontextmenü<br />
beispielsweise »Grafik verkleinern«. Ein<br />
Dialog zeigt die Originalmaße an und
Abbildung 1: Wer die Firefox-Personas mag, der dürfte sich über das neue Feature in Libre Office 4.0 freuen.<br />
bietet über Checkboxen und Eingabefelder<br />
die Möglichkeit, eine Grafik an eigene<br />
Wünsche anzupassen (siehe Abbildung<br />
2). Ein Klick auf »Berechnen« zeigt hinter<br />
»Neue Kapazität« an, wie viel Platz die<br />
veränderte Grafik braucht. Das Feature<br />
fehlt in Writer bislang noch.<br />
Formales Ereignis<br />
Apropos Format: Benutzer dürfen ab sofort<br />
Formatvorlagen per Rechtsklick verbergen.<br />
Ein Dropdown-Menü im unteren<br />
Bereich des Dialogs enthält Filter, die alle<br />
Vorlagen, die verwendeten, Benutzervorlagen<br />
oder eben versteckte einblenden.<br />
Ein Rechtsklick auf einen verborgenen<br />
Eintrag – und »Anzeigen« bringt ihn wieder<br />
zum Vorschein. Eine kleine Verbesserung<br />
mit Aha-Effekt ist die <strong>Vorschau</strong>funktion,<br />
die Anwendern im Ausklappmenü<br />
»Vorlage anwenden« einen Ausblick auf<br />
alle Formatvorlagen bietet.<br />
<strong>Die</strong> Behauptung, dass Libre Office Unity-<br />
Fans mit einem globalen Menü beglückt,<br />
erweist sich allerdings als Zukunftsmusik.<br />
Das Feature ist zwar bereits in den<br />
Libre-Office-Code eingeflossen, wird aber<br />
nach Aussage der Entwickler erst Benutzer<br />
von Ubuntu 13.04 (Raring Ringtail) in<br />
dessen Genuss bringen.<br />
Geburtstagskarte<br />
Eine oft gewünschte Funktion hält in<br />
Libre Office Writer Einzug, die die Zusammenarbeit<br />
mehrerer Anwender an<br />
Dokumenten sicherlich maßgeblich verbessert.<br />
Kommentare durften Anwender<br />
bisher nur im Text verankern. Jetzt ist<br />
es möglich, gezielt Bereiche zu markieren,<br />
sodass noch besser sichtbar wird,<br />
auf welchen Teil sich eine Anmerkung<br />
bezieht (Abbildung 3). Als praktisch erweist<br />
sich auch, dass Writer nun Feldbefehle<br />
markiert, wenn ein Nutzer diese<br />
einmal anklickt. In den Vorgängerversionen<br />
tauchte lediglich der Cursor an der<br />
Position vor dem Feld auf.<br />
Das Textverarbeitungsmodul erkennt und<br />
importiert nun Freihandanmerkungen,<br />
die Benutzer in DOCX- und RTF-Dokumenten<br />
auf Tablet-PCs gemacht haben.<br />
Mehr Flexibilität bieten auch die Seitenvorlagen,<br />
die abweichende Kopf- und<br />
Fußzeilen auf der ersten Seite erlauben.<br />
Das Feature kommt allen Schreiberlingen<br />
zugute, die ihren Dokumenten Titelblätter<br />
ohne Header und Footer beifügen<br />
möchten.<br />
Wer oft mit Formeln in Writer hantieren<br />
muss, der kann jetzt Math-Formeln mit<br />
RTF-Dokumenten austauschen. Außerdem<br />
ist es möglich, andere Zeichen als<br />
Leerstellen als Worttrenner zu definieren.<br />
Ein Blick in die Optionen unter »LibreOffice<br />
Writer | Allgemein | Wortzählung«<br />
zeigt, dass lange und kurze Gedankenstriche<br />
in der Voreinstellung als Trenner<br />
definiert sind; Anwender dürfen die Liste<br />
beliebig verändern.<br />
Fete planen<br />
Calc öffnet ODS-Dokumente schneller,<br />
rendert Diagramme besser und behält<br />
zwischengespeicherte Werte bei, das<br />
Libre Office 4.0 05/2013<br />
Software<br />
www.linux-magazin.de<br />
65<br />
Abbildung 2: In diesem Dialog komprimieren Anwender<br />
Grafiken und verändern deren Größe.<br />
Abbildung 3: Mit der neuen Kommentarfunktion markieren Anwender Textpassagen und fügen dann ihre<br />
Anmerkungen hinzu. Writer kennzeichnet diese deutlich.
Software<br />
www.linux-magazin.de Libre Office 4.0 05/2013<br />
66<br />
heißt, die Tabellenkalkulation zeigt die<br />
Werte so an, wie sie beim letzten Speichern<br />
waren, und berechnet sie nicht<br />
neu. Das erleichtert Benutzern die Arbeit,<br />
die Dokumente auch auf anderen<br />
Plattformen oder in anderen Programmen<br />
bearbeiten. In der Vergangenheit hat Calc<br />
vor allem im Austausch mit Microsoft<br />
Excel abweichende Ergebnisse geliefert.<br />
Wer das Feature nicht nutzen möchte, der<br />
schaltet es in den Optionen im Bereich<br />
»Formeln« ab.<br />
Präsente<br />
Abbildung 4: Der neue Gnumeric-Importfilter liefert noch keine brauchbaren Ergebnisse.<br />
<strong>Die</strong> Entwickler haben zudem einige<br />
Funktionen, zum Beispiel »XODER()«,<br />
»MITTELWERTWENN()«, »SUMME-<br />
WENNS()«, »ZÄHLENWENNS()« und<br />
»WENNFEHLER()« erstmalig implementiert.<br />
Der neue Dialog »XML‐Quelle« ermöglicht<br />
es, beliebige XML-Inhalte in<br />
Calc zu importieren.<br />
Work in Progress ist derzeit noch der<br />
Gnumeric-Importfilter. Wer diesen testen<br />
und Feedback geben möchte, der aktiviert<br />
in den Einstellungen unter »Libre-<br />
Office | Erweitert« die experimentellen<br />
Funktionen. Noch gibt es allerdings einiges<br />
zu tun (siehe Abbildung 4), beispielsweise<br />
stürzte im Test die Bürosuite<br />
reproduzierbar ab, wenn beim Einlesen<br />
einer Gnumeric-Datei noch keine Calc-<br />
Tabelle geöffnet war.<br />
Eines der Highlights der neuen Libre-<br />
Office-Version ist die Fernbedienung per<br />
Android-Smartphone; die App Libre Office<br />
Impress Remote steht bei Google Play<br />
zum Download bereit [6]. Das Handy<br />
kommuniziert über Bluetooth mit dem<br />
Rechner, schaltet Impress nach Auswahl<br />
einer Präsentation sofort in den Vollbildmodus<br />
für Vorführungen und erlaubt<br />
es, in den Folien über Wischgesten oder<br />
optional mit den Lautstärketasten des<br />
Handys zu navigieren. Am oberen Rand<br />
blendet die App die Uhrzeit ein, damit<br />
Vortragende diese gut im Blick haben<br />
(siehe Abbildung 5).<br />
Derzeit kommen nur Android-Nutzer in<br />
den Genuss dieser Fernbedienungssoftware.<br />
Nach Aussagen der Entwickler gibt<br />
es nur Pläne für eine Blackberry-App.<br />
Andere Plattformen wie I-OS, Tizen, Nokia,<br />
Windows Phone 8 und so weiter<br />
schließen sie aber nicht aus – sollte sich<br />
ein Entwickler finden, der ein solches<br />
Projekt in Angriff nehmen möchte, ist er<br />
mehr als willkommen.<br />
Happy Birthday!<br />
<strong>Die</strong> neue Version ist eine gelungene<br />
und runde Sache – Libre Office feiert<br />
zu Recht die 4.0 im Namen. <strong>Die</strong> verbliebenen<br />
kleinen Schönheitsfehler beheben<br />
die Entwickler sicher bald in einer der<br />
kommenden Point-Releases. Eine Liste<br />
mit bekannten Problemen und einen Link<br />
zum Bugtracker-Wunschzettel finden Anwender<br />
unter [7].<br />
n<br />
Abbildung 5: Impress-Präsentationen steuern Besitzer eines Android-Smartphones nun bequem über das<br />
Handy. <strong>Die</strong> App bietet zwei Ansichtsmodi – alle Folien auf einen Blick und einzelne Slides zum Durchwischen.<br />
Infos<br />
[1] Libre Office: [http:// de. libreoffice. org]<br />
[2] Bericht zur Fosdem 2013: [http:// www.<br />
linux‐magazin. de/ NEWS/ FOSDEM‐2013‐Libre‐<br />
Office‐4‐wird‐schneller‐kompatiblerund‐laesst‐sich‐von‐Android‐App‐steuern]<br />
[3] Fosdem-Vorträge zu Libre Office:<br />
[https:// wiki. documentfoundation. org/<br />
Marketing/ Events/ Fosdem2013]<br />
[4] ICU-Regexp-Modul: [http:// userguide.<br />
icu‐project. org/ strings/ regexp]<br />
[5] Firefox-Personas:<br />
[http:// www. getpersonas. com/ de]<br />
[6] Libre Office Impress Remote:<br />
[https:// play. google. com/ store/ apps/<br />
details? id=org. libreoffice. impressremote]<br />
[7] Bekannte Probleme: [http:// de. libreoffice.<br />
org/ download/ 4‐0‐neuerungen/ # Bugs]
Aus dem Alltag eines Sysadmin: Munin überwacht SNMP-fähige Geräte<br />
Gute Ersatzspieler<br />
Einführung 05/2013<br />
Sysadmin<br />
Was ist zu tun, wenn das System-Monitoringtool Munin für ein Gerät mal keinen nativen Munin-Client im Kader<br />
hat? Der Sysadmin-Spielmacher Charly weiß Rat. Charly Kühnast<br />
Inhalt<br />
68 Logstash<br />
Logstash, ein Logserver mit eingebauten<br />
Analysetools, hilft dabei, die<br />
Protokolle vieler Server zentral zu<br />
archivieren, und macht die Daten ganz<br />
nebenbei auch durchsuchbar.<br />
Bekanntlich kommt die Monitoring-Suite<br />
Munin, die hier schon einmal Thema [1]<br />
war, im Zweiteiler daher: Auf jedem Gerät,<br />
das ich überwachen möchte, installiere<br />
ich den Client, den Munin-Node.<br />
Er sammelt selbst und ständig relevante<br />
Daten über das System, auf dem er installiert<br />
ist. In gewissen Abständen holt<br />
der Munin-Server die Sammlung ab und<br />
macht daraus mit Hilfe von RRD Tool<br />
aussagekräftige Graphen. Das klappt gut,<br />
ich benutze Munin seit vielen Jahren privat<br />
und im Beruf.<br />
Zu Hause habe ich zwei Geräte, die Munin<br />
nicht ohne Weiteres überwachen<br />
kann: Einen älteren Cisco-Router aus der<br />
2600er Serie und ein kleines NAS von Synology,<br />
das mir als Backup-Platz, DLNA-<br />
Server und Datengrab dient. Auf dem<br />
NAS läuft ein angepasstes <strong>Linux</strong>, und in<br />
den Foren des Herstellers tauschen Leute<br />
aus, wie man dort einen Munin-Node<br />
betreiben kann.<br />
Aber ich muss gar nicht viel basteln,<br />
denn es geht auch einfacher: mit SNMP.<br />
Den SNMP-<strong>Die</strong>nst brauche ich in der Administrationsoberfläche<br />
des NAS nur zu<br />
aktivieren und einen Community-Namen<br />
zu vergeben – und bin damit, was die<br />
Client-Seite angeht, fertig.<br />
Den Community-Namen verrate ich nun<br />
dem Munin-Server, damit er die SNMP-<br />
Daten des NAS abfragen darf. Dazu<br />
lege ich im Verzeichnis »/etc/munin/<br />
plugin‐conf.d/« eine Datei mit einem<br />
sprechenden Namen an, etwa dem Hostnamen<br />
des Zielsystems: »synology«. Ihr<br />
verabreiche ich nur die folgenden<br />
zwei Zeilen:<br />
[snmp_synology_*]<br />
env.community g3h3im3rn4m3<br />
Jetzt kennt der Server den<br />
Community-Namen, weiß<br />
aber nicht, welche Daten genau<br />
er abholen soll. Auf gängigen<br />
<strong>Linux</strong>-Systemen findet<br />
das Kommando »munin‐node<br />
configure« die sammelbaren<br />
Systemdaten. Das funktioniert<br />
auch über SNMP:<br />
sudo ‐u muninU<br />
munin‐node‐configure ‐snmpU<br />
synology ‐snmpcommunityU<br />
g3h3im3rn4m3 ‐shell<br />
Munin-Node-configure fragt hier via<br />
SNMP das System »synology« mit der<br />
SNMP-Community »g3h3im3rn4m3« ab<br />
und stellt daraufhin die Symlinks dar,<br />
die es in »/etc/munins/plugins« anzulegen<br />
gedenkt. Das kann ich alternativ<br />
per Copy & Paste auch selbst machen und<br />
dabei gleich jene Daten weglassen, die<br />
ich nicht benötige. Oder ich ergänze das<br />
Kommando um »|bash«, dann legt es die<br />
Symlinks direkt an.<br />
Kleine Stolperfalle<br />
Jetzt muss ich in der Konfigurationsdatei<br />
»/etc/munin/munin.conf« das neue<br />
Munin-Ziel hinzufügen. Achtung: Bei der<br />
IP-Adresse, die ich hier hinterlege, handelt<br />
es sich um die Maschine, die die<br />
SNMP-Abfragen ausführt – also den Munin-Server<br />
selbst! Denn von dort erhält<br />
Munin seine Daten. Hier darf ich nicht die<br />
IP-Adresse des NAS eintragen. Es reicht,<br />
folgende beiden Zeilen hinzuzufügen:<br />
[synology]<br />
address 192.168.2.10<br />
Abbildung 1: Kurze Zeit nach dem erfolgreichen SNMP-Setup tröpfeln<br />
die ersten Daten in die RRD-Banken.<br />
Zu guter Letzt muss ich den Node-Prozess<br />
auf dem Server mit dem Kommando<br />
»service munin‐node restart« einmal neu<br />
starten. Nach einer kurzen Wartezeit<br />
tröpfeln dann die ersten Daten in die<br />
RRD-Banken (siehe Abbildung 1). Auf<br />
die gleiche Weise sammle ich auch die<br />
Daten meines alten Cisco-Routers ein.<br />
Jetzt schaue ich mal, welche sonstigen<br />
SNMP-fähigen Geräte der Haushalt noch<br />
so hergibt. (jk)<br />
n<br />
Infos<br />
[1] Charly Kühnast, „Aus dem Alltag eines<br />
Sysadmin: Munin“: <strong>Linux</strong>-<strong>Magazin</strong> 12/<br />
07, S. 77, [http:// www. linux‐magazin. de/<br />
Ausgaben/ 2007/ 12/ Ich‐Rabenvater]<br />
Der Autor<br />
Charly Kühnast administriert<br />
Unix-Syste me im Rechenzentrum<br />
Niederrhein. Zu seinen<br />
Aufgaben gehören Sicherheit<br />
und Verfügbarkeit der<br />
Firewalls und der DMZ.<br />
www.linux-magazin.de<br />
67
Sysadmin<br />
www.linux-magazin.de Logstash 05/2013<br />
68<br />
Zentrale Log-Archivierung mit Logstash<br />
Alle Systeme im Blick<br />
Wenn im System etwas hakt, ist das Logfile die erste Anlaufstelle für den informationssuchenden Admin.<br />
Logstash, ein Logserver mit eingebauten Analysetools, hilft dabei, die Protokolle vieler Server zentral zu<br />
archivieren, und macht die Daten ganz nebenbei auch noch durchsuchbar. Martin Loschwitz<br />
derartige Probleme etablierten Admins<br />
das Prinzip des Logservers: Logs sammeln<br />
sie nicht mehr auf den Hosts selbst,<br />
sondern auf einer zentralen Maschine.<br />
Der Klassiker: Ein zentraler<br />
Logserver<br />
Quelle: Airbus.com<br />
Im Cockpit eines Unternehmens zählt<br />
nur eins: Gibt's Probleme, dann muss der<br />
Admin schnell deren Ursachen herausfinden.<br />
An den Daten hapert es meist nicht,<br />
denn die meisten IT-Systeme liefern brav<br />
und stetig Systemprotokolle und Fehlermeldungen.<br />
Doch die richtig auswerten<br />
– das ist in komplexen Netzwerken mit<br />
vielen Maschinen, Geräten, Systemen<br />
und Servern oft leichter gesagt als getan:<br />
<strong>Die</strong> Suche in den Logdateien verschiedener<br />
<strong>Die</strong>nste auf einem System gestaltet<br />
sich oft mühsam.<br />
<strong>Die</strong> moderne Technik liefert<br />
zu viele Daten<br />
Wer beispielsweise mit dem Clustermanager<br />
Pacemaker gearbeitet hat, kennt<br />
das Problem nur zu gut: Gerade Pacemaker<br />
gilt als besonders geschwätzig, denn<br />
wenn andere <strong>Die</strong>nste sich mit wenigen<br />
Logmeldungen begnügen, produziert er<br />
ein Vielfaches an Output.<br />
Webserver-Logs von Apache sind ebenfalls<br />
ein gutes Beispiel – in den meisten<br />
Fällen richten Administratoren Apache<br />
nämlich so ein, dass er für jeden virtuellen<br />
Host separat loggt. Auf Webservern,<br />
die viele Kunden betreuen, kommt so<br />
eine unüberschaubare Menge an Logdateien<br />
zusammen, das Debuggen einzelner<br />
Probleme eines einzelnen Nutzers<br />
gerät zur Sisyphusarbeit.<br />
Ein weiterer Faktor macht Admins das<br />
Leben schwer: Zwar sind in Fällen, in<br />
denen die Anzahl der zu administrierenden<br />
Server 20 nicht übersteigt, die Logs<br />
auf den einzelnen Maschinen meist noch<br />
überschaubar. Doch IT-Setups wachsen,<br />
Cloud-Computing-Umgebungen, die auf<br />
Open Stack, Cloud Stack oder andere<br />
Plattformen setzen, begnügen sich nur<br />
selten mit weniger als 20 Servern.<br />
Zur Informationsflut aus den Logs kommen<br />
so auch die Meldungen weiterer<br />
Server, die der Admin händisch zusammensuchen<br />
muss. Als Klassiker gegen<br />
Das verhindert wenigstens, dass Admins<br />
sich beim Navigieren per SSH zwischen<br />
Servern die Finger wund tippen. Aber<br />
dass auch ein zentraler Logserver die Datenmenge<br />
nicht verringern kann, versteht<br />
sich von selbst. Hilfreich wäre es, wenn<br />
der zentrale Logging-<strong>Die</strong>nst die Logdateien<br />
der zu überwachenden Systeme<br />
nicht nur sammelt, sondern sie auch<br />
indexiert und so durchsuchbar macht,<br />
wie es die kommerzielle Software Splunk<br />
([1], [2]) demonstriert.<br />
<strong>Die</strong> Open-Source-Welt schickt hier Tools<br />
wie Logstash [3] ins Feld: <strong>Die</strong> versprechen<br />
den Admins einerseits einen zentralen<br />
Logging-<strong>Die</strong>nst, bieten überdies<br />
aber auch die Option, per Webinterface<br />
in vorhandenen Logeinträgen zu suchen.<br />
Streng genommen ist es nicht Logstash<br />
allein, das sich um die sinnvolle und zentrale<br />
Verwaltung von Logdateien kümmert.<br />
Denn damit es seine Aufgaben wie<br />
versprochen erfüllen kann, benötigt es<br />
einige Helfer.<br />
Logstash und seine Helfer<br />
Logstash selbst ist eine Java-Applikation,<br />
und bei allen Vorurteilen, die Admins<br />
– sei es berechtigt oder unberechtigt –<br />
gegen Java haben, war die Entscheidung<br />
für Java seitens der Logstash-Entwickler<br />
gut begründet. Denn eben weil Java auch<br />
für Windows selbstverständlich zur Verfügung<br />
steht, lassen sich mit Logstash
auch dessen Logdateien problemlos mit<br />
in die Sammlung aufnehmen – das ist<br />
bei anderen Rsyslog-<strong>Die</strong>nsten in vielen<br />
Fällen nur mit mancherlei Verrenkungen<br />
zu erreichen.<br />
Eine Logstash-Installation, die sich über<br />
mehrere Server erstreckt, besteht aus<br />
mindestens fünf verschiedenen <strong>Die</strong>nsten.<br />
<strong>Die</strong> zentrale Rolle nehmen die Logstash-<br />
Komponenten selbst ein: Der Shipper ist<br />
quasi ein Client, der auf jedem Zielsystem<br />
läuft und dort Log-Messages einsammelt.<br />
<strong>Die</strong>se schickt er im nächsten Schritt an<br />
den Indexer, der die Logmeldungen nach<br />
den Vorgaben des Admin interpretiert<br />
und weiterverarbeitet.<br />
Auf demselben Host, auf dem auch der<br />
Indexer zu finden ist, läuft in der Regel<br />
auch der Webserver von Logstash,<br />
der Admins ein Suchfeld für Logdateien<br />
bietet. Im Hintergrund tun zwei weitere<br />
<strong>Die</strong>nste ihre Arbeit, die nicht direkt zu<br />
Logstash gehören, für dessen Funktion<br />
aber dennoch wichtig sind: der Nachrichtenbroker<br />
Redis sowie die Suchumgebung<br />
Elastic search.<br />
Redis ist der zentrale Dreh- und Angelpunkt<br />
für die Kommunikation der Shipper<br />
und des Indexers. <strong>Die</strong> Logstash-Instanzen<br />
auf den einzelnen Servern liefern ihre<br />
Nachrichten beim Redis-Server ab, von<br />
wo der Logstash-Indexer sie im nächsten<br />
Schritt bezieht. Elasticsearch – ebenfalls<br />
eine Java-Anwendung – baut den Index<br />
im Hintergrund und bietet auch die<br />
Schnittstelle, an die der Webserver von<br />
Logstash Suchanfragen vom Webinterface<br />
weiterleitet.<br />
Modulares Design<br />
Ein großer Vorteil von Logstash ist seine<br />
Vielfalt, die aus dem modularen Design<br />
hervorgeht. Das macht das<br />
Werkzeug nämlich sehr flexibel,<br />
bis vor einigen Monaten<br />
war es bei Logstash-Installationen<br />
zum Beispiel Usus, anstelle<br />
von Redis einen AMQP-<br />
Broker zu nehmen, wobei es<br />
dabei meist auf Rabbit MQ<br />
[4] hinauslief.<br />
Das »amqp«-Modul für Logstash<br />
war jedoch weder besonders<br />
gut gepflegt noch bei<br />
den Logstash-Entwicklern beliebt.<br />
<strong>Die</strong> Entscheidung, auf<br />
einen anderen Broker umzusteigen, ließ<br />
sich sehr leicht umsetzen, da lediglich<br />
die Schnittstelle zum Messaging-Broker<br />
in Code zu gießen war. Mittlerweile funktioniert<br />
der Redis-Connector tadellos und<br />
Rabbit MQ avanciert zum Relikt aus vergangenen<br />
Zeiten.<br />
Ohne Grenzen<br />
Auch an anderer Stelle wird deutlich, dass<br />
der Kreativität der Admins bei Logstash<br />
kaum Grenzen gesetzt sind: Das Tool bietet<br />
die Möglichkeit, über definierte Filter<br />
Logeinträge nicht nur zu archivieren,<br />
sondern sie auch zu interpretieren, da<br />
einzelne Werte einer Logzeile indexiert<br />
und suchbar sind.<br />
Ein Beispiel: HTTP-Logs verwaltet Logs<br />
tash auf Wunsch so, dass per Webinterface<br />
später die gezielte Suche nach<br />
allen Zugriffen möglich ist, die einen<br />
„Internal Error“ hervorgerufen haben.<br />
Auf beispielsweise Pacemaker angewandt<br />
könnte das auch bedeuten, dass<br />
Admins nach genau solchen Logmeldungen<br />
suchen können, in denen Pacemaker<br />
ausdrücklich einen Fehler mit »ERROR«-<br />
Präfix meldet.<br />
Darüber hinaus lassen sich über die Filter<br />
auch unterschiedliche Einträge aus den<br />
Log-Aufzeichnungen völlig entfernen.<br />
Wer zum Beispiel verhindern möchte,<br />
dass die klassischen »‐‐ MARK ‐‐«-Meldungen<br />
von Syslog im Logarchiv landen,<br />
passt dazu lediglich die Konfiguration der<br />
Logstash-Shipper an.<br />
Test-Setup<br />
Abbildung 1: <strong>Die</strong> eigentliche Organisation und Verwaltung der Lognachrichten<br />
erledigt nicht Logstash, sondern Elasticsearch, das im Hintergrund mitläuft.<br />
Wer Logstash ausprobieren möchte, hat<br />
Glück. Entgegen allen Unkenrufen im<br />
Netz ist die Installation nämlich keineswegs<br />
eine Herkulesarbeit. Wichtig ist<br />
nur, vorher klarzustellen, welche Rolle<br />
welchem Host zukommt. Wenn feststeht,<br />
auf welchem Host der Redis-Server und<br />
Elasticsearch sowie der eigene Indexer<br />
von Logstash laufen sollen, kann es<br />
losgehen. Das folgende Beispiel orientiert<br />
sich an Ubuntu 12.04, funktioniert<br />
auf Debian aber auch. RPM-Pakete für<br />
Redis und Elasticsearch stehen für die<br />
typischen Enterprise-Distributionen im<br />
Netz ebenfalls zur Verfügung, auch auf<br />
RHEL oder SLES liegt dem Vergnügen<br />
also nichts im Wege<br />
Wie einfach die Installation von Redis<br />
funktioniert, hängt maßgeblich von der<br />
Antwort auf die Frage ab, ob es Redis-<br />
Server-Pakete für das eigene System gibt.<br />
Auf Ubuntu reicht ein simples »apt‐get install<br />
redis‐server«, um die Komponenten<br />
zu installieren. Im Anschluss empfiehlt<br />
es sich, in »/etc/redis/redis.conf« den<br />
Eintrag »bind 127.0.0.1« so abzuändern,<br />
dass er die tatsächliche IP-Adresse des<br />
Hosts enthält.<br />
Ansonsten macht Redis nämlich tatsächlich<br />
eine Verbindung zum Localhost auf,<br />
was dem Ansinnen zuwiderläuft, andere<br />
Hosts ihre Logstash-Meldungen direkt an<br />
Redis ausliefern zu lassen. Wer Wert auf<br />
Sicherheit legt, sollte in »redis.conf« über<br />
die »requirepass«-Direktive ein Passwort<br />
für den Zugriff definieren.<br />
Elasticsearch installieren<br />
Elasticsearch (Abbildung 1) ist wie Logstash<br />
eine Java-Anwendung, für die in<br />
Ubuntu aber leider keine Pakete vorhanden<br />
sind. Zum Glück hilft der Upstream<br />
aus und stellt auf seiner Website [5] ein<br />
fertiges ».deb«-Paket bereit, auf Ubuntu<br />
lässt es sich mit »dpkg ‐i« ebenfalls installieren.<br />
Der Befehl gibt zwar<br />
zunächst eine Fehlermeldung<br />
aus, das liegt jedoch an Abhängigkeiten,<br />
die nicht erfüllt<br />
sind. Nach dem Befehl<br />
»apt‐get ‐f install« ist Elasticsearch<br />
einsatzbereit.<br />
Achtung: Auch Elasticsearch<br />
lauscht in der Standardvariante<br />
nur auf 127.0.0.1, sodass<br />
ein eventuell vorhandener Indexer<br />
zwingend auf dem selben<br />
Host laufen muss. Sollen<br />
Elasticsearch und der Index-<br />
Logstash 05/2013<br />
Sysadmin<br />
www.linux-magazin.de<br />
69
w<br />
Sysadmin<br />
www.linux-magazin.de Logstash 05/2013<br />
70<br />
Abbildung 2: <strong>Die</strong> Suche nach »NetworkManager« in den Logstash-Aufzeichnungen ruft zeitlich sortierte Meldungen auf den Bildschirm.<br />
<strong>Die</strong>nst von Logstash auf unterschiedlichen<br />
Hosts laufen, finden Admins die notwendigen<br />
Schalter in »/etc/elasticsearch/<br />
elasticsearch.yml«, sie heißen »network.<br />
bind_host« und »network.host«.<br />
Verschiffen ...<br />
Damit geht es an die Konfiguration<br />
von Logstash selbst. Wichtig ist, dass<br />
Logstash nicht in Form einzelner Java-Bibliotheken<br />
für Client und Server kommt,<br />
Listing 1: »shipper.conf«<br />
01 input {<br />
02 file {<br />
03 type => "syslog"<br />
04<br />
05 # Wildcards work here :)<br />
06 path => [ "/var/log/messages", "/var/log/<br />
07 syslog", "/var/log/*.log" ]<br />
08 }<br />
09 file {<br />
10 type => "apache‐access"<br />
11 path => "/var/log/apache2/access.log"<br />
12 }<br />
Listing 2: »indexer.conf«<br />
01 input {<br />
02 redis {<br />
03 host => "192.168.122.165"<br />
04 type => "redis‐input"<br />
05 data_type => "list"<br />
06 key => "logstash"<br />
07 format => "json_event"<br />
sondern als große Datei für alle <strong>Die</strong>nste.<br />
Welche Aufgaben eine Logstash-Instanz<br />
erfüllt, hängt letztlich nur vom Inhalt der<br />
Datei ab, die das Tool als Quelle für ihre<br />
Konfiguration nutzt. Nach dem Download<br />
der Logstash-Jar-Datei von [5] – zu<br />
Redaktionsschluss war 1.1.9 die aktuelle<br />
Version – gilt es also lediglich, die richtigen<br />
Parameter zu wählen.<br />
Für einen Shipper könnte eine »shipper.<br />
conf« aussehen wie in Listing 1. Mit dieser<br />
Konfiguration würde Logstash die<br />
13<br />
14 file {<br />
15 type => "apache‐error"<br />
16 path => "/var/log/apache2/error.log"<br />
17 }<br />
18 }<br />
19<br />
20 output {<br />
21 stdout { debug => true debug_format => "json"}<br />
22 redis { host => "192.168.122.165" data_type =><br />
23 "list" key => "logstash" }<br />
24 }<br />
08 }<br />
09 }<br />
10 output {<br />
11 elasticsearch {<br />
12 host => "192.168.122.165"<br />
13 }<br />
14 }<br />
Meldungen der Syslog-Files und auch<br />
die von Apache in der »Default«-Virtual-<br />
Domain an den Indexer schicken. Der<br />
Host mit dem Indexer ist im Beispiel<br />
192.168.122.165.<br />
Etwas verwirrend wirkt hier möglicherweise<br />
das Wort »key«, denn es bezieht<br />
sich nicht auf einen für Authentifizierungszwecke<br />
angelegten Schlüssel, sondern<br />
lediglich auf den Wert, den Redis als<br />
Namen für die Logstash-Queue verwendet.<br />
Mit dieser Konfigurationsdatei lässt<br />
sich Logstash bereits starten, dafür sorgt<br />
der Befehl »java ‐jar logstash‐1.1.9‐monolithic.jar<br />
agent ‐f shipper.conf«.<br />
... indizieren ...<br />
Nicht komplizierter gestaltet sich das<br />
Setup des Indexers. Ebenso wie der Shipper<br />
braucht auch der Indexer nur eine<br />
passende Konfiguration, Listing 2 enthält<br />
ein Beispiel. <strong>Die</strong> Konfiguration von<br />
Logstash unterteilt sich also jeweils in<br />
»input«- und »output«-Blöcke, die – nomen<br />
est omen – festlegen, woher der jeweilige<br />
<strong>Die</strong>nst seine Nachrichten bezieht<br />
und wohin er sie weiterleitet.<br />
Der Indexer beginnt sein Tagwerk im<br />
Anschluss mit dem Befehl »java ‐jar<br />
logstash‐1.1.9‐monolithic.jar agent ‐f indexer.conf«.<br />
Im Gegensatz zum Shipper<br />
produziert der Indexer übrigens praktisch<br />
keinen eigenen Output auf dem Standardausgabekanal.<br />
Wenn dort also Ruhe
Abbildung 3: <strong>Die</strong> Status-Updates des Shippers von Logstash verraten, was die Software tut: Sie verschickt<br />
eintreffende Logmeldungen an Redis.<br />
herrscht, ist das für den Admin noch<br />
lange kein Grund zur Sorge.<br />
... und servieren<br />
Schließlich fehlt noch der eigentliche<br />
Logstash-Webserver, der überhaupt keine<br />
eigene Konfigurationsdatei braucht. So<br />
lässt er sich starten:<br />
java ‐jar logstash‐1.1.9‐monolithic.jar webU<br />
‐‐backend elasticsearch://192.168.122.165/<br />
Unmittelbar im Anschluss steht dem<br />
Admin bereits der Login am Logstash-System<br />
auf Port 9292 zur Verfügung (Abbildung<br />
2), im Beispiel wäre die gesamte Adresse<br />
also »http://192.168.122.165:9292«.<br />
Direkt nach dem ersten Start sollten bereits<br />
Logmeldungen zu sehen sein (Abbildung<br />
3), alternativ lässt sich der Ablauf<br />
übers Suchfeld sicherstellen. Im Grunde<br />
sind damit die wesentlichen Schritte der<br />
Logstash-Installation abgeschlossen.<br />
Selbstverständlich steht es den Sysops<br />
frei, das Setup nach ihrer eigenen Façon<br />
zu verschönern: Typischerweise soll<br />
beispielsweise der Logstash-Shipper auf<br />
jedem System beim Start automatisch<br />
laufen, sodass das Anlegen eines entsprechenden<br />
Init-Skripts notwendig ist. (Wer<br />
sich die Arbeit nicht machen möchte,<br />
findet im Netz aber auch fertige Skripte<br />
dieser Art.)<br />
Außerdem empfiehlt es sich, anwendungsspezifische<br />
Filter anzulegen, um<br />
alle Möglichkeiten der Lösung auszuschöpfen.<br />
Eine Übersicht über mögliche<br />
Filteroptionen in Logstash, die auch reguläre<br />
Ausdrücke unterstützen, findet sich<br />
samt ausführlicher Dokumentation auf<br />
der Anbieter-Website [6].<br />
Logstash ist eine sehr elegante Lösung,<br />
um zentrales Logging zu erreichen. Dass<br />
sowohl Chef-Cookbooks wie auch Rezepte<br />
für Puppet schon zur Verfügung<br />
stehen, kommt insbesondere jenen<br />
Admins zugute, die größere Rechnerfarmen<br />
pflegen und deshalb mit einem zentralen<br />
Management für ihre Konfigurationsdateien<br />
arbeiten. Gerade in solchen<br />
Setups lässt sich Logstash nämlich sehr<br />
leicht nachrüsten.<br />
Seine ganze Stärke spielt Logstash aber<br />
erst dann aus, wenn es um das Durchsuchen<br />
von Logs geht. Jeder Admin, der<br />
schon mal händisch in Zehntausenden<br />
Zeilen von Logfiles nach einem Fehler<br />
gesucht hat und dann zum ersten Mal<br />
eine Fehlersuche mit Logstash erlebt, hat<br />
ein echtes Aha-Erlebnis. Nur für Admin-<br />
Piloten mit ausgeprägter Java-Allergie ist<br />
und bleibt Logstash allerdings ein windiger<br />
Vogel. (mfe)<br />
n<br />
Infos<br />
[1] Splunk: [http:// www. splunk. com]<br />
[2] Konstantin Agouros, „Nicht suchen, finden!“:<br />
<strong>Linux</strong>-<strong>Magazin</strong> 02/13, S. 60<br />
[3] Logstash: [http:// www. logstash. net]<br />
[4] Rabbit MQ: [http:// www.rabbitmq. com]<br />
[5] Elasticsearch-Download:<br />
[http:// www. elasticsearch. org/ download/<br />
2013/ 02/ 14/ 0. 20. 5. html]<br />
[6] Filter-Beispiele: [https:// github. com/<br />
logstash/ grok‐patterns]<br />
Der Autor<br />
Martin Gerhard Loschwitz<br />
arbeitet als Principal Consultant<br />
bei Hastexo. Er beschäftigt<br />
sich dort intensiv<br />
mit Hochverfügbarkeitslösungen<br />
und pflegt in seiner<br />
Freizeit den <strong>Linux</strong>-Cluster-Stack für Debian.<br />
Logstash 05/2013<br />
Sysadmin<br />
www.linux-magazin.de<br />
71<br />
Jahres-DVD 2012<br />
InklusIve:<br />
Der komplette<br />
Jahrgang 2012!<br />
■ Artikel zu Storage, Backup, Security, Monitoring,<br />
Virtualisierung u.v.m.<br />
■ Zum Lesen am Bildschirm oder Ausdrucken:<br />
PDF und HTML-Format<br />
■ Search Engine für Artikel-Volltext-Suche<br />
Jetzt gleich bestellen!<br />
www.admin-magazin.de/DVD2012 oder 089 - 99 34 11 - 00<br />
ADMIN<br />
Netzwerk & Security
Forum<br />
www.linux-magazin.de Rechts-Rat 05/2013<br />
74<br />
Leser fragen, der <strong>Linux</strong>-<strong>Magazin</strong>-Ratgeber antwortet<br />
Recht einfach<br />
Urheberrecht, Lehrmedien, Spiele oder Webseiten nachbauen, Lizenzen und so weiter: In der Serie „Rechts-<br />
Rat“ erhalten <strong>Linux</strong>-<strong>Magazin</strong>-Leser verständliche Auskünfte zu Rechtsproblemen des <strong>Linux</strong>-Alltags. Fred Andresen<br />
© Lim Jerry, Fotolia<br />
In dieser Ausgabe geht’s viel ums Urheberrecht<br />
und ein wenig um Patente:<br />
um Patentverletzung und Lizenzierung<br />
des „freien“ VP8-Codec. <strong>Die</strong> anderen<br />
Beiträge drehen sich um urheberrechtlich<br />
geschützte Webseiten, um Kopien<br />
für Schule und Unterricht, um Fan-Mod-<br />
Onlinegames und um fremde Systeme in<br />
virtuellen Maschinen.<br />
Urheberrecht und der<br />
iWebauftritt<br />
Wann ist eine von mir gestaltete Website urheberrechtlich<br />
so geschützt, dass ich Plagiate beziehungsweise<br />
Nachbildungen verbieten kann?<br />
K. K.<br />
Ein Webauftritt kann aus zwei Gesichtspunkten<br />
heraus Schutz genießen. Einmal<br />
gilt eine HTML-Seite, so wie Browser sie<br />
abbilden, als ein Sprachwerk. Ob reiner<br />
HTML-Code als Computerprogramm anzusehen<br />
ist, bleibt strittig. In jedem Fall<br />
ist jedoch mit zunehmender Komplexität<br />
der Programmierung – besonders bei interaktiver<br />
Seitengestaltung per Javascript,<br />
gegebenenfalls Ajax und CSS – auch die<br />
nötige Schöpfungshöhe zu erreichen,<br />
damit eine individuelle Gestaltung zum<br />
Urheberrechtsschutz führt.<br />
Zum Inhalt: Unabhängig davon, wie Sie<br />
die Seite gestalten, kann es sich beim<br />
Inhalt um unabhängig und isoliert geschütze<br />
Werke handeln. Literarischer<br />
Text ebenso wie redaktionell-informative<br />
Berichterstattung oder auch nur einfach<br />
gehaltene persönliche Blogeinträge sind<br />
urheberrechtlich geschützt. <strong>Die</strong> Anforderungen<br />
an die persönlich-schöpferische<br />
Prägung sind eher gering.<br />
Lediglich reine Daten führen nicht zu<br />
einem Urheberrechtsschutz – es sei denn,<br />
es handle sich um eine unter nicht unerheblichem<br />
Ressourcenaufwand erstellte<br />
Datensammlung: Ein so genanntes Datenbankwerk<br />
genießt eigenen Schutz, allerdings<br />
mehr einen Investitionsschutz,<br />
weniger den für die urheberrechtlich „üblichen“<br />
Werke und Gestaltungen.<br />
In neuerer Zeit gilt der Schutz für Sprachwerke<br />
aber nicht mehr nur für Texte, sondern<br />
auch für andere Funktionen: Sind<br />
Inhalte, die an sich nicht schutzwürdig<br />
wären, im Hinblick auf eine bessere Platzierung<br />
in den Suchmaschinen optimiert,<br />
also nach Stellung, Wiederholung, Verschachtelung<br />
oder Platzierung in Überschriften<br />
und Metatags strukturiert eingebaut,<br />
sprechen die Gerichte ihnen oft<br />
selbst dann einen Urheberrechtschutz zu,<br />
wenn die Seite ansonsten nicht schutzwürdig<br />
wäre.<br />
<strong>Die</strong> Optimierung selbst erfüllt dabei<br />
bereits den Anspruch an die Individualisierung.<br />
Damit erfasst der Schutz für<br />
Sprachwerke sogar Seiten, auf denen gar<br />
kein Text sichtbar ist. Neben reinem Text<br />
sind Multimedia-Inhalte ebenfalls regelmäßig<br />
geschützt: Bilder, Filme, Soundund<br />
Musikdaten stehen ohnehin unter<br />
einem selbstständigen Schutz.<br />
Für alle einzelnen enthaltenen Werke wie<br />
auch für eine Gesamtgestaltung, wenn<br />
diese Urheberrechtsschutz erreicht,<br />
räumt Ihnen das UrhG unter anderem<br />
die ausschließlichen Verbreitungs- und<br />
Vervielfältigungsrechte ein, sodass Sie<br />
alle auf Unterlassung und Schadensersatz<br />
in Anspruch nehmen können, die Ihre<br />
Mailen Sie uns Ihre Fragen!<br />
Im monatlichen Wechsel mit aktuellen Fachbeiträgen<br />
lässt das <strong>Linux</strong>-<strong>Magazin</strong> in der Serie<br />
„Rechts-Rat“ Leserfragen durch einen<br />
Rechtsanwalt kompetent beantworten. Was<br />
immer Sie beschäftigt oder ärgert oder was<br />
Sie einfach nur wissen möchten: Schreiben<br />
Sie eine entsprechende E-Mail an die Adresse<br />
[rechtsrat@linux-magazin. de].<br />
<strong>Die</strong> Themen dürfen von Software lizenzen bis<br />
zum Hardwarekauf reichen. <strong>Die</strong> Redaktion<br />
behält es sich vor, abgedruckte Zuschriften<br />
zu kürzen und eventuell enthaltene persönliche<br />
Daten zu ändern.
© Dunca Daniel, 123RF.com<br />
Abbildung 1: Auch Webseiten können als Sprachwerke<br />
urheberrechtlich geschützt sein, aber auch<br />
eine enthaltene Suchmaschinenoptimierung zählt.<br />
Werke ohne Genehmigung kopieren und<br />
auf eigenen Seiten zugänglich machen.<br />
Wann Lehrmedien-<br />
iAbgaben anfallen<br />
Nach meinen Informationen lief die gesetzliche<br />
Regelung Ende 2012 aus, nach der Lehrer für den<br />
Unterricht benötigte Kopien ohne gesonderte<br />
Erlaubnis des Verlags fertigen dürfen. Angeblich<br />
gilt das Gesetz aber weiter, nur mit geringfügigen<br />
Änderungen, die nicht im Gesetz stehen.<br />
Was ist zutreffend?<br />
Uli M.<br />
<strong>Die</strong> Regelung des Paragrafen 52a UrhG<br />
[1] wurde 2003 ins Gesetz aufgenommen<br />
und zunächst befristet, weil der deutsche<br />
Gesetzgeber ihre Auswirkungen auf<br />
die Rechte der Verleger beobachten und<br />
überprüfen wollte.<br />
Weil das nie so recht geklappt hat – jedenfalls<br />
nicht so, dass sich der Gesetzgeber<br />
klar für oder gegen eine unbefristete<br />
Norm entscheiden konnte, hat er die Frist<br />
inzwischen dreimal verlängert, weshalb<br />
die Regelung zumindest bis Ende 2014<br />
[2] gilt. Stand der Diskussion: Viele Beteiligte,<br />
darunter die Bereiche Kultus und<br />
Justiz, wollen die Befristung endgültig<br />
fallen lassen, wogegen sich die Verlage<br />
vehement wehren.<br />
<strong>Die</strong> Kultusministerkonferenz ist unter Berücksichtigung<br />
einschlägiger Rechtsprechung<br />
übereingekommen, dass künftig<br />
urheberrechtlich geschützte Werke in<br />
einem Umfang von 10 Prozent, maximal<br />
jedoch 20 Seiten daraus, nicht nur in<br />
der für alle Schüler benötigten Anzahl<br />
auf Papier („analog“) kopiert, sondern<br />
auch eingescannt oder auf andere Weise<br />
digitalisiert und den Schülern elektronisch<br />
zugänglich gemacht werden dürfen.<br />
Dazu zählt auch das Speichern auf<br />
einem Schulserver.<br />
Zu beachten ist in diesem Zusammenhang,<br />
dass die Grenze für das urheberrechtlich<br />
geschützte Werk gilt, dass also<br />
von jedem Buch nur maximal 10 Prozent<br />
beziehungsweise 20 Seiten für die Schüler<br />
vervielfältigt werden dürfen, nicht<br />
heute mal 20 Seiten von diesem Lehrer<br />
für seinen Unterricht und morgen 20 weitere<br />
von einem Kollegen.<br />
Der Börsenverein des Deutschen Buchhandels<br />
wird als mächtige Interessenvertretung<br />
weiterhin gegen diese Regelung<br />
wettern. Auf der anderen Seite werden<br />
die Lehrer weiterhin fordern, für die<br />
wichtige Bildung alles kopieren zu dürfen.<br />
So könnte die Geltung der Vorschrift<br />
wohl erneut, also über den 31.12.2014<br />
hinaus verlängert werden.<br />
Illegale Kopien? Spiele-<br />
nach iklassiker Vorbild<br />
Wir planen, ein Onlinegame zu veröffentlichen,<br />
das einem „Klassiker“ nachempfunden ist,<br />
also in Anlehnung an die Spielstory (Adventure<br />
Game) die Handlung logisch fortführt. Dürfen wir<br />
Spielstory und ‐figuren – vielleicht mit geringen<br />
„Änderungen“ – übernehmen?<br />
M.<br />
Sowohl die Spielhandlung als auch<br />
die Charaktere genießen, wie auch die<br />
Spielgrafik, eigenen Urheberrechtschutz.<br />
Übernehmen Sie Story und Grafik, wäre<br />
es keine logische Fortführung, sondern<br />
ein urheberrechtsverletzender „Nachbau“:<br />
Abänderungen des ursprünglichen<br />
Werkes sind ausschließliches Recht des<br />
Urhebers! Ohne dessen Genehmigung<br />
dürfen Sie weder die Handlung, also die<br />
Story, noch die Charaktere übernehmen.<br />
Bestehen aber genügend Unterschiede<br />
zu den Originalfiguren, auch wenn die<br />
Gesamterscheinung auf den bekannten<br />
Helden „hindeutet“, ist das urheberrechtlich<br />
unkritisch.<br />
Virtualisierung und Be-<br />
itriebssystemlizenz<br />
In einer virtuellen Maschine möchte ich ein Betriebssystem<br />
laufen lassen, dessen Hersteller<br />
Rechts-Rat 05/2013<br />
Forum<br />
www.linux-magazin.de<br />
75<br />
©Burmakin Andrey, 123RF.com<br />
© Thomas Pajot, 123RF.com<br />
Abbildung 2: Immer noch streiten Lehrer und Buchhandel darum, wer wann wie<br />
viel für den Unterricht kopieren darf.<br />
Abbildung 3: Vorsicht ist beim Nachbauen von Spieleklassikern geboten, denn im<br />
Grundsatz sind alle Elemente urheberrechtlich geschützt.
Forum<br />
www.linux-magazin.de Rechts-Rat 05/2013<br />
76<br />
Abbildung 4: Manche Hersteller wie Apple verbieten es Benutzern, ihre Betriebssysteme in virtuellen Umgebungen laufen zu lassen. Technisch möglich ist es dennoch<br />
(links Virtualbox, rechts KVM). Wer das nachmacht, verstößt klar gegen die Lizenzbedingungen.<br />
dies in seiner Lizenz untersagt: Das Betriebssystems<br />
zu nutzen ist danach ausschließlich<br />
auf Originalrechnern desselben Herstellers<br />
gestattet. Im Netz kursieren aber viele Möglichkeiten<br />
samt Anleitung, dies zu umgehen und<br />
das Betriebssystem mit Patches in virtuellen<br />
Umgebungen, aber auch auf PC-Hardware von<br />
Drittanbietern zu betreiben. Ist es strafbar, so<br />
ein System einzusetzen?<br />
G. K.<br />
Zunächst gilt, dass Sie im Regelfall lediglich<br />
das Nutzungsrecht an einem Programm,<br />
hier dem Betriebssystem, erworben<br />
haben, nicht das uneingeschränkte<br />
Recht an der Software. <strong>Die</strong>s gilt im Prinzip<br />
nicht nur für proprietäre Betriebssysteme<br />
oder Anwendungsprogramme,<br />
sondern sogar für freie Software: In beiden<br />
Fällen können Sie nicht mit dem<br />
jeweiligen Programm „tun und lassen,<br />
was Ihnen gefällt“.<br />
Software ist als Sprachwerk urheberrechtlich<br />
geschützt, deshalb darf nur der<br />
Urheber als Rechte-Inhaber bestimmen,<br />
was überhaupt mit dem Programm passiert.<br />
In allen Fällen erhält der Erwerber<br />
der Software ein Nutzungsrecht übertragen,<br />
bei freier Software sogar mehr,<br />
nämlich gleichzeitig (unter anderem und<br />
unter weiteren Bedingungen) Bearbeitungs-<br />
und Verbreitungsrechte an dem<br />
Programm. Wie jede Rechtsübertragung<br />
unterliegt auch diese dem Grundsatz der<br />
Vertragsfreiheit, sie lässt sich also einschränken<br />
(auf einen Rechner oder bestimmte<br />
Hardware), befristen (Nutzungsdauer)<br />
oder an bestimmte Bedingungen<br />
knüpfen.<br />
Das Urheberrecht hat, geprägt durch das<br />
„Standardwerk“ Buch, eine spezielle<br />
Konstruktion entwickelt, die das grundsätzliche<br />
Prinzip, dass ausschließlich der<br />
Urheber über alle seine Werke bestimmen<br />
darf, aufweicht: <strong>Die</strong> Erschöpfungstheorie<br />
besagt, dass sich dessen Urheberrecht<br />
an einem einzelnen Exemplar, also am<br />
Original oder an einem Vervielfältigungsstück<br />
(Kopie) seines Werkes, nach dessen<br />
Übertragung in diesem einen konkreten<br />
Stück „erschöpft“.<br />
Mit anderen Worten: Ist das Original oder<br />
eine Kopie des Werkes – das Werkstück<br />
– im freien (Rechts-)Verkehr, dann hat<br />
der Urheber keine Einflussmöglichkeiten<br />
mehr. Das gilt natürlich nur und ausschließlich<br />
für dieses Werkstück und<br />
verbietet logischerweise auch, dass der<br />
Nutzer von diesem Werkstück eine (eigentlich<br />
legale) Kopie anfertigt.<br />
Wenn die Lizenzbedingungen des Herstellers<br />
dies vorsehen und wirksam in<br />
den Vertrag einbezogen sind, verbietet<br />
eine entsprechende Koppelungsklausel<br />
die Installation auf nicht genehmigter<br />
beziehungsweise freigegebener Hardware<br />
ebenso, wie auch innerhalb einer virtuellen<br />
Maschine. Der Betrieb der Software<br />
auf „fremder“ Hardware verstößt damit<br />
gegen die Lizenbedingungen und ist daher<br />
illegal.<br />
Ob dadurch ein Straftatbestand eintritt,<br />
ist allerdings fraglich. <strong>Die</strong> Paragrafen<br />
106 ff. UrhG [1] enthalten die Strafvorschriften<br />
des Urheberrechts, nach denen<br />
grundsätzlich die unerlaubte Verwertung<br />
urheberrechtlich geschützter Werke unter<br />
Strafe gestellt ist. <strong>Die</strong>se Strafvorschriften<br />
sind traditionell und systematisch allerdings<br />
nicht auf „Privattäter“ gemünzt,<br />
sondern an gewerblich-beruflichen Täterkreisen<br />
ausgerichtet.<br />
Auch wenn etwa nach Paragraf 106 die<br />
bloße Vervielfältigung eines urheberrechtlich<br />
geschützen Werkes ausreicht,<br />
um den Tatbestand zu verwirklichen und<br />
einer Strafdrohung von Geldstrafen bis<br />
zu drei Jahren Freiheitsstrafe entgegenzusehen,<br />
müsste man die bloße Vervielfältigung<br />
durch Installieren der Betriebssystem-Software<br />
auch in einer virtuellen<br />
Maschine als technisch für die Benutzung<br />
erforderlich ansehen.<br />
Der Teufel steckt da oft im Detail: Der<br />
Benutzer muss das Programm in der<br />
Regel ja nicht nur von einem Installationsmedium<br />
auf den lokalen Dauerspeicher<br />
kopieren, sondern normalerweise<br />
auch von diesem in den Hauptspeicher<br />
des Rechners, um es ablaufen zu lassen.<br />
<strong>Die</strong>se Kopiervorgänge sollte man nicht<br />
als „reguläre“ urheberrechtliche Vervielfältigung<br />
einordnen, sondern insoweit<br />
abweichend beurteilen – das sagt die<br />
Rechtsprechung.<br />
Daher dürfte die Vervielfältigung des urheberrechtlich<br />
geschützten Betriebsprogramms<br />
auch nicht die strafrechtlichen<br />
Tatbestände des UrhG verwirklichen,<br />
somit sollte Strafbarkeit ausscheiden.<br />
Trotzdem bleibt dergleichen illegal und<br />
der Urheber, hier der Softwarehersteller<br />
kann das Unterlassen solcher Handlungen<br />
verlangen und sogar Schandensersatz<br />
fordern.<br />
Freie Codecs – oder<br />
iwas?<br />
Was ist denn nun mit den Web-M-Codecs? Nachdem<br />
Google sie gekauft hat, darf die jetzt jeder<br />
benutzen und durfte es vorher nicht?<br />
F.G.
falls möglicherweise zweifelhaft, nicht<br />
aber erwiesen illegal. Daran hat auch<br />
die „Lizenzierung“ durch Google nichts<br />
geändert. Das Unternehmen stellt zwar<br />
öffentlich klar, dass durch die Lizenzierung<br />
künftig sichergestellt sein, dass die<br />
Web-M/VP8-Nutzung legal möglich sei,<br />
räumt aber keine Rechtsverletzung ein,<br />
insbesondere keine Verletzung der H.262-<br />
Patente.<br />
Auch dann, wenn der Streit um die Vorherrschaft<br />
im Web zwischen Googles Videoformat<br />
und H.264 mittlerweile wohl<br />
entschieden sein dürfte, geht es aufgrund<br />
der Lizenzierung möglicherweise in die<br />
nächste Runde, in der noch alles offen<br />
scheint.<br />
Der H.264-Nachfolger, logischerweise<br />
H.265 genannt, steht in den Startlöchern<br />
und dank der ebenfalls lizenzierten Beund<br />
Überarbeitungsrechte kann Google<br />
auch mit einer auf VP8 aufbauenden<br />
kommenden Technologie mitmischen. Ob<br />
sich letztlich tatsächlich ein Codec – und<br />
Nachdem Google und die MPEG LA ein<br />
Abkommen geschlossen haben [3], dass<br />
der von Google verteilte und beworbene<br />
Web-M-Codec VP8 künftig in jedem Fall<br />
von einer Lizenz der MPEG LA gedeckt<br />
sein soll, ist klargestellt, dass die Verwendung<br />
des VP8-Codec keine Patente<br />
der MPEG LA verletzt. <strong>Die</strong>se hält als internationaler<br />
Patentpool unter anderem<br />
die Rechte am H.264-Codec, der zum Defacto-Standard<br />
für Internetvideos avanciert<br />
ist.<br />
<strong>Die</strong> technische „Ähnlichkeit“ des VP8-<br />
Codec zum H.264 hatte in der Vergangenheit<br />
zu Auseinandersetzungen und<br />
zu Rechtsunsicherheit geführt, da Google<br />
den VP8-Codec vor ein paar Jahren als<br />
frei und für alle nutzbar gepriesen hatte,<br />
nachdem der Konzern den VP8-Entwickler<br />
On2 aufgekauft und damit die Rechte<br />
an VP8 übernommen hatte.<br />
Rechtlich gesehen war die gebührenfreie<br />
Nutzung des VP8-Codec für Web-M-Videos<br />
auch in der Vergangenheit allenwenn<br />
ja, welcher – als Standard durchsetzen<br />
wird, bleibt offen. Es spricht also<br />
nichts – außer vielleicht die sinkende<br />
Popularität – dagegen, wenn Sie auch<br />
weiterhin VP8 in Web-M-Videos verwenden.<br />
(mfe)<br />
n<br />
Infos<br />
[1] Urheberrechtsgesetz: [http:// www.<br />
gesetze‐im‐internet. de/ urhg/]<br />
[2] Gesetzentwurf zur Änderung des UrhG:<br />
[http:// dipt.bundestag.de/dip21/<br />
btd/17/113/1711317.pdf]<br />
[3] Google lizenziert VP8 (<strong>Linux</strong>-Community):<br />
[http:// www. linux‐community. de/ Internal/<br />
Nachrichten/ Google‐lizensiert‐den‐WebM<br />
‐Videocodec‐VP8]<br />
Der Autor<br />
RA Fred Andresen ist Mitglied der Rechtsanwaltskammer<br />
München und der Arbeitsgemeinschaft<br />
Informationstechnologie im Deutschen Anwaltverein<br />
(DAVIT).<br />
Rechts-Rat 05/2013<br />
Forum<br />
www.linux-magazin.de<br />
77<br />
Einfach auf LinuX umstEigEn!<br />
4 x im Jahr kompaktes <strong>Linux</strong>-Know-how - IMMER mit 2 DVDs<br />
n Easy<strong>Linux</strong> macht den<br />
Umstieg auf <strong>Linux</strong> einfach<br />
n Verständliche<br />
Schritt-für-Schritt-Anleitungen<br />
n Nachvollziehbare<br />
Tipps und Tricks<br />
15%<br />
sparen<br />
EASYLINUX-JAHRES-ABO<br />
NUR 33,30E*<br />
❱<br />
JEtzt gRatis<br />
abo-pRämiE<br />
sichERn!<br />
ich bekomme gratis:<br />
• SoftMaker Office Paket<br />
für <strong>Linux</strong> im Wert<br />
von 69,95 Euro<br />
(solange Vorrat reicht)<br />
*Preise außerhalb Deutschlands siehe www.easylinux.de/abo<br />
JETZT GLEICH BESTELLEN! n tel.: 07131 / 2707 274 n fax: 07131 / 2707 78 601<br />
n E-mail: abo@easylinux.de n uRL: www.easylinux.de/abo
Forum<br />
www.linux-magazin.de Bücher 05/2013<br />
78<br />
Bücher über Scala und über Suchmaschinen-Optimierung<br />
Tux liest<br />
Zwei Bücher fanden in diesem Monat das Interesse der <strong>Magazin</strong>-Rezensenten: eins über die gediegene<br />
Sprache Scala, eines über das hippe Thema Suchmaschinen-Optimierung. Rainer Grimm, Christian Woldt<br />
Schon seit letztem Jahr lotet Joshua Suereth<br />
mit „Scala in Depth“ die Tiefen der<br />
Programmiersprache aus. In „<strong>Die</strong> Kunst<br />
des SEO“ dagegen versuchen die Autoren<br />
Enge, Spencer, Stricchiola und Fishkin<br />
auf gewichtigen 800 Seiten die allgegenwärtige<br />
Suchmaschinen-Optimierung in<br />
einen artifiziellen Rang zu erheben.<br />
Vereinte Sprache<br />
Spätestens bei der Lektüre von Suereths<br />
anspruchsvollem Buch wird schnell klar:<br />
Scala, das auf der Java Virtual Machine<br />
läuft, ist besonders. <strong>Die</strong> Programmiersprache<br />
kombiniert objektorientierte<br />
und funktionale Features auf einzigartige<br />
Weise. So kennt Scala Traits als mächtige<br />
Interfaces oder erlaubt es, Bedingungen<br />
an Typparameter zu stellen.<br />
Dem Titel gemäß steht Fortgeschrittenes<br />
im Fokus. Das erste Drittel widmet<br />
sich erst mal dem Pflichtwissen. <strong>Die</strong><br />
Tour startet mit der funktionalen und<br />
objektorientierten Programmierung, der<br />
ausdrucksstarken Syntax, statischer Typisierung<br />
und Scalas Verhältnis zu Java,<br />
der Arbeit mit unveränderlichen Daten<br />
und Stilkonventionen.<br />
Im Mittelteil gibt der Autor Implicits, dem<br />
Typsystem und deren Zusammenspiel<br />
Raum. Der Leser erfährt alles, um das<br />
Defaultverhalten von Implicit-Funktionsaufrufen<br />
oder Konvertierungsregeln zu<br />
Info<br />
Joshua D. Suereth:<br />
Scala in Depth<br />
(Englisch)<br />
Manning, 2012<br />
304 Seiten<br />
30 Euro<br />
ISBN: 978-1-935182-70-2<br />
definieren, oder wie er Einfluss auf die<br />
Substitution der generischen Typen nehmen<br />
kann oder mit Traits und Implicits<br />
Typklassen implementiert.<br />
<strong>Die</strong> umfangreiche Auftauchphase seines<br />
Tauchgangs leitet Suereth mit der Kategorisierung<br />
von Scalas reicher Auswahl an<br />
Collections ein. Als Kriterien bestimmt er<br />
die Eignung für parallele Anwendungen<br />
oder ob Collections ihre Argumente sofort<br />
auswerten oder ob sie unveränderlich<br />
sind. Es folgen die für Scala auf Multicore-<br />
Architekturen essenziellen Aktoren, also<br />
Prozesse, die Nachrichten austauschen.<br />
Am Ende kommt der Autor auf die Integration<br />
von Scala und Java zurück.<br />
Den Rest der 300 Seiten füllt ein etwas<br />
theorielastiges Kapitel zu Patterns. Es<br />
hilft aber dabei, Funktoren oder Monaden<br />
als Designpattern in der funktionalen<br />
Programmierung zu verstehen, die auf<br />
den mathematischen Konzepten der Kategorientheorie<br />
fußen.<br />
Fazit: Leser mit Kenntnissen in Scala,<br />
Java, Objektorientierung und funktionaler<br />
Programmierung werden den Ausflug<br />
in die Tiefen des Expertentums genießen.<br />
Anfängern sollten nach technisch flacheren<br />
Gewässern Ausschau halten.<br />
Suche als Kunst<br />
Ursprünglich eine Außenseiterdisziplin<br />
ist Suchmaschinen-Optimierung (SEO)<br />
jetzt in der Mitte der Netzgesellschaft<br />
angekommen. Der Wälzer „<strong>Die</strong> Kunst des<br />
SEO – Strategie und Praxis erfolgreicher<br />
Suchmaschinenoptimierung“ spannt das<br />
Thema in geradezu epischer Breite auf.<br />
Er beginnt mit dem Warum und Wie von<br />
Suchmaschinen, um dann das Vorgehen<br />
für eine gelungene Suchmaschinenoptimierung<br />
Schritt für Schritt zu beschreiben:<br />
Wie soll ein Webauftritt aufgebaut<br />
sein? Welche Kanäle muss er bedienen,<br />
um Kunden zu sich zu lotsen?<br />
Dazu beleuchtet das Autorenteam die Bedeutung<br />
von Metatags, HTML-Elementen<br />
und Formatierungs-Auszeichnungen für<br />
die Optimierung, ordnet Onpage- und<br />
Offpage-Maßnahmen ein und hilft zu<br />
analysieren, was davon welchen Erfolg<br />
bringt. Außerdem beraten die Spezialisten<br />
Unternehmen bei der Frage, was für<br />
und was gegen die Auslagerung von SEO<br />
zu einer externen Agentur spricht.<br />
Eigenwerbung?<br />
Wenn SEO-Spezialisten ein Buch über<br />
SEO schreiben, stellt sich die Frage nach<br />
der Ausgewogenheit. Doch die Autoren<br />
widerstehen der Versuchung, Werbung<br />
für eine bestimmte Suchmaschine, Software<br />
oder die Arbeit eines <strong>Die</strong>nstleisters<br />
zu machen. Zwar nennen sie den jeweiligen<br />
Marktführer, beschreiben jedoch<br />
immer die Alternativen.<br />
Fazit: Das Werk spricht Planer, Techniker<br />
und Entscheider gleichermaßen an<br />
und plädiert für deren fachübergreifende<br />
Zusammenarbeit. <strong>Die</strong> Themen erstrecken<br />
sich von den Such-Grundlagen über Site-<br />
Planung und Optimierungsstrategien bis<br />
zur Erfolgsanalyse. SEO zur Kunstrichtung<br />
zu stilisieren, das gelingt zwar auch<br />
auf 800 Seiten nicht, das Thema geschickt<br />
abzustecken aber schon. (jk) n<br />
Info<br />
E. Enge, S. Spencer, J.<br />
Stricchiola, R. Fishkin:<br />
<strong>Die</strong> Kunst des SEO<br />
O’Reilly, 2012<br />
824 Seiten<br />
50 Euro<br />
ISBN: 978-3-86899-375-2
Auf den Punkt gebracht<br />
Leserbriefe<br />
Leserbriefe 05/2013<br />
Forum<br />
Haben Sie Anregungen, Statements oder Kommentare? Dann schreiben Sie an [redaktion@linux-magazin.de].<br />
<strong>Die</strong> Redaktion behält es sich vor, die Zuschriften und Leserbriefe zu kürzen. Sie veröffentlicht alle Beiträge mit<br />
Namen, sofern der Autor nicht ausdrücklich Anonymität wünscht.<br />
www.linux-magazin.de<br />
79<br />
Geschwindigkeit gegen<br />
Lesbarkeit<br />
03/13, S. 94: Hashes als Strukturen zu<br />
benutzen ist wunderbar flexibel, wenn<br />
jedes Objekt einen abweichenden Attributsatz<br />
haben soll. Wenn ich immer gleiche<br />
Strukturen stattdessen als Arrays ablege,<br />
ist das sowohl in Laufzeit als auch<br />
im Speicherverbrauch deutlich günstiger.<br />
Das habe ich selbst getestet.<br />
Schade, dass so was nicht Schule macht!<br />
In »Distro« hätte bei den vielen Paketen<br />
die zentrale Datenstruktur mit entsprechenden<br />
Konstanten genauso lesbar<br />
»$_‐>[PKG]« und »$_‐>[MTIME]« heißen<br />
müssen. Mein Perl 5.16.2 legt von<br />
diesen Tupeln 18-mal eine Million in 10<br />
Sekunden an und liest sie jedes Mal alle<br />
wieder aus, im Gegensatz zu nur 13-mal<br />
bei Zweier-Hashes.<br />
Daniel Pfeiffer, per E-Mail<br />
Mit den Attributwerten von Objekten in<br />
Perl ist das so eine Sache: Meist verwenden<br />
die Entwickler Hashes, aber die sind<br />
natürlich langsamer als Arrays. CPAN-Pakete<br />
wie POE nutzen deshalb numerische<br />
Konstanten für Array-Elemente statt Hash-<br />
Lookups. Vor einigen Perl-Versionen gab<br />
es sogar so genannte Pseudo-Hashes, die<br />
wurden aber schnell wieder abgeschafft.<br />
Richtige OO-Programmierer nutzen überhaupt<br />
keine Hashes, sondern greifen nur<br />
mittels Methoden zu, damit die Kapselung<br />
des Objekts unversehrt bleibt.<br />
Im vorliegenden Fall ist der Netzzugriff<br />
um Größenordnungen langsamer als das<br />
Auslesen der Hash-Keys. Also sollte die<br />
wartungsfreundlichste Methode zum Einsatz<br />
kommen, die den lesbarsten Code<br />
produziert. Im Perl-Snapshot versuche ich<br />
immer einen Mittelweg zu finden – gute<br />
Lesbarkeit und Standardverfahren zählen<br />
oft mehr als ein paar gewonnene Mikrosekunden.<br />
(Michael Schilli)<br />
Was Zertifizierungen testen<br />
und was nicht<br />
03/13, S 28: Der Artikel suggeriert, eine<br />
Zertifizierung mittels EAL 4 sei ein Ausdruck<br />
der Qualität der entstandenen Software:<br />
„Haben die Mitarbeiter der Distributoren<br />
gut und vor allem nachweisbar<br />
gut gearbeitet, dann winkt als Beweis<br />
der Qualität eine Zertifizierung ...“ Dem<br />
ist mitnichten so: <strong>Die</strong> Zertifizierung nach<br />
Common Criteria überprüft ausschließlich,<br />
ob die im Security Target beschriebene<br />
Funktionalität wie beschrieben<br />
enthalten ist. Ein wichtiger Unterschied,<br />
wie wir bereits in einer SAP-on-<strong>Linux</strong>-<br />
Migration von AIX 5/6 auf damals RHEL<br />
4 leidvoll erfahren mussten.<br />
Da sich die Zertifizierungskriterien nicht<br />
signifikant geändert haben, zweifle ich<br />
einfach an, dass die gelieferte Qualität<br />
objektiv höher ist. Es sind hoffentlich einige<br />
Bugs behoben, aber Erfahrungen mit<br />
SLES 10 bis SP2 förderten auch Erschreckendes<br />
in den von Suse mo difizierten<br />
Kernelquellen zu Tage – und SLES 10 ist<br />
EAL 4+ zertifiziert, nicht?!<br />
Jens Rehsack, per E-Mail<br />
Mega- vs. Mebibyte bei<br />
USB-Sticks und anderswo<br />
04/13, S. 110: <strong>Die</strong> frühen Informatiker<br />
fanden es witzig, die SI-Einheiten zu verdrehen,<br />
steckte doch in 1 Kilobyte „nur“<br />
ein 2,4-Prozent-Fehler. Leider potenziert<br />
sich der Fehler, sodass wir bei ehemals<br />
unvorstellbaren TBytes bereits 10 Prozent<br />
daneben liegen.<br />
Deswegen hat die IEC 1996 aufgeräumt<br />
und dem Verkaufstrick der Plattenhersteller<br />
Recht gegeben. Seitdem ist genormt,<br />
dass SI-Einheiten auch in der Informatik<br />
Zehnerpotenzen sind, woran jedermann<br />
denkt, wenn er von Gigabytes redet. <strong>Die</strong><br />
Gnutools halten sich mit »‐‐si« daran,<br />
aber es existiert nicht immer die Kurzform<br />
»‐H«.<br />
Für die nur technisch relevanten Zweierpotenzen<br />
hat die IEC die alternativen Namen<br />
Kibibyte (KiB), Mebibyte (MiB) und<br />
so weiter eingeführt. <strong>Die</strong> Buhmänner sind<br />
jetzt die Betriebssystemhersteller, weil sie<br />
den Standard kaum befolgen. So geben<br />
die Gnutools auch mit »‐h« (»‐‐human«)<br />
falsche SI-Einheiten aus. Sobald man sie<br />
aber selber vorgibt, dann nehmen die<br />
Gnutools »MB« korrekt als MByte. Aber<br />
dass der Benutzer Mebibytes als »MiB«<br />
angeben darf, ist nicht mal dokumentiert,<br />
sondern nur »M«.<br />
Leider macht’s die Fachpresse nicht besser.<br />
Stattdessen werden wir zu meinem<br />
Leidwesen mit krummen, schwer erfassbaren<br />
Größen gepeinigt – bei TV-Geräten<br />
mit Zoll zum Beispiel.<br />
Daniel Pfeiffer, per E-Mail<br />
Besten Dank für Deine wie immer aufschlussreichen<br />
Ausführungen! Dennoch:<br />
Zollmaße werden laut englischer<br />
Wikipedia wohl nie den metrischen Größen<br />
weichen. Obwohl in Europa geboren,<br />
mag ich Meilen mittlerweile sogar lieber<br />
als Kilometer. (Michael Schilli) n<br />
Erratum<br />
04/13 S. 92: Bei der veröffentlichten Leserzuschrift<br />
zum Thema „Windows-Markt wird<br />
2013 schrumpfen“ fehlte leider der Name des<br />
Einsenders: Wilhelm Wienemann.
Know-how<br />
www.linux-magazin.de Insecurity Bulletin 05/2013<br />
82<br />
Insecurity Bulletin: Lokaler Angreifer kann System zum Stillstand bringen<br />
Totmacher<br />
Eine kürzlich entdeckte Sicherheitslücke im <strong>Linux</strong>-Kernel erlaubt lokalen Angreifern eine Denial-of-Service-<br />
Attacke gegen den Kernel. <strong>Die</strong> blockiert das System so, dass es auf keine Eingaben mehr reagiert. Mark Vogelsberger<br />
© Edhar Yuralaits, Sebastian Kaulitzki, 123RF.com<br />
Wenig mit der heiligen Dreieinigkeit zu<br />
tun hat die Software Trinity [1]. Mit ihr<br />
finden vielmehr Sicherheitsexperten wie<br />
Tommi Rantala Löcher im <strong>Linux</strong>-Kernel<br />
[2]. <strong>Die</strong> Software ist ein so genannter<br />
Systemcall Fuzz Tester, der Systemaufrufe<br />
des <strong>Linux</strong>-Kernels mit zufälligen Argumenten<br />
startet, um etwaige Schwachstellen<br />
in deren Implementation zu finden.<br />
Zufällige Dreieinigkeit<br />
<strong>Die</strong> von Trinity an Systemcalls übergebenen<br />
Parameter sind zwar zufällig, aber<br />
nicht immer unsinnig und schon gar<br />
nicht willkürlich gewählt.<br />
Sie übergeben<br />
etwa gültige Dateideskriptoren<br />
an Systemcalls,<br />
die solche als<br />
Argument erwarten.<br />
Das umgeht zuverlässig<br />
die im Kernel implementierten<br />
Sanity-<br />
Checks: Trinity kann<br />
also die Implementation<br />
testen, ohne dass<br />
die Sicherheitsroutinen<br />
eingreifen.<br />
Der per Trinity entdeckte<br />
Fehler steckt in der »__skb_recv_<br />
datagram()«-Funktion in »net/core/<br />
datagram.c‐«. Hier kann ein nicht-privilegierter<br />
lokaler Angreifer den Code in eine<br />
Endlosschleife zwingen – das System reagiert<br />
nicht mehr und ist unbenutzbar.<br />
Der fehlerhafte Code:<br />
[...]<br />
skb_queue_walk(queue, skb) {<br />
*peeked = skb‐>peeked;<br />
if (flags & MSG_PEEK) {<br />
if (*off >= skb‐>len) {<br />
*off ‐= skb‐>len;<br />
continue;<br />
}<br />
[...]<br />
In der korrigierten Fassung haben Entwickler<br />
die zweite »if()«-Abfrage durch<br />
if (*off >= skb‐>len && skb‐>len)<br />
ersetzt, was die Sicherheitslücke schließt,<br />
sodass der betreffende Code nicht mehr<br />
in eine Endlosschleife gelangt.<br />
Ursachenforschung<br />
Laut Kernel-Log war der Fehler am 21.<br />
Fe bruar 2012 in den Kernel gelangt und<br />
blieb ein Jahr unentdeckt. Der Commit<br />
[3] führte ein Offset-Argument für das<br />
»MSG_PEEK«-Flag ein. Ein knapper Proofof-Concept-Exploit<br />
für diese Schwach stelle<br />
wurde ebenfalls veröffentlicht (Listing 1).<br />
Wird dieser auf einem ungepatchten System<br />
von einem lokalen Anwender ausgeführt,<br />
friert er den Kernel ein. (mfe) n<br />
Infos<br />
[1] Fuzzer Trinity: [http:// codemonkey. org. uk/<br />
projects/ trinity/]<br />
[2] Sicherheitslücke im <strong>Linux</strong>-Kernel: [http://<br />
www. securitytracker. com/ id/ 1028146]<br />
[3] Commit 3f518bf745: [http:// git. kernel. org/<br />
? p=linux/ kernel/ git/ torvalds/ linux‐2. 6. git;<br />
a=commit;h=3f518bf745]<br />
Listing 1: Exploit für »__skb_recv_datagram()«-Schwachstelle<br />
01 [...]<br />
02 int main(void) {<br />
03 struct msghdr msg;<br />
04 int sock[2];<br />
05 int err;<br />
06 <br />
07 err = socketpair(AF_UNIX, SOCK_DGRAM, 0,<br />
sock);<br />
08 if (err) {<br />
09 perror("socketpair");<br />
10 exit(1);<br />
11 }<br />
12 <br />
13 memset(&msg, 0, sizeof(msg));<br />
14 switch (fork()) {<br />
15 default:<br />
16 /* parent, send empty message */<br />
17 err = sendmsg(sock[0], &msg, 0);<br />
18 if (err) {<br />
19 perror("sendmsg");<br />
20 exit(1);<br />
21 }<br />
22 close(sock[0]);<br />
23 printf("msg send, waiting for<br />
child...\n");<br />
24 wait(NULL);<br />
25 exit(0);<br />
26 <br />
27 case 0:<br />
28 /* child ‐ should deadlock here */<br />
29 err = recvmsg(sock[1], &msg, MSG_PEEK);<br />
30 if (err < 0) {<br />
31 perror("recvmsg");<br />
32 exit(1);<br />
33 }<br />
34 printf("recvmsg returned, bug<br />
fixed?!\n");<br />
35 close(sock[1]);<br />
36 exit(0);<br />
37 <br />
38 [...]
Programmieren<br />
www.linux-magazin.de Node.js und Redis 05/2013<br />
84<br />
Eigene Webanwendungen mit Node.js und Redis programmieren<br />
Schneller knoten<br />
Javascript auch auf dem Server nutzen, das verspricht das Webserver-Framework Node.js und bietet zahlreichen<br />
Erweiterungen und viele Funktionen, aber auch hohe Performance. <strong>Die</strong>ser Artikel zeigt, wie sich im Verbund<br />
mit der Datenbank Redis eine einfache und schnelle Buchungsapplikation entwickeln lässt. Andreas Möller<br />
© Oleg Zhukov, 123RF.com<br />
<strong>Linux</strong>, Apache, MySQL, PHP – LAMP-<br />
Anwendungen dominieren das Web.<br />
Typischerweise bestehen sie aus einem<br />
Bündel von PHP-Programmen, die Daten<br />
in MySQL-Datenbanken speichern<br />
oder auslesen, auf einem <strong>Linux</strong>-Server<br />
gespeichert sind und Clients über einen<br />
Apache-HTTP-Server bedienen.<br />
Doch der Shootingstar unter den Webservern<br />
tickt anders: Node.js [1] ist nicht<br />
01 sudo apt‐get install python‐software‐properties<br />
02 sudo add‐apt‐repository ppa:chris‐lea/node.js<br />
03 sudo apt‐get update<br />
Listing 1: Installation<br />
04 sudo apt‐get install nodejs np<br />
01 var http = require('http');<br />
Listing 2: Node.js als Echo-Server<br />
02 http.createServer(function(req, resp) {<br />
03 resp.writeHead(200, {'Content‐Type': 'text/<br />
plain'});<br />
04 resp.end(req.url);<br />
05 }).listen(3000);<br />
nur ein HTTP-Server, sondern ein ganzes<br />
Programmiergerüst, das es erlaubt,<br />
hochperformante und skalierbare Webanwendungen<br />
in Javascript zu schreiben.<br />
Im Gegensatz zu Browserskripten laufen<br />
die Javascript-Applikationen wie PHP-<br />
Programme auf dem Server.<br />
Knoten ersetzt Lampe<br />
Das folgende Beispiel zeigt die Stärken<br />
von Anwendungen in Node.js im Vergleich<br />
zu den weitverbreiteten LAMP-<br />
Programmen. <strong>Die</strong> Open-Source-Software,<br />
(unter MIT-Lizenz) basiert auf der<br />
Chrome-Laufzeitumgebung V8 [2] für<br />
Javascript und ist mittlerweile in den<br />
Repositories aller gängigen Distributionen<br />
enthalten. Listing 1 zeigt die simple<br />
Installation der aktuellen Version 0.8.15<br />
unter Ubuntu Quantal Quetzal.<br />
Das Design von Node.js ähnelt der Ruby-<br />
Bibliothek Eventmachine [3] und der<br />
Python-Bibliothek Twisted [4]. Auch<br />
in Node.js benötigen Webanwendungen<br />
einen eigenen HTTP-Server. Listing<br />
2 zeigt, wie sich der HTTP-Server von<br />
Node.js nach Art eines Echo-Servers verwenden<br />
lässt.<br />
Ein Echo-Server<br />
Zeile 1 erzeugt mit der Funktion »require()«<br />
eine Referenz auf das im Modul<br />
»http« enthaltene Objekt und speichert<br />
sie in der gleichnamigen Variablen. In<br />
der darauf folgenden Zeile erstellt die<br />
Methode »createServer()« ein HTTP-<br />
Server-Objekt. Der Aufruf bekommt eine<br />
Callback-Funktion übergeben, die der<br />
Server immer bei Eingang einer HTTP-<br />
Anfrage ausführt. Sie übernimmt mit<br />
dem Parameter »req« ein Objekt, das die<br />
HTTP-Anfrage, und mit »resp« eines, das<br />
die HTTP-Antwort repräsentiert.<br />
In Zeile 3 schreibt die Methode »write-<br />
Head()« Werte in den Kopf der HTTP-<br />
Antwort. Der Code »200« steht für eine<br />
erfolgreiche Anfrage, die Angabe »text/<br />
plain« für den Mime-Type der Antwort. In<br />
Zeile 4 beendet die Methode »end()« die<br />
HTTP-Antwort. Zuvor schreibt das Skript<br />
den Pfadanteil der abgefragten URL aus<br />
der gleichnamigen Eigenschaft noch in<br />
den Körper der HTTP-Antwort. Zeile 5<br />
bindet mit der Methode »listen()« das<br />
HTTP-Server-Objekt an den Port 3000.<br />
Abbildung 1 zeigt die Antwort des Echo-<br />
Servers auf eine HTTP-Anfrage mit dem<br />
Kommandozeilentool Curl.<br />
Der HTTP-Server von Node.js arbeitet<br />
alle Anfragen mit einem einzigen Serverprozess<br />
ab. Der Apache-HTTP-Server<br />
hingegen verwendet, je nach Modell, pro<br />
Anfrage einen Prozess. Abbildung 2 illustriert<br />
den von Node.js eingesparten<br />
Speicherplatz. Weil in Node.js Aufrufe
Modul »events«<br />
stellt sie zur Verfügung.<br />
Listing 4 demonstriert<br />
das Erzeugen<br />
des benutzerdefinierten<br />
Abbildung 1: Der minimalistische Echo-Server antwortet und gibt den Pfandanteil<br />
Events<br />
der als Parameter angegebenen URL zurück.<br />
»scha wawa« für<br />
das Objekt »Custom«.<br />
zumeist asynchron erfolgen, kann der<br />
Serverprozess mehrere HTTP-Anfragen<br />
gleichzeitig beantworten.<br />
Node.js-Anwendungen lassen sich jedoch<br />
auch über mehrere Prozesse verteilen.<br />
Listing 3 zeigt die Skalierung des HTTP-<br />
Servers aus Listing 2 mit der Anzahl der<br />
Prozessoren. Zeile 2 bindet zunächst das<br />
Modul »cluster« ein, das die eigentliche<br />
Skalierung durchführt. Zeile 3 ermittelt<br />
daraufhin die Anzahl der Prozessorcores.<br />
<strong>Die</strong> Zeilen 5 bis 7 erzeugen im Masterprozess<br />
mit der Methode »fork()« Kopien<br />
von sich, die Zeilen 9 bis 12 starten pro<br />
Kopie jeweils einen HTTP-Server. <strong>Die</strong>se<br />
übernehmen wechselweise HTTP-Anfragen<br />
an den Port 3000. Im Gegensatz zu<br />
einer LAMP-Anwendung fasst Node.js<br />
hier Server und Anwendung in einem<br />
Prozess zusammen.<br />
Zeile 1 bindet zunächst das Modul<br />
»events« ein. <strong>Die</strong> Zeilen 4 bis 6 speichern<br />
in der Variablen »Custom« eine Konstruktor-Funktion.<br />
In Zeile 8 weist die Methode<br />
»inherits()« das Objekt »EventEmitter« als<br />
Prototyp für alle Objekte aus, die mit der<br />
Konstruktor-Funktion aus den Zeilen 4<br />
bis 6 erzeugt werden.<br />
Dadurch erbt das Objekt »Custom« in<br />
Zeile 10 alle Methoden und Eigenschaften<br />
vom »EventEmitter«. <strong>Die</strong> Methode »on()«<br />
vereinbart in den Zeilen 11 bis 13 für das<br />
Schawawa-Event eine Callback-Funktion.<br />
<strong>Die</strong> Zeilen 15 bis 17 lösen Schawawa<br />
durch Aufruf der Methode »emit()« mit einer<br />
Verzögerung von 2000 Millisekunden<br />
aus. Emit übernimmt als ersten Parameter<br />
den Namen des auszulösenden Events.<br />
<strong>Die</strong> folgenden Parameter reicht das Skript<br />
an die Callback-Funktion weiter.<br />
Events<br />
Streams<br />
HTTP-Servers. <strong>Die</strong> Zeilen 1 bis 3 binden<br />
zunächst alle benötigten Module ein. <strong>Die</strong><br />
Variable »www« in Zeile 4 speichert das<br />
Wurzelverzeichnis des HTTP-Servers,<br />
das Objekt »mimes« in Zeile 5 die Mime-<br />
Typen, das Objekt »errors« in Zeile 6 alle<br />
Statusmeldungen aus dem HTTP-Protokoll.<br />
<strong>Die</strong> Zeilen 8 bis 20 erzeugen das<br />
HTTP-Server-Objekt und binden es an<br />
den Port 3001.<br />
<strong>Die</strong> Callback-Funktion findet sich in den<br />
Zeilen 8 bis 20. Zunächst hängt Zeile 9<br />
den Pfadanteil der aufgerufenen URL an<br />
den Pfad des Wurzelverzeichnisses an<br />
und speichert ihn in der Variablen »med«.<br />
<strong>Die</strong> folgende Zeile liest den Mime-Type<br />
der HTTP-Antwort anhand der Datei-<br />
Erweiterung der angefragten Datei aus<br />
dem Objekt »mimes« aus und speichert<br />
ihn in der Variablen »mime«.<br />
Für einen bekannten Mime-Typ erzeugt<br />
Zeile 12 einen lesenden Stream auf der<br />
abgefragten Datei »med« und speichert<br />
ihn im Objekt »rst«. <strong>Die</strong> Übertragung der<br />
Datei in die HTTP-Antwort mit »pipe()«<br />
in Zeile 16 beginnt erst nach dem Ausführen<br />
der Callback-Funktion zum Event<br />
»open« in Zeile 13. Den Abschluss der<br />
Übertragung macht die HTTP-Antwort im<br />
Callback zum Event »end«. Im Fehlerfall<br />
(Zeile 15 oder 18) gibt der Server statt der<br />
Node.js und Redis 05/2013<br />
Programmieren<br />
www.linux-magazin.de<br />
85<br />
Javascript soll es Entwicklern einfacher<br />
machen, auf Benutzereingaben zu reagieren.<br />
Beim Einsatz im Browser löst ein Klick<br />
auf einen Knopf in einer Webseite ein so<br />
genanntes Event aus und der Javascript-<br />
Interpreter daraufhin die an das Event<br />
gebundene Callback-Funktion. Node.js<br />
verwendet Events, um auf asynchrone<br />
Lese- und Schreiboperationen zu reagieren,<br />
der Objekt-Eventemitter aus dem<br />
Apache<br />
Speicherbelegung<br />
Node<br />
Streams vereinfachen das Lesen und<br />
Schrei ben von Daten in Node.js. Ein<br />
Stream bietet den Zugriff auf seine Daten<br />
mit Hilfe der gleichnamigen Schnittstelle.<br />
Eine HTTP-Anfrage – etwa »req« in<br />
Listing 2 – ist ein lesender Stream. Eine<br />
HTTP-Antwort – etwa »resp« in Listing<br />
2 – ist ein schreibender Stream.<br />
Ein lesender und ein schreibender Stream<br />
lassen sich mit der Methode »pipe()«<br />
verlustfrei synchronisieren. Pipe unterbricht<br />
die Synchronisation, wenn ein Buffer<br />
überzulaufen droht. Listing 5 zeigt<br />
Streams am Beispiel eines streamenden<br />
Listing 3: Skalieren des<br />
Echo-Servers<br />
01 var http=require('http'),<br />
02 cluster=require('cluster'),<br />
03 cpus=require('os').cpus().length;<br />
04 if (cluster.isMaster) {<br />
05 for(var i = 0; i < cpus; i++) {<br />
06 cluster.fork();<br />
07 }<br />
08 } else {<br />
09 http.createServer(function(req, resp) {<br />
10 resp.writeHead(200, {'Content‐Type': 'text/plain'});<br />
11 resp.end(req.url);<br />
12 }).listen(3000);<br />
13 }<br />
HTTP-Anfrage<br />
Prozess / Thread<br />
Abbildung 2: Im Vergleich zu Apache spart Node.js<br />
mit nur einem Prozess deutlich Speicherplatz.<br />
Listing 4: Eventemitter vererbt<br />
01 var events = require('events'),<br />
02 util = require('util');<br />
03 <br />
04 var Custom = function() {<br />
05 title:"Custom Object";<br />
06 }<br />
07 //Custom.prototype = new events.Emitter;<br />
08 util.inherits(Custom, events.EventEmitter);<br />
09 <br />
10 var custom = new Custom();<br />
11 custom.on('schawawa', function(arg) {<br />
12 console.log('react on schawawa with data:<br />
'+arg);<br />
13 });<br />
14 <br />
15 setTimeout(function() {<br />
16 custom.emit('schawawa', '\\0000');<br />
17 }, 2000);
Programmieren<br />
www.linux-magazin.de Node.js und Redis 05/2013<br />
86<br />
Abbildung 3: Live vom Localhost: Der HTTP-Server streamt ein Video.<br />
Datei eine Fehlermeldung aus (Funktion<br />
»error()« in den Zeilen 22 bis 25). Abbildung<br />
3 zeigt ein Video im Webbrowser<br />
Firefox, das Node.js als HTTP-Server auf<br />
den Client streamt.<br />
Module<br />
Node.js eröffnet mit seinen Modulen die<br />
Möglichkeit, Objekte auszulagern und<br />
erneut zu verwenden. Listing 6 zeigt<br />
den Echo-Server aus Listing 2 als Node.<br />
js-Modul. Es liegt im aktuellen Arbeitsverzeichnis<br />
in der Datei »echo.js«. Der<br />
Quelltext des Echo-Servers aus Listing<br />
2 kommt in die Methode »start()« des<br />
Objekts »exports«. Listing 7 schließlich<br />
zeigt, wie sich das Modul verwenden<br />
lässt, wenn es ebenfalls im aktuellen Arbeitsverzeichnis<br />
liegt.<br />
<strong>Die</strong> Require-Funktion in Zeile 1 bindet<br />
das Modul über den relativen Pfad<br />
»./echo.js« ein. Der Aufruf von Require<br />
gibt eine Referenz auf das Objekt »exports«<br />
in Listing 6 zurück. Exports enthält<br />
alle öffentlichen Eigenschaften und<br />
Methoden des Moduls, auch die Methode<br />
»start()« aus Zeile 2.<br />
Node.js-Module lassen sich zudem mit<br />
dem mitgelieferten Paketmanager Npm<br />
packen, veröffentlichen und wieder einbinden.<br />
Das Projekt Npmjs [5] verwaltet<br />
zurzeit etwa 20 000 gepackte Module. Mit<br />
»sudo npm install package‐name« installiert<br />
Npm das gepackte Modul lokal im<br />
Unterverzeichnis »node_modules« des<br />
aktuellen Arbeitsverzeichnisses. »sudo<br />
install ‐g package‐name« dagegen installiert<br />
es global in der Verzeichnisstruktur<br />
der Node.js-Distribution.<br />
Listing 8 zeigt beispielhaft die Verzeichnisstruktur<br />
des entpackten Moduls<br />
»echo«. Es beinhaltet eine Paketbeschreibung<br />
in der Datei »package.json« sowie<br />
das eigentliche Echo-Modul aus Listing 6<br />
in der Datei »index.js«. <strong>Die</strong> Paketbeschreibung<br />
in Listing 9 enthält ein Json-Objekt<br />
mit den Feldern »name«, »version« und<br />
»dependencies«, also Abhängigkeiten zu<br />
anderen Modulen.<br />
Echo hängt lediglich von »http« ab. Der<br />
Feldwert »*« in Zeile 5 steht dabei für<br />
jede beliebige Version von »http«. Alternativ<br />
kann der Admin hier auch – wie in<br />
Listing 13 – konkrete Versionsnummern<br />
angeben. Module im Unterverzeichnis<br />
»node_modules« findet die Require-Funktion<br />
anhand des Verzeichnisnamens, beispielsweise<br />
»require('echo')«.<br />
Npm bringt für Node.js zahlreiche Erweiterungen,<br />
um funktionale Webanwendungen<br />
in wenigen Schritten zu erstellen.<br />
Das folgende Beispiel zeigt, wie Programmierer<br />
mit Node.js, dem Webframework<br />
Express, der Templatesprache Jade [6]<br />
und dem NoSQL-Datenbanksystem Redis<br />
[7] eine Webanwendung bauen. Abbildung<br />
4 zeigt als Beispielanwendung ein<br />
Buchungssystem für Parkhäuser im Einsatz.<br />
Mit Buchungscode kann der Fahrer<br />
einchecken, ohne zu warten. Nach dem<br />
Checkout gibt das System den Parkplatz<br />
wieder zur Reservierung frei.<br />
Redis<br />
Relationale Datenbanksysteme wie etwa<br />
MySQL erwarten, dass der Programmierer<br />
alle Datenbankobjekte deklariert hat.<br />
<strong>Die</strong> konstante Pflege des Schemas wird<br />
schnell aufwändig und damit kostenintensiv.<br />
Zwar speichert ein relationales<br />
Datenbanksystem die Daten stets konsistent,<br />
doch die dazu nötigen Maßnahmen<br />
gehen auch zu Lasten der Verfügbarkeit.<br />
NoSQL-Datenbanksysteme wie Redis verringern<br />
die Konsistenz der Daten zugunsten<br />
höherer Verfügbarkeit (Abbildung 5).<br />
Eine vorherige Deklaration der Objekte<br />
ist nicht nötig.<br />
Im folgenden Beispiel soll Redis die Daten<br />
der Anwendung speichern. Redis ist<br />
Open-Source-Software unter BSD-Lizenz<br />
und lag bei Redaktionsschluss in Version<br />
2.6.5 vor. Unter Ubuntu 12.10 installiert<br />
Listing 5: Pipe synchronisiert<br />
01 var http=require('http'),<br />
02 path=require('path'),<br />
03 fs=require('fs'),<br />
04 www="www",<br />
05 mimes={"jpg":"image/jpeg","webm":"video/webm"};<br />
06 errors={404:"Not found", 415:"Unsupported Media Type"};<br />
07 <br />
08 http.createServer(function(req, res) {<br />
09 var med=path.join(www, req.url),<br />
10 mime=mimes[path.extname(med).substring(1)];<br />
11 if (mime) {<br />
12 var rst=fs.createReadStream(med);<br />
13 rst.on("open", function() {res.writeHead(200, {'Content‐Type':<br />
mime})});<br />
14 rst.on("end", function() {res.end();});<br />
15 rst.on("error", function() {error(res, 404, med)});<br />
16 rst.pipe(res);<br />
17 } else {<br />
18 error(res, 415, med);<br />
19 }<br />
20 }).listen(3001);<br />
21 <br />
22 function error(res, code, path) {<br />
23 res.writeHead(code, {'Content‐Type': "text/html"});<br />
24 res.end(""+code+" ‐ "+errors[code])<br />
25 }
der Admin Redis mit dem simplen Befehl<br />
»sudo apt‐get install redis«.<br />
Redis speichert strukturierte Daten wie<br />
Listen, Hashes, Mengen und Zeichenketten<br />
im Hauptspeicher des Servers und auf<br />
Wunsch auch auf der Festplatte. <strong>Die</strong> Datenhaltung<br />
im Hauptspeicher macht Redis<br />
performant: Obwohl der Redis-Server<br />
nur in einem Prozess läuft, kann er auf<br />
einem durchschnittlichen <strong>Linux</strong>-Server<br />
bis zu 500 000 Operationen pro Sekunde<br />
ausführen [8].<br />
<strong>Die</strong> Leistung der NoSQL-Datenbank<br />
ergibt sich primär durch den freien<br />
Hauptspeicher, es lassen sich aber auch<br />
mehrere Server zu einem Cluster zusammenfassen.<br />
Zudem bietet Redis atomare<br />
Operationen und verfügt über einen<br />
Transaktions-Mechanismus. Listing 10<br />
zeigt Redis in der Beispielanwendung<br />
zusammen mit Node.js.<br />
Redis anbinden<br />
In Zeile 1 bindet die Require-Funktion zunächst<br />
das Modul »redis« ein. Anschließend<br />
erstellt die Methode »createClient()«<br />
eine Verbindung zum Redis-Server auf<br />
dem lokalen Webserver und speichert<br />
diese in der Variablen »db«. <strong>Die</strong> Methode<br />
»book()« bindet in Zeile 3 das Anlegen einer<br />
Buchung an die Auslastung des Parkhauses.<br />
Ist es nicht ausgebucht, dann erzeugt<br />
Zeile 6 einen neuen Buchungscode<br />
(Variable »code«). In der folgenden Zeile<br />
fügt das Skript den Buchungscode mit<br />
der Methode »sadd()« in Redis der Menge<br />
der unbestätigten Buchungen (Schlüssel<br />
»open«) hinzu.<br />
Sadd und Srem<br />
F Abbildung 4:<br />
Mit einem Klick auf<br />
»Checkout« meldet<br />
sich der Fahrer am<br />
Parkhaus ab.<br />
E Abbildung 5: Datenbanksysteme<br />
können<br />
durch geringere Konsistenz<br />
an Verfügbarkeit<br />
gewinnen.<br />
<strong>Die</strong> Methode »sadd()« übernimmt im ersten<br />
Parameter den Schlüsselnamen und<br />
im zweiten den Wert, dem die unbestätigten<br />
Buchungen zugeschlagen werden sollen.<br />
Am Präfix »s« von »sadd()« lässt sich<br />
der Datentyp »set« ablesen. Falls »open«<br />
in der Datenbank noch nicht existiert,<br />
legt die Datenbank ihn vor dem Hinzufügen<br />
des Buchungscodes mit »sadd()« an.<br />
<strong>Die</strong> Methode »checkin()« entfernt in Zeile<br />
15 mit »srem()« dagegen den übergebenen<br />
Buchungscode (Variable »code«) aus<br />
der Menge der unbestätigten Buchungen<br />
in Redis. »srem()« übernimmt im ersten<br />
Parameter den Schlüsselnamen, im zweiten<br />
den zu entfernenden Wert und im<br />
dritten eine Callback-Funktion.<br />
Wie alle Methoden des Node.js-Moduls<br />
für Redis [9] führt dieses auch die Methode<br />
»srem()« asynchron aus und ruft<br />
nach dem Entfernen des Werts aus dem<br />
Set die Callback-Funktion aus. <strong>Die</strong>se<br />
übernimmt im ersten Parameter eine<br />
mögliche Fehlermeldung und im zweiten<br />
den Rückgabewert der Redis-Operation.<br />
<strong>Die</strong> Callback-Funktion in Zeile 15 fügt<br />
Konsistenz<br />
den Buchungscode mit der Methode<br />
»sadd()« der Menge der bestätigten Buchungen<br />
zum Schlüssel »checkedIn« in<br />
Redis hinzu. <strong>Die</strong> Methode »checkout()«<br />
01 var http = require('http');<br />
02 exports.start = function(port) {<br />
03 return http.createServer(function(req, resp) {<br />
04 resp.writeHead(200, {'Content‐Type': 'text/plain'});<br />
05 resp.end(req.url);<br />
06 }).listen(port);<br />
07 }<br />
Listing 7: Module unter Node.js<br />
01 var echo = require('./echo.js');<br />
02 var server = echo.start(3000);<br />
Listing 8: Verzeichnisstruktur des<br />
Echo-Moduls<br />
01 |+ node_modules<br />
02 |+ echo<br />
03 |‐ package.json<br />
04 |‐ index.js<br />
Listing 9: Paketbeschreibung<br />
01 {<br />
02 "name": "Echo Server",<br />
03 "version": "0.0.1",<br />
04 "dependencies": {<br />
05 "http": "*"<br />
06 }<br />
07 }<br />
ACID<br />
Verfügbarkeit<br />
BASE<br />
Listing 6: Echo-Server als<br />
öffentliche Methode<br />
Node.js und Redis 05/2013<br />
Programmieren<br />
www.linux-magazin.de<br />
87<br />
Listing 10: Redis anbinden<br />
01 var db = require('redis').createClient();<br />
02 <br />
03 exports.book = function(req, res) {<br />
04 stats(function(free) {<br />
05 if (free > 0) {<br />
06 var code = "XCP"+Math.floor(Math.<br />
random()*1000);<br />
07 db.sadd("open", code);<br />
08 }<br />
09 show(res, 'book', (free>0)?0:1, code);<br />
10 });<br />
11 };<br />
12 <br />
13 exports.checkin = function(req, res) {<br />
14 var code = req.body.code;<br />
15 db.srem("open", code, function(err, rp) {<br />
16 if (rp > 0) {<br />
17 db.sadd("checkedIn", code);<br />
18 }<br />
19 show(res, 'checkin', (rp>0)?0:1, code);<br />
20 });<br />
21 };<br />
22 <br />
23 exports.checkout = function(req, res) {<br />
24 var code = req.body.code; // closure<br />
25 db.srem("checkedIn", code, function<br />
(err, rp) {<br />
26 show(res, 'checkout', (rp>0)?0:1, code);<br />
27 });<br />
28 };
Programmieren<br />
www.linux-magazin.de Node.js und Redis 05/2013<br />
88<br />
01 function stats(cbk) {<br />
01 {<br />
02 "name": "Buchung",<br />
03 "version": "0.0.1",<br />
04 "dependencies": {<br />
nutzt in Zeile 25 wiederum »srem()«, um<br />
einen Buchungscode nach dem Checkout<br />
endgültig zu entfernen. Damit steht der<br />
Parkplatz neu ankommenden Autofahrern<br />
wieder zur Verfügung.<br />
Redis-Transaktionen<br />
<strong>Die</strong> Funktion »stats()« in Listing 11 zeigt<br />
beispielhaft, wie Programmierer Rdis-<br />
Transaktionen verwenden. Zunächst öffnet<br />
Zeile 2 mit der Methode »multi()«<br />
eine Transaktion und speichert sie in<br />
der gleichnamigen Variablen ab. <strong>Die</strong> Methoden<br />
»get()« und »scard()« – auf das<br />
Transaktionsobjekt »multi« angewendet<br />
– lassen die Operationen innerhalb der<br />
Transaktion ablaufen. <strong>Die</strong>s kann auch –<br />
wie in Zeile 3 – als Verkettung geschehen.<br />
<strong>Die</strong> Methode »exec()« in Zeile 4 schließt<br />
die Transaktion ab.<br />
02 var multi = db.multi();<br />
03 multi.get('max').scard('open').scard('checkedIn');<br />
04 multi.exec(function(err, rp) {<br />
05 cbk((rp[0] ‐ rp[1] ‐ rp[2]), rp[1], rp[2]);<br />
06 });<br />
01 var connect = require('connect');<br />
02 var app = connect()<br />
03 .use(connect.logger())<br />
04 .use(function(req, res) {<br />
05 res.end(req.url)<br />
06 })<br />
07 .listen(3000);<br />
05 "express": "3.0.4",<br />
06 "jade": "*",<br />
07 "redis": "*"<br />
08 }<br />
09 }<br />
Listing 11: Zusammengefasste<br />
Transaktionen<br />
Listing 12: »use()« bindet<br />
Middleware ein<br />
Listing 13: »project.js«<br />
<strong>Die</strong> Parameterliste der übergebenen Callback-Funktion<br />
ist wie in Listing 10 strukturiert.<br />
Jedoch speichert Listing 11 die<br />
Rückgabewerte der Redis-Operationen in<br />
einem Feld. <strong>Die</strong> vorliegende Callback-<br />
Funktion ruft eine weitere Callback-Funktion<br />
auf, die im ersten Parameter die Anzahl<br />
der freien Parkplätze, im zweiten die<br />
Anzahl der unbestätigten Buchungen und<br />
im dritten die der bestätigten Buchungen<br />
übernimmt. <strong>Die</strong> Methode »scard()« zählt<br />
die Mitglieder einer Menge.<br />
Express und Connect<br />
F Abbildung 6: <strong>Die</strong><br />
Middleware Logger<br />
protokolliert die HTTP-<br />
Anfragen per Standardausgabe.<br />
Das Webframework Express, mit dem im<br />
Folgenden die Beispielanwendung erstellt<br />
wird, ist Teil des Middleware-Frameworks<br />
Connect [10]. Das unter MIT-Lizenz erscheinende<br />
Connect liegt derzeit in der<br />
Version 2.7.1 vor. Npm installiert es lokal<br />
mit dem Befehl »sudo npm install connect«.<br />
Connect dient zum Einbinden von<br />
Middleware, also von Programmen, die<br />
Standardaufgaben wie das Protokollieren<br />
oder das Parsen von HTTP-Anfragen<br />
oder die Verwaltung einer Session übernehmen.<br />
Connect enthält bereits über 20 verschiedene<br />
Middleware-Funktionen. Weitere<br />
Middleware findet sich im Wiki von<br />
Connect [11]. Listing 12 zeigt den Echo-<br />
Server mit Connect. <strong>Die</strong> Methode »use()«<br />
bindet in Zeile 3 die Middleware »logger«<br />
ein. <strong>Die</strong>se protokolliert HTTP-Anfragen<br />
Abbildung 7: Das Kommandozeilentool Express beim<br />
Anlegen eines Anwendungsgerüsts.<br />
per Standardausgabe. Zeilen 4 bis 6 beantworteten<br />
die HTTP-Anfrage im Stil des<br />
Echo-Servers aus Listing 2. Abbildung 6<br />
zeigt die Ausgabe des Loggers.<br />
Das Webframework Express [12] erleichtert<br />
das Entwickeln von Webanwendungen<br />
unter Node.js erheblich. Neben der<br />
Einbindung von Middleware per Connect<br />
bietet Express zudem Routen, verschiedene<br />
Template-Engines sowie viele hilfreiche<br />
API-Funktionen. Express erscheint<br />
unter MIT-Lizenz und weist derzeit die<br />
Versionsnummer 3.0.5 auf.<br />
Npm installiert es global mit dem Befehl<br />
»npm install ‐g express«. Danach schafft<br />
sich der Programmierer mit dem gleichnamigen<br />
Kommandozeilentool ein passendes<br />
Gerüst, beispielsweise »express<br />
booking«. Das landet dann im aktuellen<br />
Arbeitsverzeichnis, die angelegten Dateien<br />
und Verzeichnisse sind in Abbildung<br />
7 dargestellt.<br />
Mit Jade und Redis<br />
Listing 13 zeigt die zugehörige Paketbeschreibung<br />
»project.js«. Das Beispiel<br />
hängt von Express, Redis und der Template-Engine<br />
Jade ab. <strong>Die</strong> abschließende<br />
Befehlsfolge »cd booking && npm install«<br />
installiert alle benötigten Module im Unterverzeichnis<br />
»node‐modules«.<br />
In Listing 14 findet sich der Quellcode<br />
der Beispielanwendung aus der Datei<br />
»app.js«. <strong>Die</strong> Zeilen 1 bis 4 binden die<br />
benötigten Module ein, Zeile 5 erzeugt<br />
das Express-Objekt »app«. <strong>Die</strong> Zeilen 7<br />
bis 8 machen Angaben zur verwendeten<br />
Template-Engine Jade. <strong>Die</strong> Methode<br />
»use()« in den Zeilen 9 bis 18 bindet die<br />
Middleware ein.<br />
Dabei ist die Reihenfolge des Aufrufs<br />
der Middleware wichtig: <strong>Die</strong> einzelnen<br />
Komponenten werden für alle HTTP-Anfragen<br />
nacheinander aufgerufen. Findet<br />
beispielsweise die Middleware aus Zeile 9<br />
anhand der URL ein gleichnamiges Dokument<br />
im Verzeichnis »public«, so sendet<br />
sie dies und schließt das Bearbeiten der<br />
HTTP-Anfrage ab.<br />
Das Parsen des Körpers der HTTP-Anfrage<br />
in Zeile 10 erfolgt nur für HTTP-<br />
Anfragen, zu deren URL Zeile 9 kein passendes<br />
Dokument gefunden hat. Zeile 12<br />
speichert die Anzahl der Parkplätze zum<br />
Schlüssel »max« in Redis. Der Aufruf der<br />
Funktion »next()« ohne Wert (Abbildung
8) in der Callback-Funktion startet die<br />
nächste Middleware. Zeile 14 aktiviert die<br />
Behandlung von Routen.<br />
<strong>Die</strong> Zeilen 15 bis 18 legen eine Callback-<br />
Funktion für Fehler fest. <strong>Die</strong>se Funktion<br />
verwendet vier Parameter: Der erste übernimmt<br />
eine Fehlermeldung, der zweite<br />
die HTTP-Anfrage, der dritte die HTTP-<br />
Antwort, der vierte eine Referenz auf die<br />
Funktion »next()«. <strong>Die</strong> Callback-Funktion<br />
lässt sich mit »next()« und einem nicht<br />
leeren Parameter aufrufen, zum Beispiel<br />
mit »next('user error')«.<br />
<strong>Die</strong> Methoden-Aufrufe in den Zeilen 20<br />
bis 24 weisen dem Pfadanteil der aufgerufenen<br />
URL eine Callback-Funktion aus<br />
dem Objekt »routes« zu. <strong>Die</strong> Methoden-<br />
Namen korrespondieren mit der Methode<br />
der HTTP-Anfrage. Nur wenn Pfadanteil<br />
und Methode übereinstimmen, wird die<br />
Callback-Funktion aufgerufen. Mit »all()«<br />
statt »get()« oder »post()« lässt sich jede<br />
Methode erfassen. <strong>Die</strong> Routenbeschreibungen<br />
können auch reguläre Ausdrücke<br />
enthalten, beispielsweise passt »/\/\w<br />
+\/node/« auf die URLs »/v8/code« oder<br />
»/js/node«. <strong>Die</strong> Zeichenkette »'*'« steht<br />
für die Defaultroute.<br />
Listing 16 zeigt die Callback-Funktionen<br />
für die Routen aus Listing 14, die in<br />
Listing 10 noch nicht enthalten waren.<br />
<strong>Die</strong> Funktion »index()« erzeugt in Zeile<br />
2 durch Aufruf der in Zeile 10 implementierten<br />
Funktion »show()« die Startseite<br />
der Beispielanwendung. »show()« übernimmt<br />
im ersten Parameter das Objekt<br />
der HTTP-Antwort und im zweiten den<br />
Namen einer Jade-Vorlage. Show benutzt<br />
die in Listing 11 beschriebene Funktion<br />
Node.js und Redis 05/2013<br />
Programmieren<br />
www.linux-magazin.de<br />
89<br />
Listing 14: Kern der Beispielanwendung<br />
01 var express = require('express'),<br />
02 routes = require('./routes'),<br />
03 http = require('http'),<br />
04 redis = require('redis'),<br />
05 app = express();<br />
06 <br />
07 app.set('views', __dirname + '/views');<br />
08 app.set('view engine', 'jade');<br />
09 app.use(express.static(__dirname + '/public'));<br />
10 app.use(express.bodyParser());<br />
11 app.use(function(req, res, next) {<br />
12 redis.createClient().set('max', 10,<br />
function() {next();});<br />
13 });<br />
14 app.use(app.router);<br />
15 app.use(function(err, req, res, next) {<br />
16 console.log(err.stack);<br />
17 res.send(500, 'Internal Server Error<br />
');<br />
18 });<br />
19 <br />
20 app.get('/', routes.index);<br />
21 app.post('/book', routes.book);<br />
22 app.post('/checkin', routes.checkin);<br />
23 app.post('/checkout', routes.checkout);<br />
24 app.post('/reset', routes.reset);<br />
25 app.listen(3003);<br />
Alles zum ThemA Android<br />
<strong>Die</strong> Monatszeitschrift für Android-Fans, Smartphone- und Tablet-Nutzer<br />
DigisuB: nur 39,90 € im Jahr (12 PDFs)<br />
Jetzt bestellen unter:<br />
www.android–user.de/digisub<br />
Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@android-user.de<br />
+<br />
Lesen Sie News und<br />
Artikel schon 1 Woche<br />
vor dem Kiosk-Termin!
Programmieren<br />
www.linux-magazin.de Node.js und Redis 05/2013<br />
90<br />
01 doctype 5<br />
02 html<br />
03 head<br />
»stats()«, um die Erzeugung des HTML-<br />
Dokuments aus dem Jade-Template mit<br />
den statistischen Daten des Parkhauses<br />
zu parametrisieren.<br />
<strong>Die</strong> Methode »reset« in Zeile 5 löscht die<br />
Sets »open« und »checkedin« in Redis,<br />
bevor sie mit »render()« eine Bestätigung<br />
in HTML ausgibt. <strong>Die</strong> Methode »render()«<br />
wiederum erzeugt aus der Jade-Vorlage<br />
04 link(rel='stylesheet', href='/stylesheets/<br />
01 exports.index = function(req, res){<br />
02 show(res, 'index');<br />
03 };<br />
04 <br />
05 exports.reset = function(req, res) {<br />
06 db.del('open', 'checkedIn');<br />
07 res.render('reset', par());<br />
08 }<br />
09 <br />
style.css')<br />
05 body<br />
06 #ticket<br />
07 #symbol P<br />
next ()<br />
08 block content<br />
HTTP-Anfrage<br />
Listing 15: Verweis auf eine<br />
CSS-Datei<br />
Listing 16: Exportieren<br />
10 function show(res, tpl, err, code) {<br />
Connect<br />
Abbildung 8: Der Aufruf von »next()« ohne Wert<br />
geht zur nächsten Middleware über.<br />
»reset« ein HTML-Dokument. <strong>Die</strong> Hilfsfunktion<br />
»par()« in Zeile 16 formatiert<br />
die statistischen Angaben zum Parkhaus<br />
zwecks Parametrisierung der Vorlage. <strong>Die</strong><br />
Funktionen aus Listing 16 komplettieren<br />
also Listing 14. Der Quellcode ist in der<br />
Datei »routes/index.js« zu finden.<br />
Jade-Vorlagen<br />
<strong>Die</strong> Beispielanwendung verwendet Jade,<br />
um HTML-Dokumente zu erzeugen. Express<br />
speichert die Vorlagen in Dateien<br />
mit der Endung ».jade« im Unterverzeichnis<br />
»views« ab. Jade-Vorlagen sind<br />
in einer eigenen Sprache verfasst, die<br />
neben einer verkürzten Schreibweise von<br />
HTML-Markup auch Variablen, Schleifen<br />
und Verzweigungen umfasst.<br />
Listing 17 zeigt eine Jade-Vorlage aus der<br />
Beispielanwendung. In Zeile 1 bindet die<br />
Direktive »extends« den Kopf des HTML-<br />
Dokuments aus der Vorlage »layout.jade«<br />
(siehe Listing 15) ein. Im Gegensatz zu<br />
einer einfachen Inklusion stellt sich die<br />
Vorlage durch »extends« als Erweiterung<br />
von »layout« dar.<br />
Ab Zeile 3 beginnt ein »content«-Bereich,<br />
die darauf folgende Zeile erzeugt einen<br />
»div«-Container mit dem Attributwert<br />
»app« für das Attribut »id«. Zeile 5 dereferenziert<br />
in dem »h3«-Element »free« die<br />
Werte der Variablen »free«, »open« und<br />
»ckd« ähnlich wie in Bash-Skripten.<br />
11 stats(function(free, open, ckd) {<br />
12 res.render(tpl, par(free, open, ckd, err,<br />
code));<br />
13 });<br />
14 }<br />
15 <br />
16 function par(free, open, ckd, err, code) {<br />
17 return {"code": code, "err": err, "free":<br />
free, "open": open, "ckd": ckd};<br />
18 }<br />
<strong>Die</strong> Case-Anweisung ab Zeile 6 behandelt<br />
den Fehler in der Variablen »err«.<br />
<strong>Die</strong> Syntax von Jade vermeidet schließende<br />
Tags, Verschachtelungen zeichnet<br />
sie durch Einrückungen aus. <strong>Die</strong> Auszeichnung<br />
von Geschwister-Elementen<br />
beginnt stets in derselben Spalte, so wie<br />
in den Zeilen 10, 11, 12 oder 13.<br />
Fazit<br />
<strong>Die</strong> Stärken von Javascript lassen sich<br />
mit Node.js auch Server-seitig nutzen.<br />
Vielfältige Module wie Connect oder Express<br />
erweitern den Funktionsumfang<br />
des Node.js-Frameworks beträchtlich und<br />
erlauben effiziente Programmierung von<br />
performanten und gut skalierbaren Webanwendungen.<br />
Aber die Programmierung<br />
lässt sich auch auf die Client-Seite ausdehnen.<br />
So entstehen Webanwendung<br />
aus einem Guss statt eines Sprachengewirrs<br />
wie mit LAMP-Servern. (mfe) n<br />
Infos<br />
[1] Node.js: [http:// nodejs. org]<br />
[2] Chrome V8:<br />
[http:// code. google. com/ p/ v8/]<br />
[3] Eventmachine:<br />
[http:// rubyeventmachine. com]<br />
[4] Twisted:<br />
[http:// twistedmatrix. com/ trac/]<br />
[5] Npmjs: [http:// npmjs. org]<br />
[6] Jade: [http:// jade‐lang. com]<br />
[7] Redis: [http:// redis. io]<br />
[8] Redis Performance:<br />
[http:// redis. io/ topics/ faq]<br />
[9] Node.js-Modul für Redis:<br />
[https:// github. com/ mranney/ node_redis]<br />
[10] Connect:<br />
[http:// www. senchalabs. org/ connect/]<br />
[11] Connect-Wiki: [https:// github. com/<br />
senchalabs/ connect/ wiki]<br />
[12] Express:<br />
[http:// expressjs. com]<br />
Listing 17: Check-in am Parkhaus<br />
01 extends layout<br />
10 h1 Sie sind eingecheckt<br />
02 <br />
11 form(action="/checkout", method="post")<br />
03 block content<br />
12 input(type="hidden", name="code",<br />
04 #app<br />
value=code)<br />
05 h3#free #{free} frei, #{open} gebucht und<br />
13 input(type="submit", value="Checkout")<br />
#{ckd} belegt<br />
06 case err<br />
07 when 1<br />
14 form(action="/", method="get")<br />
15 input(type="submit", value="Erneut Buchen")<br />
08 h1 Checkin nicht möglich<br />
16 form(action="/reset", method="post")<br />
09 default<br />
17 input(type="submit", value="Zurücksetzen")<br />
Der Autor<br />
Dipl.-Phys. Andreas Möller<br />
[http:// pamoller. com] beschäftigt<br />
sich seit 2001 mit<br />
der Entwicklung Internetbasierter<br />
Software. Dazu<br />
zählen Datenbank- und<br />
Webanwendungen sowie Arbeiten auf dem Gebiet<br />
des Single Source Publishing. Zurzeit ist er<br />
als Berater und freier Autor tätig.
Qmake für Fortgeschrittene<br />
Großbaustelle<br />
Qmake vs. Cmake 05/2013<br />
Programmieren<br />
Größere Projekte, die Software auf Basis von Qt entwickeln, greifen gern zu Cmake, um den Code zu übersetzen.<br />
Dabei eignet sich das Qt-eigene Build-System Qmake durchaus auch für den Bau umfangreicher Anwendungen.<br />
Es beherrscht Shadow-Builds und kennt Abhängigkeiten für Pre- und Postbuild-Targets. Alexander Nassian<br />
www.linux-magazin.de<br />
91<br />
Seine Anwesenheit bleibt oft unbemerkt:<br />
Qmake, das ursprünglich von Trolltech<br />
entwickelte Build-System für Qt-Anwendungen<br />
und die Qt-Bibliothek macht in<br />
vielen kleinen bis mittelgroßen Projekten<br />
meist einfach, was Entwickler erwarten.<br />
Wachsen die Projekte allerdings, dann<br />
wechseln viele Qt-Entwickler plötzlich<br />
zur Qmake-Alternative Cmake, die ursprünglich<br />
als Build-System für das ITK<br />
(Insight Segmentation and Registration<br />
Toolkit) entstand.<br />
Als Begründung hört man dann meist,<br />
Qmake sei für viele Aufgaben schlicht ungeeignet.<br />
Im KDE-Projekt etwa ist Cmake<br />
das Werkzeug der Wahl, wenn es darum<br />
geht, große Mengen an Quellcode zu<br />
übersetzen. Klassische Build-Systeme wie<br />
Autotools, Ant und Ähnliche spielen in<br />
der Qt-Entwicklung aufgrund des höheren<br />
Integrationsaufwands indes kaum eine<br />
Rolle. Dass Qmake aber viel mehr kann,<br />
zeigt dieser Artikel: Mit dem Qt-eigenen<br />
Build-System lassen sich durchaus auch<br />
umfangreiche, plattform unabhängige<br />
Soft wareprojekte schultern.<br />
Qmake versus Cmake<br />
Qmake weist durchaus Ähnlichkeiten<br />
mit dem bereits im Jahr 2000 gestarteten<br />
Cmake auf: Beide Systeme erzeugen aus<br />
einer Projektdatei ein »Makefile«, an dem<br />
sich »make« und »make install« entlanghangeln.<br />
Ungeachtet zahlloser Opti onen,<br />
mit deren Hilfe der Codebauer das Erzeugen<br />
des Makefiles sehr genau kontrolliert,<br />
folgt ein typischer Build-Vorgang für<br />
Cmake und Qmake den Befehlen »cmake<br />
&& make && make install« respektive<br />
»qmake && make && make install«.<br />
So ähnlich die prinzipielle Vorgehensweise<br />
beim Build ist, so unterschiedlich<br />
fällt die Syntax der beiden Build-Dateien<br />
aus. <strong>Die</strong>se Unterschiede veranschaulicht<br />
ein kleines Beispielprojekt, das ein „Hello-<br />
World“-Programm übersetzt, welches aus<br />
den Komponenten »main.cpp«, »hellowindow.cpp«,<br />
»hellowindow.h« sowie<br />
»hellowindow.ui« besteht. Es beinhaltet<br />
einen Installer und Übersetzungen, auf<br />
die der Artikel später eingeht.<br />
Hallo Doppelwelt<br />
Cmake-Projekte zeichnen sich dadurch<br />
aus, dass sie üblicherweise eine Datei<br />
namens »CMakeLists.txt« im Top-<br />
Level-Verzeichnis des Projekts ablegen<br />
(Listing 1). Prinzipiell lassen sich aber<br />
auch mit diesem System Unterprojekte in<br />
Form weiterer »CMakeLists.txt«-Dateien<br />
einbinden, ganz so wie bei Qmake.<br />
Der erfahrene Qt-Entwickler weiß, dass<br />
vor dem eigentlichen Kompilieren und<br />
Linken noch einige Tools und Codegeneratoren<br />
an die Arbeit gehen. Qmake-<br />
Projekte definiert er in einer ».pro«-Datei,<br />
die idealerweise den Namen des Ordners<br />
trägt, in dem sie liegt (Listing 2).<br />
<strong>Die</strong>ses System weist – ähnlich wie das<br />
von Cmake – bestimmten Variablen<br />
Werte zu und beeinflusst den Kompiliervorgang<br />
mithilfe vordefinierter Schalter<br />
(Listing 2). Auch Qmake ersetzt nicht<br />
das klassische Make, sondern ist vielmehr<br />
eine Art Makefile-Generator.<br />
Der auffallendste Unterschied zwischen<br />
beiden Build-Systemen besteht darin,<br />
dass die Qmake-Syntax deutlich einfacher<br />
zu lesen und zugleich schlanker ist.<br />
Entwickler von Shellskripten sollten besonders<br />
gut mit ihr zurecht kommen, da<br />
sie sich eng an die Syntax der Shell anlehnt.<br />
Das rührt auch daher, dass Qmake<br />
die Eigenheiten der Qt-Bibliothek kennt<br />
und so viele Schritte im Hintergrund erle
Programmieren<br />
www.linux-magazin.de Qmake vs. Cmake 05/2013<br />
92<br />
01 PROJECT(helloworld)<br />
digt. Cmake dagegen ist von Zusatzpaketen<br />
abhängig, die nicht der Qt-Hersteller,<br />
sondern die Community pflegt.<br />
Shadow-Builds mit Qmake<br />
02 FIND_PACKAGE(Qt4_REQUIRED)<br />
03 <br />
04 SET(helloworld_SOURCES main.cpp hellowindow.cpp)<br />
05 SET(helloworld_HEADERS hellowindow.h)<br />
06 SET(helloworld_FORMS hellowindow.ui)<br />
07 <br />
08 QT4_WRAP_CPP(helloworld_HEADERS_MOC<br />
${helloworld_HEADERS})<br />
09 QT4_WRAP_UI(helloworld_FORMS_HEADERS<br />
${helloworld_FORMS})<br />
10 INCLUDE(${QT_USE_FILE})<br />
11 ADD_DEFINITIONS(${QT_DEFINITIONS})<br />
12 <br />
13 SET(QT_USE_QTCORE)<br />
14 SET(QT_USE_QTGUI)<br />
15 <br />
16 ADD_EXECUTABLE(helloworld ${helloworld_SOURCES}<br />
${helloworld_HEADERS_MOC}<br />
${helloworld_FORMS_HEADERS})<br />
17 TARGET_LINK_LIBRARIES(helloworld ${QT_LIBRARIES})<br />
01 TEMPLATE = app<br />
02 TARGET = helloworld<br />
03 QT = core gui<br />
Listing 1: Hello-World-Programm als<br />
Cmake-Projekt<br />
04 SOURCES = main.cpp hellowindow.cpp<br />
05 HEADERS = hellowindow.h<br />
06 FORMS = hellowindow.ui<br />
01 mkdir ../build32‐release<br />
Listing 2: Hello World als Qmake-<br />
Projekt<br />
02 cmake ../build32‐release && make<br />
03 <br />
04 mkdir ../build32‐release && cd ../build32‐release<br />
05 qmake ../src && make<br />
Listing 3: Shadow-Build mit Qmake<br />
und Cmake<br />
Dass sich Qmake aber auch für komplexere<br />
Aufgaben eignet, zeigt sich bei<br />
der Unterstützung von fortgeschrittenen<br />
Funktionen wie Out-of-source-Builds<br />
oder Pre- und Postbuild-Targets.<br />
Ein sogenannter Out-of-Source-Build –<br />
von Qt-Entwicklern auch Shadow-Build<br />
genannt – findet statt, wenn alle Dateien,<br />
die der Build-Prozess erstellt, außerhalb<br />
des Quellcode-Verzeichnisses landen.<br />
<strong>Die</strong>ses Prinzip unterscheidet sich maßgeblich<br />
von jenem klassischer Makefile-<br />
Projekte, in deren Verlauf die generierten<br />
Datei en wahllos das Sourcecode-Verzeichnis<br />
„zumüllen“.<br />
Zu den größten Vorteilen eines solchen<br />
Shadow-Builds gehört, dass er nicht nur<br />
einen besseren Überblick bietet, sondern<br />
auch die Möglichkeit, mehrere unterschiedliche<br />
Bauvorgänge parallel zu<br />
betreiben. In größeren Projekten ist es<br />
beispielsweise üblich, gleichzeitig Pakete<br />
für 32- und 64-Bit-Architekturen sowohl<br />
im Debug- als auch im Release-Modus für<br />
sämtliche unterstützten Plattformen zu<br />
bauen. <strong>Die</strong> so erzeugten Distributionen<br />
gehen dann an das Test- oder Release-<br />
Team, wobei schnell mal 18 komplette<br />
Builds zusammenkommen.<br />
Sowohl Qmake als auch Cmake unterstützen<br />
solche Shadow-Builds, wenn beide<br />
sie auch – wie Listing 3 beweist – auf<br />
unterschiedliche Weise umsetzen.<br />
Pre- und Postbuild-Ziele<br />
Pre- und Postbuild-Targets definieren<br />
Aufgaben, die das Build-System jeweils<br />
vor oder nach dem Kompilieren eines<br />
Projekts erledigt. Zu den typischen Zielen<br />
gehören beispielsweise das Erzeugen eines<br />
Versions-Headers, von Übersetzungen<br />
oder das „Strippen“ (also das Entfernen<br />
überflüssiger Symbole aus den Binaries)<br />
nach einem Release-Build.<br />
Das Generieren von Header-Dateien<br />
gehört zu den verbreitetsten Prebuild-<br />
Targets. Das Build-System erzeugt sie,<br />
um automatisiert immer die aktuell kompilierte<br />
Softwareversion aus der Versionsverwaltung<br />
anzuzeigen. Setzt das Projekt<br />
zum Beispiel auf Subversion, kann dies<br />
wie folgt aussehen:<br />
svnver version.template version.h ./<br />
Aufgrund der Tatsache, dass einige Codedateien<br />
von dem so erzeugten Header<br />
abhängen, ruft das Build-System dieses<br />
Kommando vor dem Kompilieren auf.<br />
Mit Qmake lässt sich so ein Prebuild-<br />
Target sehr einfach hinzufügen. Der<br />
Name des Ziels – in Listing 4 lautet er<br />
»versiontarget« – lässt sich frei wählen,<br />
allerdings muss ihn der Qmake-Nutzer<br />
konsistent verwenden.<br />
<strong>Die</strong> Werte für die drei jeweils durch einen<br />
Punkt vom Zielnamen abgetrennten<br />
Variablen »target«, »commands« sowie<br />
»depends« gibt Qmake vor, die Bedeutung<br />
der Anweisungen verrät die mit Qt<br />
gelieferte Dokumentation.<br />
In Listing 5 übernimmt die Variable<br />
»depends « eine besondere Aufgabe: Der<br />
Wert »FORCE« sorgt dafür, dass Qmake<br />
dieses Target bei jedem Kompiliervorgang<br />
ausführt. Anstelle von »FORCE« kann der<br />
Entwickler auch Dateinamen angeben,<br />
wodurch Qmake das Target nur dann erstellt,<br />
falls die Datei nicht existiert. Damit<br />
lassen sich in ein klassisches Makefile<br />
Abhängigkeiten einbauen.<br />
Indem der Qmake-Nutzer die Variable<br />
»PRE_TARGETDEPS« durch die generierte<br />
Datei »version.h« ergänzt, wird<br />
das beschreibende Target zu einem Prebuild-Target.<br />
Dazu muss der Entwickler<br />
jedoch das Target noch an die Variable<br />
»QMAKE_EXTRA_TARGETS« anhängen,<br />
um schließlich das gewünschte Makefile-<br />
Target zu erzeugen.<br />
Zu den klassischen Postbuild-Targets<br />
gehört das Erzeugen eines Installers,<br />
das demselben Schema folgt. Der einzige<br />
Unterschied: <strong>Die</strong> generierte Datei<br />
übergibt der Entwickler nun der Variable<br />
»POST_TARGETDEPS« anstelle von<br />
»PRE_TARGETDEPS«.<br />
Ein noch flexiblerer Ansatz<br />
Das nächste Beispiel zeigt anhand des<br />
Installer-Klassikers NSIS, wie ein solches<br />
Postbuild-Target für das Beispielprojekt<br />
„Hello World“ aussehen kann. Zwei<br />
nette Syntax-Features versüßen dabei<br />
dem Entwickler die Arbeit. So bewirkt<br />
die folgende Anweisung, dass Qmake den<br />
Installer nur unter Windows und nur im<br />
Release-Modus erzeugt:<br />
win32:CONFIG(release, debug|release) { … }<br />
Solche Bedingungsoperatoren machen<br />
das Erzeugen plattformspezifischer Anweisungen,<br />
falls sie denn notwendig sind,<br />
zum Kinderspiel.<br />
Der eben gezeigte Weg zum Erzeugen von<br />
Pre- und Postbuild-Targets ist zwar kurz<br />
und einprägsam, hat jedoch einen kleinen<br />
Nachteil: Qmake führt die Targets aufgrund<br />
der »FORCE«-Option entweder immer<br />
aus oder setzt als Bedingung das Fehlen<br />
einer bestimmten Datei (»version.h«)<br />
voraus. <strong>Die</strong>ser Umstand ist auf das erzeugte<br />
Makefile und das typische Verhalten<br />
von Make zurückzuführen.
Abbildung 1: Das Projektfile des Hello-World-Programms lässt sich, wie auch die anderen Dateien, bequem im Qt Creator erstellen.<br />
Will der Qmake-Anwender allerdings Aktionen<br />
aufrufen, die sich nicht direkt auf<br />
das Dateisystem auswirken, wie etwa das<br />
Strippen eines Binaries oder das Aktualisieren<br />
einer Datei, muss er einen anderen<br />
Weg beschreiten. <strong>Die</strong> Projektbestandteile<br />
zum Installer und zu den Übersetzungen<br />
(Translations), die auszugsweise in<br />
Listing 5 und 6 auftauchen, zweckentfremden<br />
Unterprojekte vom Typ »lib«, um<br />
eine saubere Trennung der Zuständigkeiten<br />
und eine höhere Flexibilität zu erreichen.<br />
Ein weiterer Nutzen dieser Lösung<br />
besteht in ihrer Wiederverwendbarkeit:<br />
Ein einmalig eingerichtetes Translations-<br />
Projekt lässt sich in anderen Projekten<br />
recyceln, was den Arbeitsaufwand bei der<br />
Projektpflege deutlich reduziert.<br />
Teilen und Herrschen<br />
Viele große Projekte folgen einem festen<br />
Schema: Sie trennen die Anwendungsvon<br />
der Bedienlogik und vom User-Interface-Code.<br />
Hinzu kommen optionale Plugins,<br />
welche die Software später erweitern,<br />
sowie ein unternehmensweit genutztes<br />
SDK. Solch sauber getrennte Projekte<br />
führt man idealerweise mit der »subdirs«-<br />
Vorlage von Qmake zusammen.<br />
Dabei hat sich ein einfaches Schema<br />
(Listing 6) bereits mehrfach bewährt.<br />
<strong>Die</strong> zusätzliche Angabe »CONFIG +=<br />
ordered« bewirkt, dass Qmake die Unterprojekte,<br />
die der Entwickler in »SUBDIRS«<br />
definiert, in der angegebenen Reihenfolge<br />
baut. Hier macht es sich bezahlt, wenn<br />
die Projektdateien den Namen des Verzeichnisses<br />
tragen, in dem sie liegen.<br />
Dann genügt es, Qmake an dieser Stelle<br />
die Verzeichnisse der Unterprojekte zu<br />
übergeben, um alle notwendigen Dateien<br />
zu finden.<br />
In dieser Projektstruktur steckt eine<br />
kleine Besonderheit, was die Definition<br />
der Übersetzungen angeht. Qt und damit<br />
auch Qmake bieten für Übersetzungen<br />
einen vorgefertigten Mechanismus an. Im<br />
Beispielprojekt definiert die Top-Level-<br />
Projektdatei (Abbildung 1) die Sprachen,<br />
in die der Entwickler seine Anwendung<br />
übersetzt sehen will – Qmake erstellt die<br />
Übersetzungen jedoch erst zum Schluss.<br />
So teilen sich alle Unterprojekte eine<br />
Übersetzungsdatei pro Sprache, was den<br />
Listing 4: Prebuild-Target mit Qmake<br />
01 versiontarget.target = version.h<br />
02 versiontarget.commands = svnver version.template version.h ./<br />
03 versiontarget.depends = FORCE<br />
04 <br />
05 PRE_TARGETDEPS += version.h<br />
06 QMAKE_EXTRA_TARGETS += versiontarget<br />
Listing 5: Postbuild-Target mit Qmake<br />
01 win32:CONFIG(release, debug|release) {<br />
02 message(Creating installer package...)<br />
Listing 6: Top-Level-Projektdatei<br />
01 TEMPLATE = subdirs<br />
02 SUBDIRS = SDK GUI Plugins Translations Installer<br />
03 CONFIG += ordered<br />
04 TRANSLATIONS = Translations/Deutsch.ts Translations/English.ts<br />
Prozess der Internationalisierung<br />
sehr vereinfacht.<br />
Ein Nachteil dieser<br />
Variante: Plugins können<br />
in dieser Lösung nicht<br />
ohne weiteres eigene<br />
Sprachpakete mitliefern.<br />
Fazit<br />
Qmake ist ein durchaus<br />
mächtiges Build-<br />
Werkzeug. Es bringt alle<br />
Funktionen mit, die eine<br />
professionelle Umgebung<br />
fordert. Im Gegensatz zu<br />
Cmake ist es jedoch in<br />
jeder Qt-Installation enthalten.<br />
Durch die enge Verbundenheit mit<br />
der Qt-Bibliothek lassen sich Qmake-Projekte<br />
meist deutlich einfacher warten. <strong>Die</strong><br />
Verfügbarkeit auf allen Plattformen bietet<br />
in dieser Form kein anderes Build-System.<br />
Anhand einer flexiblen Vorlage kann der<br />
Qt-Entwickler dann einfach und schnell<br />
Projekte beliebiger Größe aufsetzen und<br />
sich auf das Wesentliche konzentrieren:<br />
die Softwareentwicklung. (kki) n<br />
Der Autor<br />
Alexander Nassian ist Geschäftsführer und Entwicklungsleiter<br />
bei der auf Qt-Entwicklung spezialisierten<br />
Bitshift Dynamics GmbH in München.<br />
03 installer_target.commands = makensis /NOCD installer_config.nsis<br />
04 installer_target.depends = FORCE<br />
05 QMAKE_EXTRA_TARGETS += installer_target<br />
06 POST_TARGETDEPS += installer_target<br />
07 }<br />
Qmake vs. Cmake 05/2013<br />
Programmieren<br />
www.linux-magazin.de<br />
93
Programmieren<br />
www.linux-magazin.de Perl-Snapshot 05/2013<br />
94<br />
Perl steuert Virtualbox<br />
Entspannt nach draußen<br />
Das Paket Vagrant (Vagabund) verwaltet mit Virtualbox als Hypervisor virtuelle Maschinen einfach von der<br />
Kommandozeile aus. Der Entwickler kann seinen Kunden, die einfach mal in ein Produkt hineinschnuppern wollen,<br />
fertig installierte Umgebungen mitgeben. Michael Schilli<br />
© french_03, photocase.com<br />
1 Vagrant::Config.run do |config|<br />
2<br />
3 <br />
# 32‐bit Ubuntu Box<br />
4 config.vm.box = "precise32"<br />
5<br />
6 <br />
# provision with Puppet<br />
7 config.vm.provision :puppet<br />
8 end<br />
Listing 1: »VagrantFile«<br />
„Also bei mir funktioniert’s!“ – die alte<br />
Ausrede bei defekten Produkten sollte<br />
unter Software-Entwicklern spätestens<br />
mit der Erfindung virtueller Maschinen<br />
ausgedient haben. Denn auf einer nackten,<br />
virtuellen Distribution lassen sich<br />
prima ganze Softwaresuiten reproduzierbar<br />
installieren, um vorher zu testen, ob<br />
das Gesamtsystem später beim Kunden<br />
funktioniert oder nicht.<br />
Um diese Tests zu automatisieren, benötigt<br />
der Entwickler ein Kommandozeilentool<br />
zum Hochfahren der virtuellen<br />
Maschine, ein Einrichtungstool zum Installieren<br />
der Applikationspakete und ihrer<br />
Abhängigkeiten sowie ein Skript zum<br />
Anwerfen der Testsuite. Oft erstrecken<br />
sich Applikationen über mehrere Instanzen<br />
– wie bei einem Client, der zu einem<br />
Webserver Kontakt aufnimmt, der wiederum<br />
eine Datenbankinstanz nutzt.<br />
Geschäftiger Vagabund<br />
Das Tool Vagrant [2] definiert die in einem<br />
Softwareprojekt genutzten virtuellen<br />
Maschinen per Konfigurationsdatei, die<br />
das Entwicklungsteam versioniert und<br />
neben dem Sourcecode im Projekt-Repository<br />
mitführt. Vagrant nutzt als Virtualisierer<br />
das kostenlose Virtualbox [3], das<br />
auf <strong>Linux</strong>, Mac OS X und Windows läuft<br />
(Abbildung 1) und noch mehr Betriebssysteme<br />
als Gäste virtualisiert. Vagrant<br />
richtet die VMs in so genannten Boxes so<br />
her, dass in ihnen ein SSH-Daemon läuft<br />
und ein User namens »vagrant« Sudo-<br />
Rechte besitzt (Abbildung 2).<br />
So startet die Sequenz »vagrant up« (oder<br />
»vagrant ssh«) eine vorher von einem<br />
Distributionsserver wie Vagrantbox.es heruntergeladene<br />
Box als VM und wechselt<br />
auf der Kommandozeile in sie hinein. Um<br />
Softwarepakete automatisch einzurichten<br />
und Konfigurationsdateien anzupassen,<br />
stehen Softwareprovision-Tools wie<br />
Puppet [4], Chef [5] und Saltstack [6]<br />
bereit. <strong>Die</strong>se laden Distributionspakete<br />
vom Repositoryserver, installieren sie,<br />
lösen Abhängigkeiten auf, stellen rollenspezifische<br />
Konfigurationen ein, starten<br />
Services und halten sie am Laufen.<br />
Puppet als Innenarchitekt<br />
Das Kommando »vagrant init« in einem<br />
frisch angelegten Verzeichnis im Hostsystem<br />
legt eine Datei namens »Vagrant-<br />
File« an, die außer einer langen Liste<br />
von auskommentierten Optionen nur den<br />
Ruby-Code<br />
Vagrant::Config.run do |config|<br />
config.vm.box = "base"<br />
end<br />
enthält. Das anschließend abgesetzte<br />
Kommando »vagrant box add ...« ersetzt<br />
in der angegebenen Datei den Wert für<br />
»base« für die neu angelegte Box (»precise32«<br />
in Listing 1) und lädt die Box vom<br />
Webserver an der angegebenen URL. Unterstützt<br />
die heruntergeladene VM-Box<br />
ein Einrichtungstool wie Puppet, Chef<br />
oder Saltstack, darf das Vagrant-File die<br />
Konfiguration der VM diesem überlassen.<br />
Listing 1 verweist zum Beispiel auf:<br />
config.vm.provision :puppet<br />
Damit erwartet Vagrant in der Datei »manifests/default.pp«<br />
unter dem Vagrant-<br />
Verzeichnis eine Puppet-Konfigurationsdatei<br />
nach Art von Listing 2. Abbildung<br />
3 zeigt das Datei-Layout im Hostsystem,
www.linux-magazin.de<br />
Perl-Snapshot 05/2013<br />
Programmieren<br />
95<br />
Abbildung 1: Vagrant und Virtualbox: Wer wollte nicht schon einmal auf einem Macbook mit einem Aufruf von<br />
der Kommandozeile in ein 64-Bit-Ubuntu wechseln?<br />
Abbildung 2: Auf Vagrantbox.es stehen alle gängigen<br />
<strong>Linux</strong>-Distributionen als Vagrant-Boxes zum<br />
Download bereit.<br />
das im Source-Control-Repository des<br />
Entwicklungsteams liegt.<br />
Puppets tanzen<br />
Ein »vagrant up« fährt nicht nur die virtuelle<br />
Maschine der Box hoch, sondern<br />
wirft auch den Puppet-Client an. Dessen<br />
Konfigurationsdatei in Listing 2 definiert<br />
eine Klasse »mojo«, die zuerst den Packagemanager-Index<br />
mit »apt‐get update«<br />
aktualisiert. <strong>Die</strong> »package«-Anweisung<br />
in Zeile 8 zieht das CPAN-Modul Mojolicious<br />
herein, das in Debian-Derivaten als<br />
»libmojolicious‐perl«-Paket vorliegt. <strong>Die</strong><br />
»ensure«-Anweisung stellt sicher, dass<br />
das Paket installiert ist und löst »apt‐get<br />
install« aus, falls es fehlt. Das ebenfalls<br />
benötigte Perl-Core-Paket bringt Ubuntu<br />
zum Glück bereits mit.<br />
<strong>Die</strong> Anweisung »file« in Zeile 12 legt in der<br />
VM einen Link unter »/usr/bin/mymojo«<br />
an, der auf das gleichnamige Perl-Skript<br />
unter »/vagrant/mymojo« zeigt. Das Verzeichnis<br />
»/vagrant« bindet Vagrant praktischerweise<br />
an das Vagrant-Verzeichnis<br />
im Hostsystem. Deshalb kann der User<br />
in seinem Source-Control-Repository<br />
einfach Skripte einchecken, die dann in<br />
hochgefahrenen VMs erscheinen. Statt<br />
die virtuelle Maschine mit »reload« neu<br />
zu starten, um neue Puppet-Parameter<br />
auszuprobieren, darf der User während<br />
der Testphase im Gastsystem auch einfach<br />
das Kommando<br />
puppet apply /vagrant/manifests/defaut.pp<br />
aufrufen und Puppet damit bewegen, die<br />
virtuelle Maschine einzurichten.<br />
Der Webserver<br />
Listing 3 definiert einen simplen Webserver<br />
Marke Eigenbau, der auf dem<br />
CPAN-Modul Mojolicious::Lite aufbaut.<br />
Auf jeden eintrudelnden »GET«-Request<br />
antwortet er mit dem Namen des Users,<br />
Listing 2: »default.pp«<br />
01 # Basic Puppet Mojo manifest<br />
02<br />
03 class mojo {<br />
04 exec { 'apt‐get update':<br />
05 command => '/usr/bin/apt‐get update'<br />
06 }<br />
07<br />
08 package { "libmojolicious‐perl":<br />
09 ensure => present<br />
10 }<br />
11<br />
12 file { '/usr/bin/mymojo':<br />
13 ensure => link,<br />
14 target => "/vagrant/mymojo",<br />
15 force => true<br />
16 }<br />
17 }<br />
18<br />
19 include mojo<br />
MAGAZIN<br />
ONLINE<br />
<strong>Linux</strong>-<strong>Magazin</strong> newsLetter<br />
Newsletter<br />
informativ<br />
Nachrichten rund um die Themen <strong>Linux</strong> und<br />
Open Source lesen Sie täglich im Newsletter<br />
des <strong>Linux</strong>-<strong>Magazin</strong>s.<br />
kompakt<br />
tagesaktuell<br />
www.linux-magazin.de/newsletter
Programmieren<br />
www.linux-magazin.de Perl-Snapshot 05/2013<br />
96<br />
G Abbildung 3: <strong>Die</strong>se Dateien in der Sourcecode-Verwaltung bestimmen Parameter<br />
und Inventar der Vagrant-VM.<br />
E Abbildung 4: In wenigen Schritten ist eine virtuelle Maschine unter Ubuntu<br />
Precise (32 Bit) mit Vagrant und Virtualbox installiert.<br />
01 #!/usr/bin/perl ‐w<br />
02 use strict;<br />
03 use Mojolicious::Lite;<br />
04<br />
05 get '/' => sub {<br />
06 my $self = shift;<br />
der ihn hochgefahren hat. <strong>Die</strong> Funktion<br />
»getpwuid()« nimmt die effektive UID des<br />
Skripts »$>« entgegen und liefert in skalarem<br />
Kontext den Usernamen zurück.<br />
<strong>Die</strong> Methode »render()« schickt den ihr<br />
überreichten Text an den anfragenden<br />
Webclient.<br />
Der Entwickler legt das Skript im Vagrant-<br />
Verzeichnis auf dem Hostsystem ab und<br />
startet dann in einer mit »vagrant ssh«<br />
neu geöffneten VM-Session die Applikation<br />
mit »/usr/bin/mymojo daemon«.<br />
Der Webserver in Listing 3 beantwortet<br />
daraufhin alle »GET«-Anfragen, indem er<br />
den Unix-User ausgibt, der das Skript<br />
gestartet hatte. In der Vagrant-Session ist<br />
dies »vagrant«:<br />
$ vagrant ssh<br />
vagrant@precise64:~$ curl http://localhost:U<br />
3000<br />
I am vagrant<br />
Beachtet sein will auch, dass der Webserver<br />
sich an einen lokalen Port innerhalb<br />
der VM bindet, denn vom Hostsystem<br />
und dem angrenzenden Netzwerk aus<br />
ist er nicht erreichbar. Um dies zu erlauben,<br />
braucht Virtualbox die so genannten<br />
07<br />
08 my $user = getpwuid( $> );<br />
09<br />
10 $self‐>render( text =><br />
11 "I am $user\n" );<br />
12 };<br />
13<br />
14 app‐>start;<br />
Listing 3: »mymojo«<br />
Guest Additions,<br />
die etwas mehr Installationsaufwand<br />
erfordern.<br />
Einrichter können mehr<br />
Einrichtungstools (Provision Tools) leisten<br />
weit mehr als hier gezeigt. Sie übernehmen<br />
mittels auf Community-Ebene<br />
ausgetauschter Module gängige Sysadmin-Aufgaben,<br />
wie den Webserver Apache<br />
mit SSL hochfahren und am Leben<br />
halten oder MySQL konfigurieren und<br />
starten. So braucht nicht jeder Sysadmin<br />
das Rad neu zu erfinden und klickt sich<br />
getestete und in der Produktion bewährte<br />
Bausteine zusammen.<br />
Wer viele solcher Nodes in Serverfarmen<br />
verwaltet, überträgt die Verantwortung einem<br />
Masterserver, der Heerscharen von<br />
Endnodes verwaltet. Dabei helfen die Manualseiten<br />
von Puppet, Chef und dem<br />
ambitionierten Neuling Saltstack [6].<br />
Installation<br />
Um die Kombination aus Vagrant und<br />
Virtualbox auf den eigenen PC zu kriegen,<br />
holt sich der Benutzer zunächst von<br />
[3] das passende Virtualbox-Paket ab<br />
und installiert es gemäß den Instruktionen<br />
für die verwendete <strong>Linux</strong>-Distribution.<br />
Auch für das in Ruby geschriebene<br />
Vagrant stehen fertige Pakete für eine<br />
ganze Reihe gängiger <strong>Linux</strong>e auf [2] bereit,<br />
die zu installieren ein Klacks ist.<br />
Sucht man dann auf Vagrantbox.es die<br />
URL für eine Vagrant-Box der gewünschten<br />
zu simulierenden <strong>Linux</strong>-Distribution<br />
heraus, führen die Schritte in Abbildung<br />
4 – dort am Beispiel von Ubuntu Precise<br />
(32 Bit) – zum Ziel.<br />
<strong>Die</strong> plattformübergreifende Definition<br />
von virtuellen Maschinen mit ebenfalls<br />
polyglotten Anweisungen für Einrichtungstools<br />
versetzt Entwickler in die<br />
Lage, ihre Testumgebungen auf Knopfdruck<br />
hochzufahren. Das Ganze basiert<br />
allein auf Informationen, die in der versionierten<br />
Sourcecode-Verwaltung stecken.<br />
Da man modifizierte Vagrant-Boxen ohne<br />
viel Aufwand wieder in neue Boxen eintüten<br />
kann, lässt sich ein fast fertiges<br />
Produkt auch schnell zum Kunden schicken,<br />
der es nach dem standardisierten<br />
Verfahren auf vielerlei Hostplattformen<br />
einfach ausprobiert. (jk)<br />
n<br />
Infos<br />
[1] Listings zu diesem Artikel:<br />
[ftp:// www. linux‐magazin. de/ pub/ listings/<br />
magazin/ 2013/ 05/ Perl]<br />
[2] Vagrant: [http:// www. vagrantup. com]<br />
[3] Virtualbox: [https:// www. virtualbox. org/<br />
wiki/ Downloads]<br />
[4] G. Wrobel, „Konfigurationsverwaltung mit<br />
Puppet“: <strong>Linux</strong>-<strong>Magazin</strong> 10/08, S. 70<br />
[5] Chef: [http:// www. opscode. com/ chef/]<br />
[6] Saltstack: [http:// saltstack. com]<br />
Der Autor<br />
Michael Schilli arbeitet<br />
als Software-Engineer bei<br />
Yahoo in Sunnyvale, Kalifornien.<br />
In seiner seit 1997<br />
laufenden Kolumne forscht<br />
er nach praktischen Anwendungen<br />
der Skriptsprache Perl. Unter [mschilli@<br />
perlmeister. com] beantwortet er gerne Fragen.
Probelesen<br />
ohne risiko<br />
Und Gewinnen!<br />
Einen Acer REVO RL70: Das flüsterleise<br />
Kraftpaket für Multimedia Home<br />
Entertainment im Wert von 249 Euro<br />
• Ultrakompakter Formfaktor (209x209x35 mm)<br />
• Basiert auf AMD Brazos-Plattform für<br />
Full-HD und Games<br />
SONDERAKTION!<br />
Testen Sie jetzt<br />
3 Ausgaben für<br />
NUR 3€*<br />
Telefon: 07131 /2707 274<br />
Fax: 07131 / 2707 78 601<br />
E-Mail: abo@linux-user.de<br />
Mit großem Gewinnspiel unter:<br />
www.linux-user.de/probeabo<br />
* Angebot gilt innerhalb Deutschlands und Österreichs. In der Schweiz: SFr 4,50.<br />
Weitere Preise: www.linux-user.de/produkte
Service<br />
www.linux-magazin.de IT-Profimarkt 05/2013<br />
100<br />
PROFI<br />
MARKT<br />
Sie fragen sich, wo Sie maßgeschneiderte<br />
<strong>Linux</strong>-Systeme und kompetente<br />
Ansprechpartner zu Open-Source-Themen<br />
finden? Der IT-Profimarkt weist Ihnen<br />
als zuverlässiges Nachschlagewerk<br />
den Weg. <strong>Die</strong> hier gelisteten Unternehmen<br />
beschäftigen Experten auf ihrem<br />
Gebiet und bieten hochwertige Produkte<br />
und Leistungen.<br />
<strong>Die</strong> exakten Angebote jeder Firma entnehmen<br />
Sie deren Homepage. Der ersten<br />
Orientierung dienen die Kategorien<br />
Hardware, Software, Seminaranbieter,<br />
Systemhaus, Netzwerk/TK und Schulung/Beratung.<br />
Der IT-Profimarkt-Eintrag<br />
ist ein Service von <strong>Linux</strong>-<strong>Magazin</strong><br />
und <strong>Linux</strong>User.<br />
Online-Suche<br />
Besonders bequem finden Sie einen<br />
<strong>Linux</strong>-Anbieter in Ihrer Nähe über die<br />
neue Online-Umkreis-Suche unter:<br />
[http://www.it-profimarkt.de]<br />
Informationen<br />
fordern Sie bitte an bei:<br />
Medialinx AG<br />
Anzeigenabteilung<br />
Putzbrunner Str. 71<br />
D-81739 München<br />
Tel.: +49 (0)89/99 34 11-23<br />
Fax: +49 (0)89/99 34 11-99<br />
E-Mail: anzeigen@linux-magazin.de<br />
IT-Profimarkt – Liste sortiert nach Postleitzahl<br />
1 = Hardware 2 = Netzwerk/TK 3 = Systemhaus<br />
4= Fachliteratur 4= Seminaranbieter 5 = Software 5 = Software 6 = Schulung/Beratung 6 = Firma Anschrift Telefon Web 1 2 3 4 5 6<br />
imunixx GmbH UNIX consultants 01468 Moritzburg, Heinrich-Heine-Str. 4 0351-83975-0 www.imunixx.de √ √ √ √ √<br />
TUXMAN Computer 10369 Berlin, Anton-Saefkow-Platz 8 030-97609773 www.tuxman.de √ √ √ √ √<br />
Hostserver GmbH 10405 Berlin, Winsstraße 70 030-47375550 www.hostserver.de √<br />
Compaso GmbH 10439 Berlin, Driesener Strasse 23 030-3269330 www.compaso.de √ √ √ √ √<br />
elego Software Solutions GmbH 13355 Berlin, Gustav-Meyer-Allee 25 030-2345869-6 www.elegosoft.com √ √ √ √<br />
verion GmbH 16244 Altenhof, Unter den Buchen 22 e 033363-4610-0 www.verion.de √ √ √<br />
Logic Way GmbH 19061 Schwerin, Hagenower Str. 73 0385-39934-48 www.logicway.de √ √ √ √<br />
Sybuca GmbH 20459 Hamburg, Herrengraben 26 040-27863190 www.sybuca.de √ √ √ √ √<br />
iTechnology GmbH<br />
22083 Hamburg,<br />
Osterbekstrasse 90b<br />
040 / 69 64 37 20 www.itechnology.de √ √ √ √<br />
JEL Ingenieurbuero 23911 Einhaus, Hauptstr. 7 04541-8911-71 www.jeltimer.de √<br />
beitco - Behrens IT-Consulting 26197 Ahlhorn, Lessingstr. 27 04435-9537330-0 www.beitco.de √ √ √ √ √<br />
talicom GmbH<br />
primeLine Solutions GmbH<br />
30169 Hannover,<br />
Calenberger Esplanade 3<br />
32549 Bad Oeynhausen,<br />
Dornenbreite 18a<br />
0511-123599-0 www.talicom.de √ √ √ √ √<br />
05731/86940 www.primeline-solutions.de<br />
√ √ √ √<br />
teuto.net Netzdienste GmbH 33602 Bielefeld, Niedenstr. 26 0521-96686-0 www.teuto.net √ √ √ √ √<br />
MarcanT GmbH 33602 Bielefeld, Ravensberger Str. 10 G 0521-95945-0 www.marcant.net √ √ √ √ √ √<br />
Hostserver GmbH 35037 Marburg, Biegenstr. 20 06421-175175-0 www.hostserver.de √<br />
LINET Services GmbH 38118 Braunschweig, Cyriaksring 10a 0531-180508-0 www.linet-services.de √ √ √ √ √ √<br />
OpenIT GmbH<br />
40599 Düsseldorf,<br />
In der Steele 33a-41<br />
0211-239577-0 www.OpenIT.de √ √ √ √ √<br />
<strong>Linux</strong>-Systeme GmbH 45277 Essen, Langenbergerstr. 179 0201-298830 www.linux-systeme.de √ √ √ √ √<br />
<strong>Linux</strong>hotel GmbH 45279 Essen, Antonienallee 1 0201-8536-600 www.linuxhotel.de √<br />
OpenSource Training Ralf Spenneberg 48565 Steinfurt, Am Bahnhof 3-5 02552-638755 www.opensourcetraining.de<br />
Intevation GmbH 49074 Osnabrück, Neuer Graben 17 0541-33508-30 osnabrueck.intevation.de √ √ √ √<br />
uib gmbh 55118 Mainz, Bonifaziusplatz 1b 06131-27561-0 www.uib.de √ √ √ √<br />
LISA GmbH 55411 Bingen, Elisenhöhe 47 06721-49960 www.lisa-gmbh.de √ √ √ √ √<br />
saveIP GmbH 64283 Darmstadt, Schleiermacherstr. 23 06151-666266 www.saveip.de √ √ √ √ √<br />
LAMARC EDV-Schulungen u. Beratung<br />
GmbH<br />
65193 Wiesbaden,<br />
Sonnenberger Straße 14<br />
0611-260023 www.lamarc.com √ √ √ √<br />
ORDIX AG 65205 Wiesbaden, Kreuzberger Ring 13 0611-77840-00 www.ordix.de √ √ √ √ √<br />
<strong>Linux</strong>Haus Stuttgart<br />
70565 Stuttgart,<br />
Hessenwiesenstrasse 10<br />
0711-2851905 www.linuxhaus.de √ √ √ √ √<br />
Manfred Heubach EDV und Kommunikation 73728 Esslingen, Hindenburgstr. 47 0711-4904930 www.heubach-edv.de √ √ √ √<br />
IT-Profimarkt listet ausschließlich Unternehmen, die Leistungen rund um <strong>Linux</strong> bieten. Alle Angaben ohne Gewähr. <br />
√<br />
(S.102)
Seminare / Markt<br />
IT-Onlinetrainings<br />
Mit Experten lernen.<br />
MEDIALINX<br />
IT-ACADEMY<br />
Einfache IMAP-Server<br />
mit Dovecot<br />
mit Peer Heinlein,<br />
Heinlein Support GmbH<br />
249 €<br />
www.medialinx-academy.de<br />
IT-Onlinetrainings<br />
Mit Experten lernen.<br />
MEDIALINX<br />
IT-ACADEMY<br />
Effiziente BASH-Skripte<br />
mit Klaus Knopper,<br />
Gründer der<br />
Knoppix-Distribution,<br />
KNOPPER.NET<br />
199 €<br />
Automatisieren Sie komplexe<br />
Aufgaben mit Hilfe effizienter Skripte!<br />
www.medialinx-academy.de<br />
X25<br />
-Academy_1-9_Dovecot-Schulung.indd 1<br />
IT-Onlinetrainings<br />
Mit Experten lernen.<br />
LPIC-1 / LPIC-2 Training<br />
LPIC-1 (LPI 101 + 102)<br />
mit Ingo Wichmann,<br />
<strong>Linux</strong>hotel<br />
499 €<br />
LPIC-2 (LPI 201 + 202)<br />
mit Marco Göbel,<br />
Com Computertraining GmbH<br />
499 €<br />
MEDIALINX<br />
IT-ACADEMY<br />
www.medialinx-academy.de<br />
18.03.2013 17:05:11 IT-Academy_1-9_Bash-Schulung.indd Uhr<br />
1<br />
18.03.2013 17:04:16 Uhr<br />
DiD you<br />
know?<br />
-Academy_1-9_LPIC-Schulungen.indd 1<br />
18.03.2013 17:05:57 Uhr<br />
IT-Onlinetrainings<br />
Mit Experten lernen.<br />
MEDIALINX<br />
IT-ACADEMY<br />
Python für<br />
Systemadministratoren<br />
mit Rainer Grimm,<br />
science + computing AG<br />
199 €<br />
Vereinfachen Sie Ihren Sysadmin-Alltag<br />
mit Skripting-Know-How für Profis!<br />
www.medialinx-academy.de<br />
WusstEn siE’s?<br />
<strong>Linux</strong>-<strong>Magazin</strong> und <strong>Linux</strong>User haben<br />
ein englisches Schwester magazin!<br />
Am besten, Sie informieren gleich<br />
Ihre <strong>Linux</strong>-Freunde in aller Welt...<br />
www.linux-magazine.com<br />
IT-Onlinetrainings<br />
Mit Experten lernen.<br />
MEDIALINX<br />
IT-ACADEMY<br />
– die offiziellen Trainings<br />
mit Marco Welter,<br />
Zarafa Deutschland GmbH<br />
Zarafa Administrator<br />
249 €<br />
Zarafa Engineer<br />
249 €<br />
www.medialinx-academy.de<br />
-Academy_1-9_Python-Schulung.indd 1<br />
18.03.2013 17:07:32 Uhr<br />
LMI_german_2-9h_black_1906-2012.indd 1<br />
IT-Academy_1-9_Zarafa-Schulung.indd 1<br />
18.03.2013 15:04:44 Uhr<br />
18.03.2013 17:08:02 Uhr
Service<br />
www.linux-magazin.de Markt 05/2013<br />
102<br />
IT-Profimarkt/Markt<br />
IT-Profimarkt – Liste sortiert nach Postleitzahl (Fortsetzung von S. 100)<br />
Firma Anschrift Telefon Web 1 2 3 4 5 6<br />
Waldmann EDV Systeme + Service<br />
74321 Bietigheim-Bissingen,<br />
Pleidelsheimer Str. 25<br />
07142-21516 www.waldmann-edv.de √ √ √ √ √<br />
in-put Das <strong>Linux</strong>-Systemhaus 76133 Karlsruhe, Moltkestr. 49 0721-6803288-0 www.in-put.de √ √ √ √ √ √<br />
Bodenseo 78224 Singen, Pomeziastr. 9 07731-1476120 www.bodenseo.de √ √ √<br />
<strong>Linux</strong> Information Systems AG 81739 München, Putzbrunnerstr. 71 089-993412-0 www.linux-ag.com √ √ √ √ √<br />
<strong>Linux</strong>Land International GmbH 81739 München, Putzbrunnerstr. 71 089-99341441 www.linuxland.de √ √ √ √ √ √<br />
Synergy Systems GmbH 81829 München, Konrad-Zuse-Platz 8 089-89080500 www.synergysystems.de √ √ √ √ √<br />
B1 Systems GmbH 85088 Vohburg, Osterfeldstrasse 7 08457-931096 www.b1-systems.de √ √ √ √ √<br />
ATIX AG 85716 Unterschleißheim, Einsteinstr. 10 089-4523538-0 www.atix.de √ √ √ √ √ √<br />
fidu.de IT KG 86343 Königsbrunn , Zeppelinstr. 3 0921-16 49 87 87-0 www.linux-onlineshop.de √ √ √ √<br />
OSTC Open Source Training and Consulting<br />
GmbH<br />
90425 Nürnberg,<br />
Waldemar-Klink-Str. 10<br />
0911-3474544 www.ostc.de √ √ √ √ √ √<br />
Dipl.-Ing. Christoph Stockmayer GmbH 90571 Schwaig, Dreihöhenstr. 1 0911-505241 www.stockmayer.de √ √ √<br />
pascom - Netzwerktechnik GmbH & Co.KG 94469 Deggendorf, Berger Str. 42 0991-270060 www.pascom.net √ √ √ √ √<br />
Computersysteme Gmeiner<br />
95643 Tirschenreuth,<br />
Fischerhüttenweg 4<br />
09631-7000-0 www.gmeiner.de √ √ √ √ √<br />
CATATEC CH-3013 Bern, Dammweg 43 0041-31-3302630 www.catatec.ch √ √ √<br />
Syscon Systemberatungs AG CH-8003 Zürich, Zweierstrasse 129 0041-44-4542010 www.syscon.ch √ √ √ √ √<br />
Würth Phoenix GmbH IT-39100 Bozen, Kravoglstraße 4 0039 0471 56 41 11 www.wuerth-phoenix.com √ √ √ √<br />
IT-Profimarkt listet ausschließlich Unternehmen, die Leistungen rund um <strong>Linux</strong> bieten. Alle Angaben ohne Gewähr. <br />
n<br />
Admin-mAGAZin diGitAl<br />
Profi-Know-how immer Zur hAnd<br />
nur 44,90 E* pro Jahr<br />
(6 Ausgaben)<br />
Jetzt bestellen unter:<br />
www.admin–magazin.de/digisub<br />
Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601<br />
E-Mail: abo@admin-magazin.de<br />
* Preise gelten für Deutschland.<br />
1-4-DIN-ADMIN_DigiSub_2012-2012 2.indd 1<br />
28.02.2013 10:35:17 Uhr
MEDIALINX<br />
IT-ACADEMY<br />
IT-Onlinetrainings<br />
Mit Experten lernen.<br />
powered by<br />
n Lernen Sie, wo und wann Sie möchten.<br />
n Sparen Sie Zeit und Kosten.<br />
n Bleiben Sie trotz zeitlicher Engpässe<br />
up-to-date.<br />
LPIC-1 / LPIC-2 Trainings<br />
LPIC-1 (LPI 101 + 102)<br />
mit Ingo Wichmann,<br />
<strong>Linux</strong>hotel<br />
499 €<br />
LPIC-2 (LPI 201 + 202)<br />
mit Marco Göbel,<br />
Com Computertraining GmbH<br />
499 €<br />
– die offiziellen Trainings<br />
mit Marco Welter,<br />
Zarafa Deutschland GmbH<br />
Zarafa Administrator<br />
249 €<br />
Zarafa Engineer<br />
249 €<br />
Effiziente BASH-Skripte<br />
mit Klaus Knopper,<br />
Gründer der Knoppix-Distribution,<br />
knopper.net<br />
199 €<br />
Einfache IMAP-Server mit Dovecot<br />
mit Peer Heinlein,<br />
Heinlein Support GmbH<br />
249 €<br />
Python für Systemadministratoren<br />
mit Rainer Grimm,<br />
science + computing AG<br />
199 €<br />
www.medialinx-academy.de
Service<br />
www.linux-magazin.de Inserenten 05/2013<br />
104<br />
Inserentenverzeichnis<br />
1&1 Internet AG http://www.einsundeins.de 31<br />
ADMIN http://www.admin-magazin.de 71, 102<br />
Android User GY http://www.android-user.de 17, 19, 43, 89<br />
CANDAN THE WEB COMPANY http://www.canhost.de 47<br />
Easy<strong>Linux</strong> http://www.easylinux.de 77<br />
embedded projects GmbH http://www.embedded-projects.net 102<br />
Fernschule Weber GmbH http://www.fernschule-weber.de 101<br />
Grazer <strong>Linux</strong>-Tage c/o FH Joanneum http://www.linuxtage.at 83<br />
Heinlein Professional <strong>Linux</strong> Support GmbH http://www.heinlein-support.de 2, 33<br />
Ico Innovative Computer GmbH http://www.ico.de 23<br />
ISC Events http://www.isc-events.com 55<br />
<strong>Linux</strong> <strong>Magazin</strong>e http://www.linux-magazine.com 101<br />
<strong>Linux</strong>-Hotel http://www.linuxhotel.de 9<br />
<strong>Linux</strong>-<strong>Magazin</strong> http://www.linux-magazin.de 15, 107<br />
<strong>Linux</strong>-<strong>Magazin</strong> Online http://www.linux-magazin.de 95<br />
<strong>Linux</strong>User http://www.linuxuser.de 41, 97<br />
Medialinx IT-Academy<br />
http://www.medialinx-academy.de<br />
39, 101, 103<br />
Messe Berlin GmbH http://www.linuxtag.org 11<br />
Microsoft GmbH http://www.microsoft.com/germany 35<br />
Netways GmbH http://www.netways.de 61<br />
O’Reilly Verlag GmbH & Co KG http://www.oreilly.de 7<br />
Open Source Press GmbH http://www.opensourcepress.de 29<br />
PlusServer AG http://www.plusserver.de 62, 72, 80, 98<br />
Spenneberg Training & Consulting http://www.spenneberg.com 101<br />
Thomas Krenn AG http://www.thomas-krenn.com 108<br />
Webtropia http://www.webtropia.com 27<br />
Einem Teil dieser Ausgabe liegt eine Beilage der Firma M-Promotion<br />
(http://www.poland-it.pl) bei. Wir bitten unsere Leser um freundliche Beachtung.<br />
Veranstaltungen<br />
26.10.2012-09.04.2013<br />
Concurso Univ. de SwL – Desarrollo<br />
National, Spain<br />
http://www.concursosoftwarelibre.org<br />
02.-22.04.2013<br />
Concurso Univ. de SwL – Evaluación<br />
Sevilla, Spain<br />
http://www.concursosoftwarelibre.org<br />
03.-05.04.2013<br />
USENIX NSDI ’13<br />
Lombard, IL<br />
https://www.usenix.org/conference/nsdi13<br />
08.04.2013<br />
2013 High Performance Computing <strong>Linux</strong> for Wall<br />
Street<br />
New York, NY<br />
http://www.flaggmgmt.com/linux/<br />
10.-11.04.2013<br />
3. Deutscher OpenDocument-Kongress für Wirtschaft<br />
und Verwaltung<br />
Industrie- und Handelskammer zu Berlin<br />
Berlin, Deutschland<br />
http://www.frodev.org/konferenz<br />
10.-13.04.2013<br />
Libre Graphics Meeting 2013<br />
Madrid, Spain<br />
http://libregraphicsmeeting.org/2013/<br />
17.04.2013<br />
Red Hat Tour (Bonn)<br />
Bonn (Germany)<br />
http://www.europe.redhat.com/promo/redhattour2013/<br />
city/index.php?location=de<br />
18.-19.04.2013<br />
Open Source Datacenter Conference<br />
NETWAYS Event Services GmbH<br />
Nürnberg (Germany)<br />
http://www.netways.de/osdc/osdc2013<br />
20.04.2013<br />
Grazer <strong>Linux</strong>tage 2013<br />
FH Joanneum<br />
Graz, Österreich<br />
http://www.linuxtage.at<br />
23.-25.04.2013<br />
Infosecurity Europe 2013<br />
http://www.infosec.co.uk<br />
27.-28.04.2013<br />
<strong>Linux</strong>Fest Northwest 2013<br />
Bellingham, WA<br />
http://linuxfestnorthwest.org<br />
02.-04.05.2013<br />
<strong>Linux</strong>wochen Wien<br />
Wien, Austria<br />
http://linuxwochen.at<br />
09.-12.05.2013<br />
LUG Camp<br />
Knipex-Werk<br />
Wuppertal, (Germany)<br />
http://2013.tux-trifft-tuffi.de<br />
10.-11.05.2013<br />
Concurso Univ. de SwL – Final<br />
Granada, Spain<br />
http://www.concursosoftwarelibre.org<br />
22.-25.05.2013<br />
<strong>Linux</strong>Tag 2013<br />
Messegelände Berlin,<br />
Berlin<br />
http://www.linuxtag.org<br />
28.-31.05.2013<br />
AnDevCon Spring 2013<br />
Boston, Massachusetts, USA<br />
http://www.andevcon.com<br />
03.-04.06.2013<br />
Berlin Buzzwords<br />
Kulturbrauerei<br />
Berlin<br />
http://berlinbuzzwords.de<br />
03.-05.06.2013<br />
JAXConf US 2013<br />
http://jaxconf.com<br />
24.-28.06.2013<br />
USENIX Federated Conferences Week<br />
San Jose, CA<br />
https://www.usenix.org/conference/fcw13<br />
01.-07.07.2013<br />
Europython 2013<br />
Florence, Italy<br />
http://ep2013.europython.eu<br />
11.-12.07.2013<br />
Akademy-es 2013<br />
Bilbao, Spain<br />
http://www.kde-espana.es/akademy-es2013<br />
13.-19.07.2013<br />
Akademy 2013<br />
Bilbao, Spain<br />
http://akademy2013.kde.org<br />
18.-22.07.2013<br />
openSUSE Conference<br />
Thessaloniki, Greece<br />
https://conference.opensuse.org<br />
01.-08.08.2013<br />
Guadec 2013<br />
Brno, Czech Republic<br />
http://guadec.org<br />
14.-16.08.2013<br />
USENIX Security ’13<br />
Washington, D.C.<br />
https://www.usenix.org/conference/usenixsecurity13<br />
11.-13.10.2013<br />
Ubucon 2013<br />
69115 Heidelberg, Deutschland<br />
http://www.ubucon.de<br />
03.-08.11.2013<br />
USENIX LISA ’13<br />
Washington, D.C.<br />
https://www.usenix.org/conference/lisa13
Impressum<br />
<strong>Linux</strong>-<strong>Magazin</strong> eine Publikation der <strong>Linux</strong> New Media, einem<br />
Geschäftsbereich der Medialinx AG<br />
Redaktionsanschrift Putzbrunner Str. 71<br />
81739 München<br />
Tel.: 089/993411-0<br />
Fax: 089/993411-99 oder -96<br />
Internet<br />
www.linux-magazin.de<br />
E-Mail<br />
redaktion@linux-magazin.de<br />
Geschäftsleitung<br />
Chefredakteur<br />
stv. Chefredakteure<br />
Redaktionsltg. Online<br />
Brian Osborn (Vorstand), bosborn@medialinx-gruppe.de<br />
Hermann Plank (Vorstand), hplank@medialinx-gruppe.de<br />
Jan Kleinert (V.i.S.d.P.), jkleinert@linux-magazin.de (jk)<br />
Markus Feilner, mfeilner@linux-magazin.de (mfe)<br />
Mathias Huber, mhuber@linux-magazin.de (mhu)<br />
Mathias Huber, mhuber@linux-magazin.de (mhu)<br />
Print- und Onlineredaktion<br />
Aktuell, Forum, Software, Kristian Kissling, kkissling@linux-magazin.de (kki)<br />
Programmierung Mathias Huber, mhuber@linux-magazin.de (mhu)<br />
Sysadmin, Know-how Markus Feilner, mfeilner@linux-magazin.de (mfe)<br />
Ständige Mitarbeiter Fred Andresen, Zack Brown, Mela Eckenfels, Heike Jurzik (hej),<br />
Anika Kehrer (ake), Peter Kreußel, Charly Kühnast,<br />
Martin Loschwitz, Michael Schilli, Tim Schürmann,<br />
Mark Vogelsberger, Uwe Vollbracht, Arnold Zimprich (azi)<br />
Schlussredaktion<br />
Grafik<br />
Bildnachweis<br />
DELUG-DVD<br />
Chefredaktionen<br />
International<br />
Produktion<br />
Onlineshop<br />
Abo-Infoseite<br />
Abonnenten-Service<br />
ISSN 1432 – 640 X<br />
Jürgen Manthey<br />
Mike Gajer, Klaus Manuel Rehfeld, Judith Erb (Art Director)<br />
xhoch4, München (Titel-Illustration)<br />
123RF.com, Fotolia.de, Photocase.com, Pixelio.de und andere<br />
Thomas Leichtenstern, tleichtenstern@linux-magazin.de (tle)<br />
<strong>Linux</strong> <strong>Magazin</strong>e International<br />
Joe Casad (jcasad@linux-magazine.com)<br />
<strong>Linux</strong> <strong>Magazin</strong>e Poland<br />
Artur Skura (askura@linux-magazine.pl)<br />
<strong>Linux</strong> <strong>Magazin</strong>e Spain<br />
Paul C. Brown (pbrown@linux-magazine.es)<br />
<strong>Linux</strong> <strong>Magazin</strong>e Brasil<br />
Rafael Peregrino (rperegrino@linuxmagazine.com.br)<br />
Christian Ullrich, cullrich@linux-magazin.de<br />
www.medialinx-shop.de<br />
www.linux-magazin.de/Produkte<br />
Monika Jölly<br />
abo@linux-magazin.de<br />
Tel.: 07131/27 07 274<br />
Fax: 07131/27 07 78 601<br />
CH-Tel: +41 43 816 16 27<br />
Preise Print Deutschland Österreich Schweiz Ausland EU<br />
No-Media-Ausgabe 4 6,40 4 7,05 Sfr 12,80 (siehe Titel)<br />
DELUG-DVD-Ausgabe 4 8,50 4 9,35 Sfr 17,— (siehe Titel)<br />
Jahres-DVD (Einzelpreis) 4 14,95 4 14,95 Sfr 18,90 4 14,95<br />
Jahres-DVD (zum Abo 1 ) 4 6,70 4 6,70 Sfr 8,50 4 6,70<br />
Mini-Abo (3 Ausgaben) 4 3,— 4 3,— Sfr 4,50 4 3,—<br />
Jahresabo No Media 4 65,20 4 71,90 Sfr 107,50 4 84,60<br />
Jahresabo DELUG-DVD 4 87,90 4 96,90 Sfr 142,80 4 99,90<br />
Preise Digital Deutschland Österreich Schweiz Ausland EU<br />
Heft-PDF Einzelausgabe 4 6,40 4 6,40 Sfr 8,30 4 6,40<br />
DigiSub (12 Ausgaben) 4 65,20 4 65,20 Sfr 84,80 4 65,20<br />
DigiSub (zum Printabo) 4 12,— 4 12,— Sfr 12,— 4 12,—<br />
HTML-Archiv (zum Abo 1 ) 4 12,— 4 12,— Sfr 12,— 4 12,—<br />
Preise Kombiabos Deutschland Österreich Schweiz Ausland EU<br />
Mega-Kombi-Abo 2 4 143,40 4 163,90 Sfr 199,90 4 173,90<br />
Profi-Abo 3 4 136,60 4 151,70 Sfr 168,90 4 165,70<br />
1<br />
nur erhältlich in Verbindung mit einem Jahresabo Print oder Digital<br />
2<br />
mit <strong>Linux</strong>User-Abo (DVD) und beiden Jahres-DVDs, inkl. DELUG-Mitgliedschaft (monatl.<br />
DELUG-DVD)<br />
3<br />
mit ADMIN-Abo und beiden Jahres-DVDs<br />
Schüler- und Studentenermäßigung: 20 Prozent gegen Vorlage eines Schülerausweises<br />
oder einer aktuellen Immatrikulationsbescheinigung. Der aktuelle Nachweis ist bei<br />
Verlän gerung neu zu erbringen. Andere Abo-Formen, Ermäßigungen im Ausland etc.<br />
auf Anfrage.<br />
Adressänderungen bitte umgehend mitteilen, da Nachsendeaufträge bei der Post nicht<br />
für Zeitschriften gelten.<br />
Pressemitteilungen<br />
Marketing und Vertrieb<br />
Mediaberatung D, A, CH<br />
presse-info@linux-magazin.de<br />
Petra Jaser, pjaser@linux-magazin.de<br />
Tel.: +49 (0)89 / 99 34 11 – 24<br />
Fax: +49 (0)89 / 99 34 11 – 99<br />
Michael Seiter, mseiter@linux-magazin.de<br />
Tel.: +49 (0)89 / 99 34 11 – 23<br />
Mediaberatung USA Ann Jesse, ajesse@linux-magazine.com<br />
und weitere Länder Tel.: +1 785 841 8834<br />
Darrah Buren, dburen@linux-magazine.com<br />
Tel.:+1 785 856 3082<br />
Pressevertrieb<br />
Druck<br />
Es gilt die Anzeigen-Preisliste vom 01.01.2013.<br />
MZV Moderner Zeitschriften Vertrieb GmbH & Co. KG<br />
Ohmstraße 1, 85716 Unterschleißheim<br />
Tel.: 089/31906-0, Fax: 089/31906-113<br />
Vogel Druck GmbH, 97204 Höchberg<br />
Der Begriff Unix wird in dieser Schreibweise als generelle Bezeichnung für die Unixähnlichen<br />
Betriebssysteme verschiedener Hersteller benutzt. <strong>Linux</strong> ist eingetragenes<br />
Marken zeichen von Linus Torvalds und wird in unserem Markennamen mit seiner<br />
Erlaubnis verwendet.<br />
Eine Haftung für die Richtigkeit von Veröffentlichungen kann trotz sorgfältiger Prüfung<br />
durch die Redaktion vom Verlag nicht übernommen werden. Mit der Einsendung von<br />
Manus kripten gibt der Verfasser seine Zustimmung zum Abdruck. Für unverlangt<br />
eingesandte Manuskripte kann keine Haftung übernommen werden.<br />
Das Exklusiv- und Verfügungsrecht für angenommene Manuskripte liegt beim Verlag. Es<br />
darf kein Teil des Inhalts ohne ausdrückliche schriftliche Genehmigung des Verlags in<br />
irgendeiner Form vervielfältigt oder verbreitet werden.<br />
Copyright © 1994 – 2013 Medialinx AG<br />
Impressum 05/2013<br />
Service<br />
www.linux-magazin.de<br />
105<br />
Krypto-Info<br />
GnuPG-Schlüssel der <strong>Linux</strong>-<strong>Magazin</strong>-Redaktion:<br />
pub 1024D/44F0F2B3 2000-05-08 Redaktion <strong>Linux</strong>-<strong>Magazin</strong><br />
<br />
Key fingerprint = C60B 1C94 316B 7F38 E8CC E1C1 8EA6 1F22 44F0 F2B3<br />
Public-Key der DFN-PCA:<br />
pub 2048R/7282B245 2007-12-12,<br />
DFN-PGP-PCA, CERTIFICATION ONLY KEY (DFN-PGP-Policy: 2008-2009)<br />
<br />
Key fingerprint = 39 D9 D7 7F 98 A8 F1 1B 26 6B D8 F2 EE 8F BB 5A<br />
PGP-Zertifikat der DFN-User-CA:<br />
pub 2048R/6362BE8B (2007-12-12),<br />
DFN-PGP-User-CA, CERTIFICATION ONLY KEY (DFN-PGP-Policy: 2008-2009)<br />
<br />
Key fingerprint = 30 96 47 77 58 48 22 C5 89 2A 85 19 9A D1 D4 06<br />
Root-Zertifikat der CAcert:<br />
Subject: O=Root CA, OU=http://www.cacert.org, CN=CA Cert Signing Authority/<br />
Email=support@cacert.org<br />
SHA1 Fingerprint=13:5C:EC:36:F4:9C:B8:E9:3B:1A:B2:70:CD:80:88:46:76:CE:8F:33<br />
MD5 Fingerprint=A6:1B:37:5E:39:0D:9C:36:54:EE:BD:20:31:46:1F:6B<br />
GPG-Schlüssel der CAcert:<br />
pub 1024D/65D0FD58 2003-07-11 [expires: 2033-07-03]<br />
Key fingerprint = A31D 4F81 EF4E BD07 B456 FA04 D2BB 0D01 65D0 FD58<br />
uid CA Cert Signing Authority (Root CA) <br />
Autoren dieser Ausgabe<br />
Fred Andresen Recht einfach 74<br />
Zack Brown Zacks Kernel-News 18<br />
David Farine Streamaufwärts 36<br />
Rainer Grimm Tux liest 78<br />
Charly Kühnast Gute Ersatzspieler 67<br />
Martin Loschwitz Alle Systeme im Blick 68<br />
Martin Loschwitz Migrationshintergrund 44<br />
Christian Lohmaier Passende Spezialfilter 26<br />
Andreas Möller Schneller knoten 84<br />
Alexander Nassian Großbaustelle 91<br />
Michael Schilli Entspannt nach draußen 94<br />
Tim Schürmann Bund fürs Leben 50<br />
Tim Schürmann Malen nach Zahlen 56<br />
Tim Schürmann Umzugsplaner 20<br />
Fridrich Strba Passende Spezialfilter 26<br />
Mark Vogelsberger Totmacher 82<br />
Uwe Vollbracht Tooltipps 60<br />
Christian Woldt Tux liest 78
Service<br />
www.linux-magazin.de <strong>Vorschau</strong> 02/2013 06/2013 05/2013 01/2013<br />
106<br />
<strong>Vorschau</strong><br />
06/2013 Dachzeile<br />
Tools für Internet-Snapshots<br />
MAGAZIN<br />
Überschrift<br />
Der technische Fortschritt ist der Motor des digitalen Vergessens:<br />
Neue CMS-Version gefällig? Ein Datenbank-Update nötig?<br />
PHP ändert ein API? Kaum eine Website schafft es, Layout und<br />
Inhalt stabil zu halten. In der Bitparade treten Archivierungstools<br />
fürs Web 2.0 an, die das Hier und Jetzt dokumentieren<br />
helfen, sei es aus Interesse, sei es im Kampf gegen Abmahner.<br />
Namengeber: Bind 10<br />
© Nvidia<br />
ARM inside<br />
<strong>Die</strong> Firma ARM Limited produziert keine CPUs und unterläuft<br />
trotzdem Intels Monopol. <strong>Die</strong> Briten leben sehr gut von der<br />
Lizenzierung ihrer stetig weiterentwickelten Architekturen. In<br />
Mobiltelefonen, Tablets, Fernsehern, System-on-Chip-Platinen,<br />
Thin Clients und sogar Servern ticken ARM-Prozessoren.<br />
Da auf den meisten Geräten <strong>Linux</strong>-Software läuft, lautet das<br />
Motto des nächsten <strong>Magazin</strong>s „ARM drin“. <strong>Die</strong> Artikel erklären<br />
die Besonderheiten der Architektur, zählen Entwicklungswerkzeuge<br />
auf, empfehlen heiße Platinen im unteren Preissegment,<br />
flashen Tablets und Smartphones mit eigentlich nicht vorgesehener<br />
Software und schauen, mit welcher Technik ARM-Server<br />
versuchen im Intel- und AMD-Markt Fuß zu fassen.<br />
Vielleicht alle zehn Jahre ändert das Domain Name System mal<br />
etwas Grundlegendes. Ende Februar war es so weit: Der Bind-<br />
Server spaltet sich mit Version 10 in mehrere Prozesse auf, um<br />
besser zu skalieren und verfügbar zu werden, und integriert<br />
DHCP und IPv6. Gründe genug für einen Artikel.<br />
Kern-Technik<br />
Auch die Kernel-Know-how-Reihe stellt sich in der nächsten<br />
Ausgabe in den <strong>Die</strong>nst des Titelthemas. <strong>Die</strong> Autoren werden<br />
nicht nur den ARM-Zweig der Kernelquellen durchforsten, auf<br />
ihrem Schreibtisch liegt auch schon ein Raspberry Pi bereit.<br />
<strong>Die</strong> Ausgabe 06/2013<br />
erscheint am 2. Mai 2013<br />
© Quartarolo, sxc.hu<br />
<strong>Vorschau</strong><br />
auf 05/2013<br />
<strong>Die</strong> nächste Ausgabe erscheint am 18.04.2013<br />
Daten visualisieren<br />
Komplexe Daten schreien geradezu nach einer guten Grafik,<br />
denn in den seltensten Fällen ergeben sich die interessanten<br />
Fakten beim ersten Blick auf die Kolonnen von Ziffern und<br />
Zahlen. Unter <strong>Linux</strong> haben Sie die Auswahl an einem reichen<br />
Sortiment von entsprechenden Applikationen.<br />
Wir werden in der kommenden Ausgabe anhand einiger Beispiele<br />
detailliert erklären, wie Sie eine trockene Formel in eine<br />
selbsterklärende Animation verwandeln oder aus einer Handvoll<br />
chemischer Elemente eine atemberaubende Molekülsimulation<br />
erzeugen.<br />
Opus-Tools<br />
Der freie Opus-Codec verspricht verlustfreie Audio-Übertragung.<br />
Wir stellen den IETF-Standard vor, der in die Techniken<br />
bekannter Größen wie Skype und Xiph eingeflossen ist, und<br />
zeigen, wie Sie selbst Opus-Dateien erzeugen.<br />
Arduino-Workshop<br />
Wer sich einen Arduino zulegt, dem steht der Sinn nach einer<br />
praktischen Anwendung. Ohne entsprechende Erfahrung fällt<br />
der Einstieg ins Löten und Programmieren aber schwer. Hier<br />
hilft ein Workshop mit praktischen Tipps.
JETZT<br />
MIT DVD!<br />
MAGAZIN<br />
Sonderaktion<br />
Testen Sie jetzt<br />
3 Ausgaben<br />
für 3 Euro!<br />
Jetzt schnell bestellen:<br />
Gewinnen Sie...<br />
einen Acer REVO RL70:<br />
Das flüsterleise Kraftpaket<br />
für Multimedia<br />
Home Entertainment<br />
im Wert<br />
von 249 Euro<br />
• Telefon 07131 / 2707 274<br />
• Fax 07131 / 2707 78 601<br />
• E-Mail: abo@linux-magazin.de<br />
• Web: www.linux-magazin.de/probeabo<br />
Mit großem Gewinnspiel unter:<br />
www.linux-magazin.de/probeabo<br />
• ultrakompakter Formfaktor (209 x 209 x 35 mm)<br />
• Basiert auf AMD Brazos-Plattform für Full-HD<br />
und Games<br />
Einsendeschluss ist der 16.06.2013
Bei Thomas Krenn steht<br />
<strong>Linux</strong> auf der Tagesordnung!<br />
Intel® Xeon® Prozessoren<br />
Erfahren Sie mehr zum Thema <strong>Linux</strong> in<br />
unserem Techniker Wiki unter:<br />
www.thomas-krenn.com/wiki_linux<br />
Mit gängigen <strong>Linux</strong> Distributionen getestet:<br />
1HE Intel Single-CPU CSE512 Server<br />
nur bei Thomas Krenn ab:<br />
<strong>Die</strong>ses Raumwunder mit 356mm Einbautiefe<br />
€ 429,-<br />
bietet auf 1 Höheneinheit die Möglichkeit für 2 HDDs.<br />
Weitere Informationen zu diesem Produkt<br />
erhalten Sie unter:<br />
www.thomas-krenn.com/linux_cse512<br />
DE: +49 (0) 8551 9150 - 0<br />
CH: +41 (0) 848207970<br />
AT: +43 (0)732 - 2363 - 0<br />
Intel, Intel Logo, Intel Core, Intel Inside, Intel Inside Logo, Intel Viiv, Xeon, und Xeon Inside sind Marken der Intel Corporation oder ihrer Tochtergesellschaften in den USA oder anderen Ländern.<br />
Verkauf erfolgt ausschließlich an Gewerbetreibende, Firmen, Freiberufler (Ärzte, Rechtsanwälte etc.), staatliche Institutionen und Behörden. Druckfehler, Irrtümer und Änderungen in Preis und Ausstattung<br />
vorbehalten. Unsere Versandkosten richten sich nach Gewicht und Versandart - mehr unter: www.thomas-krenn.com/versandkosten.Thomas-Krenn.AG, Speltenbach-Steinäcker 1, D-94078 Freyung