26.02.2014 Aufrufe

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 Homepage­Baukasten!<br />

Buchbar schon ab 1.50 € monatlich!<br />

Weitere Webspace­Angebote CMS­Systeme Shop­Systeme SSL­Certs Hosted Exchange Spezial­Angebote 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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!