Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
www.linux-user.de<br />
Moderne<br />
<strong>Web</strong>sites<br />
Bildsammlung bearbeiten mit ImageMagick S. 68<br />
Experten-Tools fürs Netzwerk: Netcat & Co. S. 74<br />
SSH-Sitzungen managen mit AutoSSH/Mosh S. 82<br />
EUR 5,50<br />
Deutschland<br />
ÖsterreichEUR 6,30<br />
Schweiz sfr 11,00<br />
Benelux EUR 6,50<br />
Spanien EUR 7,45<br />
Italien EUR 7,45<br />
08.2012<br />
08.2012<br />
Das Magazin für die Praxis<br />
Autokey • Byobu • Gramps • Mypaint • NETCAT • SSH • <strong>Modernes</strong> WEB<br />
Schicke Sites Aufsetzen mit HTML5, CSS3 und Nosql-Datenbank<br />
<strong>Modernes</strong> WEB<br />
Komfort-Datenspeicher S. 29<br />
Im Nu zum interaktiven <strong>Web</strong>auftritt<br />
mit der NoSQL-Datenbank CouchDB<br />
Schlanke <strong>Web</strong>server S. 38, 44<br />
Komplettpaket Hiawatha mit SSL und IPv6,<br />
virtuelle Hosts auf schmaler Hardware mit Nginx<br />
Stressfrei arbeiten mit HTML5 und CSS3 S. 24, 34<br />
Freie Codegeneratoren, GUI- und AJAX-Toolkits nutzen, mit dem<br />
Gecko-basierten <strong>Web</strong>editor Bluegriffon WYSIWYG programmieren<br />
SOHO-Multitalent Samsung CLX-6220FX<br />
Drucken, faxen, scannen und kopieren im Netz – der neue<br />
Alleskönner von Samsung mit perfektem Linux-Support S. 78<br />
Byobu S. 62<br />
Terminal-Ausbau<br />
mit allem Komfort<br />
MyPaint S. 55<br />
Arbeitstier für<br />
Zeichenkünstler<br />
4 195111 005504 08<br />
Familiengeschichte<br />
dokumentieren S. 50<br />
Mit Gramps ganz einfach zum<br />
übersichtlichen Stammbaum<br />
Eingaben wie von<br />
Zauberhand S. 58<br />
Auf Knopfdruck Texte und<br />
Skripte in jeder Anwendung<br />
Siduction: Tiefer Einblick in Razor-qt S. 6<br />
KDEs kleiner Bruder: Wieselflinker Desktop auf Qt-Basis mit<br />
minimalen Hardware-Ansprüchen und tollen Funktionen
Born to<br />
be ROOT!<br />
keine Mindestvertragslaufzeit<br />
keine Einrichtungsgebühr<br />
Root Server r Linux<br />
Level<br />
el 1. Der effiziente<br />
ente Sprinter!<br />
SICHERHEIT UND EFFIZIENZ<br />
CPU<br />
Leistung<br />
RAM<br />
HD<br />
Traffic<br />
,00<br />
€/Mon.*<br />
Intel Sandy Bridge G530<br />
2 x 2,4 GHz<br />
4 GB<br />
1000 GB<br />
Unlimited*<br />
r<br />
ie<br />
NaturEnergie<br />
NaturEnerg<br />
Sie gehen keine e Kompromisse misse<br />
in Sachen Datensicher-<br />
heit ein? Wir<br />
auch nicht! Unsere e Rechenzentren en<br />
entren sind<br />
streng nach<br />
ISO<br />
27001 01<br />
TÜV-zertifiziert. t. Gleichzeitig<br />
eitig<br />
denken n wir<br />
an<br />
die Umwelt und<br />
nutzen regenerative<br />
enerativ<br />
Energien.<br />
n.<br />
Der Root<br />
ot<br />
Server Linux Level el<br />
1 von STRATO holt das Optimum an<br />
Leistung und Energieeffizienz eeffizienz heraus, was<br />
aktuelle e Server-Hard-<br />
e<br />
ware<br />
hergibt. Was<br />
wir<br />
an<br />
Energie e sparen<br />
geben<br />
wir<br />
durch<br />
den<br />
günstigen n Preis gerne an Sie weiter. Profitieren Sie<br />
davon!<br />
* Traffic-Unlimited: Keine zusätzlichen Kosten durch Traffic (bei Traffic-Verbrauch über 1.000 GB/ Monat<br />
und danach je weitere 300 GB erfolgt eine Umstellung der Anbindung auf max. 10 MBit/s. Erneute Freischaltung<br />
der vollen Bandbreit jeweils kostenlos über den Kundenservicebereich). Alle Preise inkl. MwSt.<br />
Info: 0 18 05 - 00 76 77 | strato-pro.de<br />
(0,14€/Min. aus dem dt. Festnetz, Mobilfunk max. 0,42€/Min.)
editorial<br />
Da seh ich schwarz<br />
Sehr geehrte Leserinnen und Leser,<br />
Fedora 18, die „kugelrunde Kuh“<br />
(Spherical Cow) verspricht ein<br />
ganz besonderes Release zu werden<br />
– nicht nur wegen des von<br />
Microsoft signierten, UEFI-Secure-Boot-kompatiblen<br />
Bootloaders,<br />
der bereits für ein mächtiges<br />
Rauschen im Blätterwald sorgte.<br />
Bislang fast gänzlich unbemerkt<br />
haben sich das Gnome-Projekt<br />
und Fedora für das Release eine<br />
tolle Neuerung in Sachen Benutzerfreundlichkeit<br />
ausgedacht, der<br />
sie die auf den ersten Blick relativ<br />
harmlos wirkende Bezeichnung<br />
Offline System Updates<br />
gegeben haben [1].<br />
Das Offline-System-<br />
Update, laut Fedora-Wiki<br />
für die „Aktualisierung<br />
von Betriebssystemkomponenten“<br />
gedacht, aber<br />
in Wirklichkeit für den<br />
Gnome-3-Desktop ausgebrütet,<br />
funktioniert folgendermaßen:<br />
Das System<br />
lädt zunächst ohne<br />
jede Benutzerinteraktion<br />
die betreffenden Komponenten<br />
im Hintergrund<br />
herunter. Erst nachdem<br />
es das erledigt hat, informiert es<br />
Sie davon, dass Updates zum Einspielen<br />
vorliegen, und fragt, ob es<br />
diese nun installieren soll, oder<br />
Sie das Update auf später (Not<br />
now) verschieben möchten (siehe<br />
Interface-Mockups unter [2]).<br />
Stimmen Sie der Aktualisierung<br />
zu, fährt Fedora 18 die aktuelle<br />
Sitzung herunter und bootet in einen<br />
speziellen System-Update-<br />
Modus, in dem es die neue Software<br />
einspielt (siehe Abbildung).<br />
Ist das erledigt, rebootet der<br />
Rechner wieder, diesmal zurück in<br />
den voreingestellten Sitzungstyp.<br />
Reboot beim Einspielen von Aktualisierungen,<br />
Updates werden<br />
konfiguriert, bitte schalten Sie den<br />
Computer nicht aus – Update 3 von<br />
69 …, kommt Ihnen das bekannt<br />
vor? Genau, Gnome und Fedora<br />
So soll nach Vorstellung des Gnome-Projekts der Offline-<br />
Update-Bildschirm aussehen. (Bild: live.gnome.org)<br />
wollen uns als tolle neue Errungenschaft<br />
verkaufen, was schon<br />
Generationen von Windows-<br />
Usern halb in den Wahnsinn getrieben<br />
hat, und damit die reibungslosen<br />
und störungsfreien<br />
Updates abschaffen, die eine der<br />
angenehmsten Eigenschaften von<br />
Linux darstellen.<br />
Das Ersetzen von Bibliotheken<br />
und Dateien bei laufendem Betriebssystem<br />
könne zu Anwendungsabstürzen<br />
und Inkonsistenzen<br />
führen, die sich mit der<br />
„neuen“ Methode vermeiden ließen,<br />
so lautet die schmallippige<br />
Begründung. Nur wenig auskunftsfreudiger<br />
gibt sich Richard<br />
Hughes (Red Hat), neben Lennart<br />
Poettering (ebenfalls Red Hat) einer<br />
der beiden Protagonisten dieses<br />
Vorhabens, in seinem Blog [3]:<br />
Als Beispiel für Software, die den<br />
Reboot erforderlich mache, führt<br />
er nur Firefox und Gnome-session<br />
an (beides übrigens gerade keine<br />
Betriebssystemkomponenten).<br />
Ja, liebe Freunde, geht’s denn<br />
noch? Wäre es, statt eine gestandene<br />
Linux-Distribution zu einem<br />
billigen Microsoft-Imitat zu degradieren,<br />
das bei jeder Anwendungsaktualisierung<br />
rebootet,<br />
nicht vielleicht<br />
einfacher, Firefox und<br />
Gnome ein wenig Update-freundlicher<br />
zu programmieren?<br />
Ich weiß ja<br />
nicht, wie es Ihnen geht<br />
– aber ich habe in den<br />
letzten 15 Jahren tausende<br />
Male Linux-Systeme<br />
im laufenden Betrieb<br />
aktualisiert und dabei<br />
nie auch nur das geringste<br />
Problem gehabt.<br />
Auch nicht mit Red-Hatoder<br />
Fedora-Desktops,<br />
Firefox hin oder Gnome her. Das<br />
ist jetzt wohl Geschichte …<br />
Herzliche Grüße,<br />
Jörg Luther<br />
Chefredakteur<br />
info<br />
[1] „Features: Offline System Updates“:<br />
https:// fedoraproject. org/ wiki/ Features/ OfflineSystemUpdates<br />
[2] „Software Updates“:<br />
https:// live. gnome. org/ GnomeOS/ Design/ Whiteboards/ SoftwareUpdates<br />
[3] „Looking Forward to Gnome 3.6“: http:// blogs. gnome. org/ hughsie/ 2012/ 06/<br />
04/ offline‐os‐updates‐looking‐forward‐to‐gnome‐3‐6/<br />
www.linux-user.de 08 | 12<br />
3
08 | 12<br />
62<br />
Shell-Freaks und Terminal-Fetischisten<br />
aufgepasst:<br />
Byobu peppt die<br />
schnöde Kommandozeile zu einem<br />
multifunktionalen Interface auf.<br />
74<br />
Ob als schlanker Dateiserver, flinke<br />
Chat-Plattform oder einfach nur als<br />
Analysewerkzeug – mit Netcat und<br />
Co. haben Sie eine Werkzeugsammlung an der<br />
Hand, mit der Sie die unterschiedlichsten Aufgaben<br />
im Netz er ledigen, ohne dabei auf komplexe<br />
Software zurückgreifen zu müssen.<br />
50<br />
Woher kommen wir? Das Genealogieprogramm<br />
Gramps vermag<br />
diese Frage zwar nicht umfassend<br />
zu beantworten, hilft Ihnen aber dabei, aus<br />
den Informationen über Ihre Vorfahren eine<br />
spannende Familiengeschichte zu erstellen.<br />
Heft-DVD<br />
Aktuelles<br />
Schwerpunkt<br />
Siduction Razor-Qt.. . . . . . . 6<br />
Der leichtgewichtige Qt-Desktop<br />
Razor-qt zeigt im Debian-Sid-<br />
Derivat Siduction 12.1 sein volles<br />
Potenzial als wieselflinke GUI.<br />
Report<br />
Interview: Mandriva.. . . . . 14<br />
<strong>LinuxUser</strong> sprach mit dem neuen<br />
CEO Jean-Manuel Croset über<br />
dessen Pläne und Aussichten für<br />
das Unternehmen.<br />
Mobile Linux .. . . . . . . . . . . 18<br />
Mobilgeräte zählen zu den unentbehrlichen<br />
Bestandteilen des<br />
täglichen Lebens – und laufen oft<br />
mit Linux als Betriebssystem.<br />
78Drucken, Scannen,<br />
Faxen – drei klassische<br />
Disziplinen, die<br />
der multifunktionale CLX-6220 FX<br />
von Samsung aus dem Effeff beherrscht. Wie gut das Gerät<br />
dabei mit Linux harmoniert, zeigt unser großer Praxistest.<br />
Angetestet.............. 10<br />
Bilder in einem Rutsch konvertieren<br />
mit Converseen 0.5, Video-<br />
CDs/DVDs komfortabel erstellen<br />
mit DeVeDe 3.22, Passwörter<br />
und Zugangsdaten verwalten mit<br />
Revelation 0.4.13, Programme<br />
einfach starten mit Runner 0.2<br />
Neues rund um Linux..... 12<br />
Remotebox 1.3 hält Verbindung<br />
mit Virtualbox, Owncloud 4.0.4<br />
mit zahlreichen Bugfixes und<br />
Versionierung, Mintbox: pfiffiger<br />
Mini-Rechner mit vorinstalliertem<br />
Linux Mint, US-Navy<br />
steuert Kampfdrohnen künftig<br />
mit Linux, Grub2 erreicht endlich<br />
Final-Status, Linux-Essentials-<br />
Programm startet Prüfungen,<br />
OpenSuse 12.2 erst im September,<br />
Debian 7 „Wheezy“ im Freeze,<br />
Samsung tritt Linux-Foundation<br />
bei, Wireshark 1.8 spricht 100<br />
neue Protokolle<br />
HTML5-Tools............ 24<br />
„HMTL5 rocks“ – das findet nicht<br />
nur Google, und so gibt es zahlreiche<br />
Ressourcen, Frameworks<br />
und Werkzeuge rund um den<br />
brandneuen <strong>Web</strong>standard.<br />
CouchDB............... 29<br />
Mit CouchDB und wenigen<br />
Javascript-Kenntnissen programmieren<br />
Sie im Nu eine <strong>Web</strong>applikation<br />
inklusive Datenbank.<br />
Bluegriffon. . . . . . . . . . . . . 34<br />
Der erweiterbare HTML-Editor<br />
Bluegriffon unterstützt HTML5<br />
und beherrscht WYSIWIG.<br />
Nginx .. . . . . . . . . . . . . . . . . 38<br />
Schlank, schnell, vielseitig und<br />
einfach zu konfigurieren: Nginx<br />
bringt alles mit, was ein moderner<br />
<strong>Web</strong>server braucht. Kein Wunder,<br />
dass das Multitalent immer mehr<br />
zu Apache aufholt.<br />
Hiawatha .. . . . . . . . . . . . . . 44<br />
Der freie <strong>Web</strong>server Hiawatha<br />
legt den Fokus auf Sicherheit und<br />
geringen Ressourcenverbrauch.<br />
Damit eignet er sich besonders<br />
für kleinere <strong>Web</strong>projekte, für die<br />
Apache zu schwerfällig und komplex<br />
erscheint.<br />
4<br />
08 | 12
Heft-DVDs<br />
Auf den Heft-DVDs dieser Ausgabe befindet<br />
sich ausschließlich Anwendungssoftware.<br />
Die Datenträger enthalten keine jugendgefährdenden<br />
Inhalte.<br />
24<br />
Das moderne <strong>Web</strong><br />
zeichnet sich durch<br />
klare Strukturen aus. Wir zeigen, welche Tools Ihnen beim<br />
Programmieren mit HTML5 und CSS3 helfen, wie Sie eine interaktive<br />
Site inklusive Datenbank mit CouchDB in ein Dokument verpacken und<br />
bei Bedarf über einen schlanken, aber sicheren <strong>Web</strong>server ausliefern.<br />
Auf der Heft-DVD:<br />
Der wieselflinke Desktop<br />
Razor-qt macht von sich<br />
reden. Das exklusive<br />
Siduc tion 12.1 LU-Edition<br />
bietet Gelegenheit zum<br />
stressfreien Test (S. 6).<br />
Praxis<br />
Gramps. ............... 50<br />
Mit der Genealogie-Software<br />
Gramps fügen Sie Informationen<br />
über Ihre Ahnen zu einem spannenden<br />
Gesamtbild zusammen.<br />
MyPaint .. . . . . . . . . . . . . . . 55<br />
Einfaches Zeichnen fast wie mit<br />
Pinsel und Stift – das verspricht<br />
die Malsoftware MyPaint.<br />
Autokey .. . . . . . . . . . . . . . . 58<br />
Autokey setzt wiederkehrende<br />
Phrasen automatisch in Texte ein<br />
und automatisiert bei Bedarf beliebige<br />
andere Aufgaben.<br />
Byobu.. . . . . . . . . . . . . . . . . 62<br />
Der Sitzungsmanager Byobu<br />
erweitert die Shell um Tabs,<br />
Splitview und ein komfortables<br />
Prozessmanagement.<br />
ImageMagick............ 68<br />
Wer nicht 1000 Urlaubsbilder<br />
von Hand skalieren, normieren,<br />
beschneiden oder mit Wasserzeichen<br />
versehen möchte, für den ist<br />
die Werkzeugsammlung Image-<br />
Magick unverzichtbar.<br />
Netz&System<br />
Netcat & Co.............. 74<br />
Mit diesen kleinen Tools testen<br />
Sie im Handumdrehen Netzwerke,<br />
chatten oder setzen einen<br />
kleinen Server auf.<br />
Hardware<br />
Samsung CLX-6220FX .... 78<br />
Samsung will mit seinen Profi-Geräten<br />
auch bei Linux-Anwendern<br />
punkten. Unser Test untersucht,<br />
wie gut das gelingt.<br />
Know-how<br />
Mosh/AutoSSH .. . . . . . . . . 82<br />
Das Duo verleiht selbst der langsamsten<br />
SSH-Verbindung Flügel<br />
und sorgt für schnelles Weiterarbeiten<br />
nach einem Abbruch.<br />
Service<br />
Editorial................. 3<br />
IT-Profimarkt ........... 88<br />
Events/Inserenten .. . . . . . 94<br />
Impressum............. 95<br />
<strong>Vorschau</strong> 09/2012........ 96<br />
Heft-DVD-Inhalt .. . . . . . . . 97<br />
Wer seine Daten in der Cloud<br />
ablegt, dem bietet das auf<br />
Kubun tu 12.04 basierende<br />
Netrunner 4.2 eine ausgezeichnete<br />
Plattform, um<br />
von jedem beliebigen Ort<br />
der Welt aus mit diesen<br />
Dateien zu arbeiten.<br />
Ein schlankes Admin-<br />
System braucht keine<br />
GUI: Grml 2012.05<br />
setzt voll auf die<br />
Kommandozeile,<br />
integriert dabei alle<br />
Tools aber so, dass<br />
auch Einsteiger<br />
leicht mit der Distribution<br />
klarkommen.<br />
Daten retten, Rechner<br />
aufsetzen, Ursachenforschung<br />
nach dem Crash<br />
– mit der LU Rescue CD<br />
08.12 haben Sie alle<br />
wichtigen Werkzeuge<br />
dazu sofort zur Hand.<br />
<strong>LinuxUser</strong> DVD-Edition<br />
Hinweis: Haben Sie die DVD-Edition dieser Ausgabe erworben,<br />
finden Sie ab Seite 97 wei tere Informationen zu<br />
den Programmen auf den beiden Datenträgern. Haben Sie<br />
dagegen die güns tigere No-Media-Ausgabe erstanden,<br />
enthält dieses Heft keine Datenträger.<br />
www.linux-user.de<br />
12 | 10 5
heft-dvd<br />
Siduction Razor-qt 12.1<br />
Siduction mit dem innovativen Desktop Razor-qt<br />
Rasiermesserscharf<br />
Der wieselflinke<br />
Desktop Razor-qt<br />
basiert wie KDE<br />
auf dem Qt-Framework.<br />
Das Debian-<br />
Sid-Derivat Siduction<br />
12.1 nutzt<br />
seine Stärken und<br />
präsentiert sich<br />
stabil und flott.<br />
Ferdinand Thommes<br />
Siduction 12.1 Razor-qt<br />
<strong>LinuxUser</strong>-Edition<br />
(32+64 Bit bootfähig<br />
auf Heft-DVD)<br />
README<br />
Razor-qt ist ein leichtgewichtiges<br />
Desktop-Environment<br />
auf Basis des<br />
Qt-Frameworks. Der Artikel<br />
stellt das Development-Release<br />
von der<br />
Debian-basierten Distribution<br />
Siduction mit<br />
Razor-qt als Desktop-<br />
Umgebung näher vor.<br />
Die beiden führenden Desktop-<br />
Umgebungen für Linux sind KDE<br />
SC und Gnome. Allerdings vergrätzten<br />
beide Projekte in den<br />
letzten Jahren durch ihre Upgrade-Politik<br />
viele Fans. Sowohl<br />
KDE SC 4 als auch Gnome 3 waren<br />
in ihrer Anfangsphase für<br />
produktive Zwecke schlicht unbenutzbar.<br />
Außerdem fallen bei beiden<br />
Desktops die Hardwareanforderungen<br />
nicht gerade bescheiden<br />
aus. Für Gnome haben sich<br />
als leichtgewichtige Alternativen<br />
XFCE und LXDE etabliert, die wie<br />
der große Bruder auf dem GTK-<br />
Framework basieren.<br />
In Form von Razor-qt [1] hat<br />
KDE SC erst vor kurzer Zeit ebenfalls<br />
ein leichtgewichtiges Pendant<br />
bekommen. Wie im Kasten<br />
Interview mit einem Razor-qt-<br />
Entwickler auf der folgenden Seite<br />
nachzulesen, war – wie so oft –<br />
Eigennutz die Triebfeder: KDE 3<br />
war dem Initiator des Razor-qt-<br />
Projekts auf der vorhandenen<br />
Hardware zu langsam, die vorhandenen<br />
Alternativen erschienen<br />
ihm optisch nicht ansprechend<br />
genug. Also entwickelte er<br />
kurzerhand selbst einen Desktop<br />
auf Qt-Basis.<br />
Siduction-Razor-qt<br />
Die auf Debian „Unstable“ aufsetzende<br />
Distribution Siduction [2]<br />
hat auf dem LinuxTag 2012 in<br />
Berlin eine erste vollwertige Implementation<br />
von Razor-qt in einer<br />
Distribution vorgestellt [3].<br />
Hierzu wurde, da für Debian noch<br />
keine Razor-qt-Pakete zur Verfügung<br />
stehen, ein Auszug aus dem<br />
Git-Repository von Razor-qt 0.4.1<br />
Was ist eigentlich Qt?<br />
Hinter dem Namen Qt, ausgesprochen<br />
wie das englische „cute“ ([kju:t],<br />
dt.: niedlich, schnuckelig), verbirgt<br />
sich eine C++-Klassenbibliothek zum<br />
plattformübergreifenden Programmieren<br />
grafischer Benutzeroberflächen.<br />
Qt wurde ursprünglich vom norwegischen<br />
Unternehmen Trolltech entwickelt<br />
und 2008 vom Handy-Hersteller<br />
Nokia aufgekauft. 2011 legte dieser<br />
vom 26. Mai 2012 ausgecheckt<br />
und die Software mittels Siductions<br />
Buildsystem Pyfll in ein installierbares<br />
System integriert.<br />
Da die Entwicklung von Razorqt<br />
schnell voranschreitet, erstellten<br />
die Siduction-Entwickler für<br />
die Heft-DVD dieser Ausgabe am<br />
20. Juni exklusiv für <strong>LinuxUser</strong><br />
einen weiteren Snapshot und<br />
bauten damit ein Siduction-Live-<br />
Image. Seit der Veröffentlichung<br />
des Development-Releases von<br />
Siduction sind beispielsweise ein<br />
Mount- sowie ein Notification-<br />
Modul dazugekommen. Das ISO-<br />
Image auf der Heft-DVD hat eine<br />
das Projekt unter dem Namen Qt-Project<br />
als freie Software in die Hände<br />
der Community. Das prominenteste<br />
Vorzeigebeispiel für den Einsatz des<br />
Qt-Framework ist derzeit KDE, dessen<br />
bislang letzte Inkarnation KDE SC 4<br />
auf Qt in der Version 4 basiert. An<br />
einem Nachfolger auf Basis der bereits<br />
erschienen Version 5 von Qt<br />
bastelt das KDE-Projekt bereits.<br />
6 08 | 12<br />
www.linux-user.de
Siduction Razor-qt 12.1<br />
heft-dvd<br />
Größe von rund 700 MByte, es<br />
handelt sich um ein Live-Image<br />
mit Installer. Support dazu bietet<br />
die Siduction-Crew in ihrem Forum<br />
oder im IRC unter #siduction‐de<br />
an.<br />
Qt-Apps im Release<br />
Ein Desktop-Environment auf<br />
Qt-Basis verlangt natürlich auch<br />
nach Qt-basierten Programmen.<br />
Aber wer kennt schon ausreichend<br />
in Qt geschriebene Programme,<br />
um eine Distribution<br />
damit in allen Positionen auszustatten?<br />
Klar: Es gibt VLC, Qmmp und<br />
Qt-Versionen etlicher bekannter<br />
Programme wie Transmission<br />
oder Virtualbox. Aber ein fähiger<br />
Browser, ein Brennprogramm<br />
oder ein Dateimanager mit Zwei-<br />
Fenster-Ansicht? Beginnt man<br />
erst einmal, nach Qt-basierten<br />
Programmen zu recherchieren<br />
([4]), freut man sich über die große<br />
Fülle an vorhandenen Programmen.<br />
Doch die Ernüchterung<br />
folgt gleich auf dem Fuß, da<br />
viele der Programme entweder<br />
qualitativ nicht ausgereift sind<br />
oder schon länger nicht mehr<br />
weiterentwickelt werden.<br />
Beim Aussortieren bleiben aber<br />
doch einige echte Perlen übrig,<br />
wie etwa der <strong>Web</strong>kit-basierte<br />
Browser QupZilla [5] oder die<br />
Brennsuite Silicon Empire [6].<br />
Das Siduction-Team fand nach<br />
längerer Recherche ausreichend<br />
Stoff, um das Razor-qt-Release<br />
mit Qt-Apps für alle wichtigen<br />
Positionen auszustatten; als Login-Manager<br />
findet LightDM Verwendung.<br />
Eine komplette Liste<br />
der Apps finden Sie in der Tabelle<br />
Qt-Apps in Siduction Razor-Qt.<br />
Nach dem Start<br />
Der Start von Siduction selbst<br />
geht recht flott vonstatten. Auf<br />
einem älteren Notebook, das als<br />
Testgerät diente, erschien der<br />
Login-Screen nach 28 Sekunden,<br />
von dort zum fertig aufgebauten<br />
Desktop dauerte es weitere 4 Sekunden.<br />
Auf einem Sandy-Bridge-<br />
PC mit Intel Core i7 2600K und<br />
SSD nahm – bei ausgeschaltetem<br />
Login-Manager – der Startvorgang<br />
bis zum fertigen Desktop lediglich<br />
11 Sekunden in Anspruch.<br />
Auf dem Desktop befinden sich<br />
neben einem Panel noch drei<br />
Icons sowie eine Analog-Uhr. Die<br />
drei Icons verlinken das Siduction-Handbuch,<br />
den Installer und<br />
Name<br />
BSC<br />
JuffEd<br />
Nomacs<br />
QasMixer<br />
Qlipper<br />
Qmmp<br />
Qterminal<br />
QupZilla<br />
QutIM<br />
QXKB<br />
Screengrab-qt<br />
Silicon<br />
Empire<br />
Funktion<br />
den IRC-Kanal #siduction‐de. Im<br />
Panel gibt es am linken Rand neben<br />
dem Startmenü noch Startknöpfe<br />
für den Browser QupZilla<br />
(Abbildung A), Qterminal und<br />
den Texteditor JuffEd. Am rechten<br />
Rand beherbergt das Panel einen<br />
Ausschalter, zwei Symbole<br />
für virtuelle Desktops, das Clipboard<br />
Qlipper, den Tastatur-<br />
A QupZilla und Kvirc<br />
laden ins Internet ein.<br />
Qt-Apps in Siduction Razor-Qt<br />
Der Zwei-Fenster-Dateimanager Beesoft Commander lehnt sich an den Norton Commander an und<br />
bringt viele Eigenschaften des Urahns mit.<br />
Ein Texteditor, File-Browser und Terminal in einer Oberfläche, der in C++ geschrieben ist und Qt4<br />
als grafische Oberfläche nutzt. Er lässt sich über Plugins erweitern und lässt sich vielseitig konfigurieren.<br />
Ein Betrachter für alle gängigen Bildformate mit verschiedenen Bearbeitungsfunktionen wie Beschneiden,<br />
Drehen und Skalieren. Er unterstützt das Öffnen mehrerer Viewer-Fenster auf einem<br />
Rechner oder im LAN und synchronisiert diese.<br />
Ein Desktop-Mixer für das Simple Mixer Interface von Alsa, der einen ähnlichen Funktionsumfang<br />
bietet wie Alsamixer. Er beinhaltet auch ein Tray-Icon mit grundlegenden Mixer-Funktionen.<br />
Ein leichtgewichtiges, plattformübergreifendes Applet für die Zwischenablage.<br />
Der Audio-Player basiert auf den Qt-Bibliotheken und hat eine ähnliche Nutzerschnittstelle wie Winamp<br />
oder XMMS.<br />
Der Multitab-Terminal-Emulator basiert auf dem QtermWidget von Qt. Er lässt sich im normalen<br />
Fenster oder als Dropdown-Terminal à la Yakuake konfigurieren.<br />
Der schnelle Multi-Plattform-<strong>Web</strong>browser nutzt als HTML-Rendering-Engine Qt<strong>Web</strong>Kit.<br />
Der Multiprotokoll-Instant-Messenger unterstützt die gängigen Protokolle (ICQ, Jabber, Mail.Ru,<br />
IRC, VKontakte).<br />
Ein simpler Tastatur-Layout-Umschalter.<br />
Das Tool erstellt Bildschirmfotos und legt diese in der Zwischenablage ab oder lädt sie ins Internet<br />
hoch.<br />
Ein Brenn-, Kopier- und Löschprogramm für optische Medien. Es arbeitet auf CDs, DVDs und Bluray-Disks,<br />
zeigt alle Informationen der benutzten Medien vor dem eigentlichen Brennprozess an<br />
und beherrscht Drag & Drop. Es kann mit vielen Image-Formaten (ISO, NRG, BIN, MDF und IMG)<br />
umgehen.<br />
www.linux-user.de<br />
08 | 12 7
heft-dvd<br />
Siduction Razor-qt 12.1<br />
box selbst konfigurieren Sie dort.<br />
Autosuspend per Menü oder durch<br />
Schließen des Notebook-Deckels<br />
funktionierte ebenso wie der<br />
Mount-Button ohne weitere<br />
Nacharbeit sofort.<br />
Insgesamt erfordert Razor-qt<br />
nicht viel Eingewöhnung, sobald<br />
man sich einmal mit den vorinstallierten<br />
Qt-Apps vertraut gemacht<br />
hat. Herausragend präsentieren<br />
sich in jedem Fall der<br />
Browser QupZilla und das Brennprogramm<br />
Silicon Empire (Abbildung<br />
C). Angenehm benutzen<br />
lässt sich auch Qterminal, da es<br />
neben dem normalen Fenstermodus<br />
einen Dropdown-Mode à la<br />
Yakuake bietet.<br />
B Das Razor Konfigurations<br />
Center fasst<br />
alle Einstellungen<br />
übersichtlich für das<br />
System zusammen.<br />
Interview mit einem Razor-qt-Entwickler<br />
Layout-Umschalter sowie Screengrab<br />
für Screenshots. Insgesamt<br />
erscheint der Desktop sehr aufgeräumt.<br />
Im Startmenü findet sich unter<br />
Einstellungen | Razor-qt Settings<br />
das Razor Konfigurations Center,<br />
das – angelehnt an die System-<br />
Settings von KDE SC 4 – alle<br />
wichtigen Einstellungen beherbergt<br />
(Abbildung B). Auch Open-<br />
Alexander Sokoloff, Initiator und einer der Hauptentwickler<br />
hinter Razor-qt hat uns freundlicherweise ein<br />
paar Fragen zum Projekt beantwortet.<br />
<strong>LinuxUser</strong>: Alexander, es gibt mit KDE SC, Gnome,<br />
XFCE, LXDE und anderen eine ganze Menge an<br />
Desktop-Umgebungen auf dem Markt. Woher kam<br />
die Idee, eine weitere zu programmieren – und warum<br />
mit Qt?<br />
Alexander Sokoloff: Ich benutzte KDE seit Version 2<br />
und mochte es sehr. Jedoch empfand ich KDE immer<br />
als zu langsam. Vor Jahren habe ich dann einmal<br />
einen schlanken Desktop getestet (ich glaube,<br />
es war IceWM) und war fasziniert davon, wie schnell<br />
mein Computer sein konnte. Da verstand ich, dass<br />
ich eine kleine, schnelle, aber dennoch gut aussehende<br />
Desktop-Umgebung haben wollte. Als Ersatz<br />
für Gnome gibt es leichtgewichtige Alternativen mit<br />
XFCE und LXDE – für KDE gab es nichts. Das haben<br />
wir korrigiert. Die Frage, warum wir Qt benutzen, ist<br />
einfach zu beantworten: Wir mögen C++, und Qt ist<br />
meiner Meinung nach das beste Toolkit für C++.<br />
LU: Razor-qt 0.4.1 ist bereits erstaunlich stabil und<br />
benutzbar. Welche Features fehlen Dir am meisten,<br />
und was dürfen wir für Version 0.5 erwarten?<br />
AS: In die nächste Version werden viele Bugfixes<br />
und Verbesserungen an bestehenden Komponenten<br />
wie dem Application Runner und dem Panel mit seinen<br />
Plugins einfließen. Weitere Verbesserungen gibt<br />
es an der GUI für die Razor-qt-Einstellungen. Wir arbeiten<br />
aber auch an neuen Features wie einem Notification-Daemon<br />
und einer Qt-basierten GUI für<br />
LightDM, die wir hoffentlich noch in 0.5 einbringen<br />
können. Nicht unerwähnt bleiben soll unser Übersetzer-Team:<br />
Razor-qt gibt es mittlerweile in 20 Sprachen,<br />
bis hin zu Exoten wie Esperanto.<br />
LU: Das Interesse seitens der Linux-Szene an Razorqt<br />
ist enorm: Es gibt Zusammenarbeit mit Suse,<br />
Gentoo und Mageia führen die Pakete in ihren jeweiligen<br />
Repositories, und zu guter Letzt hat Siduction<br />
eine Live-CD (siehe Heft-DVD) mit Razor-qt und vielen<br />
Qt-Apps veröffentlicht.<br />
AS: Ich war selbst erstaunt über so viel Interesse.<br />
Es sieht so aus, als sei ein schlanker, eleganter<br />
Desktop auf Qt-Basis für viele von Interesse. Natürlich<br />
schauen wir auch andere Desktops an und werden<br />
Funktionen von dort integrieren. Unser Ziel:<br />
Razor-Qt soll nach der Installation betriebsbereit<br />
sein und sich per GUI weiter individuell konfigurieren<br />
lassen. Wer keine Konsole mag, sollte sie auch<br />
nicht benutzen müssen.<br />
LU: Danke, Alexander, für Deine Ausführungen.<br />
Das Interview mit Alexander Sokoloff führte Ferdinand<br />
Thommes. Er übernahm auch das Übersetzen<br />
aus dem Englischen.<br />
Was kann Razor-qt?<br />
Razor-qt besteht derzeit aus den<br />
Hauptmodulen Panel, Desktop,<br />
Programmstarter, Einstellungszentrum<br />
und Sitzungsverwaltung.<br />
Neu in der derzeit aktuellen<br />
Version 0.4.1 sind ein PolicyKit-<br />
Modul zur Rechteverwaltung, ein<br />
Powermanagement- sowie ein Auto-Suspend-Modul.<br />
Als Fenstermanager<br />
dient bei Siduction der<br />
von Razor-qt standardmäßig gestartete<br />
Openbox.<br />
Alternativ können Sie den Qt4-<br />
basierten Window-Manager Egg-<br />
WM [7] sowie Metacity oder Sawfish<br />
einsetzen. Theoretisch kooperiert<br />
der KDE-Window-Manager<br />
KWin mit Razor-qt, dessen<br />
Einsatz aber wegen der umfangreichen<br />
Abhängigkeiten zu den<br />
Kdelibs und Plasma jedoch nur<br />
wenig Sinn ergibt. Das könnte<br />
sich ändern, sobald KWin einmal<br />
auf Qt5 und KDE Frameworks 5<br />
aufbaut: Durch die weitere Aufsplittung<br />
von Funktionalitäten<br />
bei KDE SC 5 wäre es möglich, ein<br />
KWin ohne Kdelibs- und Plasma-<br />
Funktionalität zu bauen.<br />
Wer braucht Razor-qt?<br />
Razor-qt ist für alle interessant,<br />
die eine schnelle und ressourcenschonende<br />
Desktop-Umgebung<br />
bevorzugen und dabei gerne auf<br />
Qt setzen möchten. Mit einem<br />
info<br />
[1] Razor-qt: http:// razor‐qt. org<br />
[2] Siduction: http:// siduction. org<br />
[3] Live-CDs mit Razor-qt :<br />
http:// razor‐qt. org/ install/ live. php<br />
[4] Offizielle Qt-Apps-Seite: http:// qt‐apps. org<br />
[5] Browser QupZilla: http:// www. qupzilla. com<br />
[6] Silicon Empire: http:// getsilicon. org<br />
[7] EggWM: http:// code. google. com/ p/<br />
eggwm/ wiki/ Main? tm=6<br />
8 08 | 12<br />
www.linux-user.de
Siduction Razor-qt 12.1<br />
heft-dvd<br />
Footprint von nur 170 MByte eignet<br />
sich Razor-qt auch für ältere<br />
Geräte, die lediglich 256 MByte<br />
Hauptspeicher mitbringen. Von<br />
der Funktionalität und Stabilität<br />
her lässt es sich für die meisten<br />
Belange bereits problemlos einsetzen<br />
– Abstürze verzeichneten<br />
wir in den Tests nicht. So wurde<br />
dieser Artikel zu 100 Prozent mit<br />
dem Siduction-Release von Razorqt<br />
erstellt. Dazu kam zum Schreiben<br />
der Editor JuffEd zum Einsatz.<br />
Als Tool für die Zwischenablage<br />
diente Qlipper, die Bilder<br />
wurden mit Screengrab-qt erstellt.<br />
Alle Links testeten wir mit dem<br />
Browser QupZilla.<br />
Fazit<br />
Das vielversprechende junge Projekt<br />
Razor-qt findet bereits viel<br />
Anklang und Unterstützung im<br />
Linux-Umfeld, die Entwicklung<br />
geht stetig voran. Schaut man<br />
zwei Tage nicht ins Git-Repository,<br />
gibt es stets eine Menge neuer<br />
Code-Einträge („Commits“) nachzulesen.<br />
Es bleibt zu erwarten,<br />
dass Version 0.5 alle gängigen<br />
Module einer Desktop-Oberfläche<br />
liefern wird und Razor-qt<br />
weiter zu einem schnellen und<br />
stabilen Environment reift. Das<br />
Siduction-Projekt plant, Razor-qt<br />
mit dem nächsten Release in einigen<br />
Monaten in den Release-Zyklus<br />
zu übernehmen. (jlu) n<br />
C Mit Silicon brennen,<br />
während Qmmp den<br />
Soundtrack liefert.<br />
Kann eine<br />
Schulungseinrichtung<br />
für mehr als EINEN<br />
Themenbereich<br />
berühmt werden?<br />
Das Linuxhotel ist bekannt für erstklassige Open-Source-Schulungen. In den letzten Jahren kamen Java<br />
und andere Programmiersprachen hinzu - wie immer in Kooperation mit führenden Spezialisten, und in<br />
abgeschiedener, konzentrierter, aber auch ziemlich verspielter Umgebung. Es ist so naheliegend, auch<br />
Entwicklerthemen bei den OpenSource‘lern zu lernen, weil man dort schon immer sehr „unter die<br />
Haube“ guckte und mit viel Freude intensivst arbeitet. Das weiss ein Großteil der deutschen Admins, nur<br />
unter Entwicklern hat's sich noch nicht so ganz herumgesprochen.<br />
Mehr siehe www.linuxhotel.de
aktuelles<br />
Angetestet<br />
JJJII<br />
Seine intuitive Bedienbarkeit<br />
macht Converseen<br />
zum idealen Helfer<br />
für das Konvertieren und<br />
Bearbeiten zahlreicher<br />
Bilddaten in einem<br />
Rutsch.<br />
Große Bildergalerien im Handumdrehen konvertieren<br />
Um alle Bilder der eigenen Fotogalerie<br />
zu konvertieren oder neu<br />
zu skalieren, würden alte Linux-<br />
Hasen vermutlich ein Batch-<br />
Skript entwickeln – bequemer<br />
und nicht weniger effizient geht<br />
es mit Converseen. Der Entwickler<br />
des Qt4-basierten Image-Generators<br />
verspricht eine spürbare<br />
Zeitersparnis bei der Massenbearbeitung<br />
von Bildern, und das bei<br />
einfacher Bedienung. Tatsächlich<br />
lässt sich Converseen intuitiv<br />
handhaben. Sie fügen die zu bearbeitenden<br />
Bilder einfach per<br />
Drag & Drop der Konvertierungliste<br />
hinzu. Sobald Sie ein Bild<br />
in der Liste anklicken, erhalten Sie<br />
weitere Informationen wie Format,<br />
Datei- und Bildgröße. Auf<br />
Wunsch zeigt Converseen ein <strong>Vorschau</strong>bild.<br />
Sie haben die Möglichkeit,<br />
Format und Dateinamen anzupassen,<br />
Skalierung oder Auflösung<br />
zu ändern, ein <strong>Vorschau</strong>bild<br />
zu erzeugen oder ein alternatives<br />
Zielverzeichnis anzugeben. Enthält<br />
das Bild einen transparenten<br />
Hintergrund, bietet Converseen<br />
die Option, den Hintergrund mit<br />
einer Farbe Ihrer Wahl zu füllen.<br />
Wollen Sie die Änderungen bei<br />
mehreren Bildern vornehmen,<br />
müssen Sie diese vorher in der<br />
Konvertierungsliste mit einem Haken<br />
markieren. Da Converseen auf<br />
die Bibliotheken von Magick++ zurückgreift,<br />
unterstützt es rund 100<br />
verschiedene Grafikformate.<br />
Converseen 0.5<br />
Lizenz: GPLv3<br />
Quelle:<br />
http:// converseen. sourceforge. net/<br />
JJJJI<br />
Devede macht das Erstellen<br />
eigener Video-<br />
CDs oder ‐DVDs zum<br />
Kinderspiel. Das Tool<br />
leitet Sie schrittweise<br />
durch den Erstellungsprozess<br />
und bietet zahlreiche<br />
Einstellungsmöglichkeiten.<br />
Video-DVDs und VCDs unkompliziert selbst zusammenstellen<br />
Linux bietet zahlreiche nützliche<br />
Konsolenprogramme, um aus eigenen<br />
Filmen eine Video-DVD<br />
oder VCD zu erzeugen. Die grafische<br />
Oberfläche Devede macht<br />
sich einiger dieser Tools zunutze,<br />
um das Mastering zu erleichtern,<br />
darunter Dvdauthor, Vcdimager,<br />
Mplayer und Mencoder. So kann<br />
das Programm alle Bildformate<br />
verarbeiten, die Mencoder unterstützt.<br />
Es arbeitet nach dem Wizard-Prinzip<br />
und führt Sie daher<br />
schrittweise durch den Prozess<br />
der Medienerstellung.<br />
Am Anfang steht die Entscheidung<br />
für eines der Medienformate<br />
DVD, VCD, SVCD oder DivX. Anhand<br />
des gewählten Formats berechnet<br />
die Software die Mediengröße<br />
und stellt fest, ob der Platz<br />
auf dem Datenträger für die<br />
gewählten<br />
Videos ausreicht.<br />
Im<br />
nächsten<br />
Schritt legen<br />
Sie die inhaltliche<br />
Struktur<br />
fest. Zu diesem<br />
Zweck<br />
nehmen Sie<br />
Filme komfortabel<br />
mit<br />
Drag & Drop<br />
in die Dateiliste auf, wo Sie deren<br />
Abfolge beliebig variieren. Wählen<br />
Sie stattdessen den Weg über das<br />
Menü Hinzufügen, können Sie hier<br />
schon Einfluss auf das Video-Format<br />
nehmen, die Video-Datei aufteilen<br />
oder ein File mit Untertiteln<br />
hinzufügen. Alternativ besteht die<br />
Möglichkeit, über das Menü Eigenschaften<br />
diese Einstellungen später<br />
anzupassen. Haben Sie den Inhalt<br />
des Mediums zusammengestellt,<br />
leitet ein Klick auf den Vorwärts-<br />
Knopf die Erstellung des DVDrespektive<br />
CD-Images ein. Die<br />
Applikation erzeugt ein Bin/Cue-<br />
Paar, das Sie nur noch mit einem<br />
geeigneten Brennprogramm wie<br />
zum Beispiel K3B auf den Rohling<br />
bringen müssen.<br />
DeVeDe 3.22<br />
Lizenz:GPLv3<br />
Quelle: http:// www. rastersoft. com/<br />
programas/ devede. html<br />
10 08 | 12<br />
www.linux-user.de
Angetestet<br />
aktuelles<br />
Passwörter und Zugangsdaten einfach verwalten mit Revelation<br />
Die Authentifikation via Passwort<br />
oder PIN stellt heute auf vielen<br />
Systemen den Standard dar. Sicherheitsexperten<br />
empfehlen dabei,<br />
für jeden Zugang ein unterschiedliches<br />
Passwörter zu verwenden.<br />
Wer da nicht den Überblick<br />
verlieren möchte, braucht<br />
ein phänomenales Gedächtnis –<br />
oder ein Tool wie Revelation.<br />
Der Passwortmanager für<br />
Gnome besticht durch eine benutzerfreundliche<br />
Oberfläche, die<br />
sich am Standard der Gnome Human<br />
Interface Guidelines orientiert.<br />
Revelation bietet für jeden<br />
Zugangs typ ein passendes Formular,<br />
um die Zugangsdaten zu erfassen.<br />
Die Palette reicht dabei<br />
Revelation 0.4.13<br />
Lizenz:GPLv2<br />
Quelle:<br />
http:// revelation. olasagasti. info/<br />
vom SSH- oder FTP-Zugang über<br />
die Erfassung von Kreditkartendaten<br />
bis hin zur PIN des Mobiltelefons.<br />
Welche Daten Sie beim Anlegen<br />
eines Eintrags hinterlegen<br />
können, hängt vom Zugangstyp<br />
ab. In jedem Fall braucht der Eintrag<br />
einen Namen, unter dem Sie<br />
ihn später finden. Sämtliche Einträge<br />
verwaltet Revelation in einer<br />
Baumstruktur. Hierbei besteht<br />
die Möglichkeit, mehrere<br />
Einträge über sogenannte Ordner<br />
zu einer Gruppe zusammenzufassen.<br />
Revelation legt alle Einträge<br />
in einer passwortgeschützten,<br />
verschlüsselten Datei ab; Sie müssen<br />
sich nur noch das Revelation-<br />
Passwort merken.<br />
Obendrein besteht die Möglichkeit,<br />
Zugangsdaten für bestimmte<br />
Bereiche in unterschiedlichen Dateien<br />
zu verwalten. Zur Interaktion<br />
mit anderen Passwortmanagern<br />
besitzt Revelation eine Reihe<br />
von Import/Export-Funktionen.<br />
Es kann nicht nur mit XML, CSV<br />
oder Plaintext umgehen, sondern<br />
auch mit den Formaten von Password<br />
Safe, GPass oder Figaro’s<br />
Password Manager.<br />
Auf Wunsch generiert Revelation<br />
Passwort-Vorschläge, wobei<br />
es das erzeugte Passwort jedoch<br />
nicht anzeigt. Bei Bedarf ändern<br />
Sie das über die Konfiguration.<br />
JJJJJ<br />
Mit Revelation verwalten<br />
Sie all Ihre Passwörter,<br />
Zugangsdaten und sogar<br />
Mobilfunk- und Kreditkarten-PINs<br />
bequem<br />
und übersichtlich.<br />
Programme schnell und einfach starten mit Runner<br />
Hinter dem schlichten Namen führten Befehle oder Programme.<br />
Runner verbirgt sich ein Menü Sie starten nun entweder ein Tool<br />
zum Starten von Programmen. aus dieser Historie oder rufen<br />
Dabei ist Runner besonders für über das Eingabefeld ein neues<br />
jene Anwender interessant, die Programm auf, das Runner dann<br />
auf verschiedenen Benutzeroberflächen<br />
unterwegs sind: Das Tool grammstarter unterstützt im<br />
in seine Liste aufnimmt. Der Pro-<br />
benötigt lediglich eine X11-Umgebung<br />
und lässt sich komplett gewohnte Vervollständigung via<br />
Eingabefeld auch die aus der Shell<br />
per Tastatur bedienen. Nach dem Tabulatortaste.<br />
Start von Runner erscheint ein Nutzen Sie regelmäßig dieselben<br />
Tools, legen Sie am besten<br />
schlichtes Fenster mit einer Liste<br />
aller bereits mit Runner ausge-<br />
eine entsprechende Programmliste<br />
an. Dabei handelt es sich um<br />
Runner 0.2<br />
eine schlichte Textdatei, die für<br />
Lizenz:GPLv2<br />
jedes Programm ein Label und<br />
Quelle: http:// www. boomerangsworld. den Programmaufruf enthält.<br />
000_LU1106_F-<strong>Web</strong>er_neu1.qxd<br />
de/ cms/ tools/ runner<br />
18.09.2006 Runner 19:00 erwartet Uhr Seite diese 1Aufrufliste<br />
unter dem Namen program_list im<br />
Verzeichnis ~/.runner. Im selben<br />
Verzeichnis liegt die Datei history<br />
mit der Aufrufliste. Um Runners<br />
Historienliste zu leeren, genügt<br />
es, diese Datei zu löschen. (jlu) n<br />
JJJII<br />
Mit dem Programmstarter<br />
Runner legen Sie im<br />
Handumdrehen eine<br />
Lis te aller regelmäßig genutzten<br />
Programme an<br />
und starten bei Bedarf<br />
auch andere Programme<br />
über ein Eingabefeld.<br />
X23
Aktuelles<br />
Neues rund um Linux<br />
Das Bugfix-Release Owncloud<br />
4.0.4 behebt etliche Fehler und<br />
bringt zahlreiche Neuerungen<br />
mit. (Bild: Frank Karlitschek)<br />
Owncloud 4.0.4 mit zahlreichen Bugfixes und Versionierung<br />
Mit Owncloud 4.0.4 liegt jetzt<br />
eine umfassend fehlerbereinigte<br />
Version der vierten Inkarnation<br />
der freien Server-<br />
Software vor (http:// owncloud.<br />
or g ). Die Entwickler betrachteten<br />
das Release als stabil genug,<br />
um es auch in der Business-Variante<br />
zu veröffentlichen.<br />
Damit dürfen auch viele<br />
der Schwachstellen ausgeräumt<br />
sein, die unser ausführlicher<br />
Test in der letzten Ausgabe<br />
(http:// www. linux‐community.<br />
de/ 25950) zutage förderte.<br />
Wie Owncloud-Entwickler<br />
Frank Karlitschek mit einem<br />
Augenzwinkern in seinem Blog<br />
(http:// blog. karlitschek. de)<br />
kommentierte, sei Owncloud<br />
4.0 wohl der KDE-Tradition gefolgt<br />
und wie KDE 4.0 nicht<br />
eben das Release mit dem<br />
gründlichsten Feinschliff gewesen.<br />
Owncloud 4.0.4 bietet<br />
eine verbesserte LDAP-Integration,<br />
eine umfassende Versionskontrolle<br />
samt der Möglichkeit<br />
zu Rollbacks sowie<br />
Theming zur optischen Anpassung<br />
an die eigenen Wünsche.<br />
Ein neues API soll es Entwicklern<br />
ermöglichen, eigene Anwendungen<br />
zu Owncloud zu<br />
programmieren. Parallel zu<br />
Owncloud 4.0.4 beginnt auch<br />
der Betatest für Version 1.1<br />
einer App für Android-Systeme.<br />
(uba/jlu)<br />
kurz notiert<br />
Statt am 11. Juli soll OpenSuse<br />
12.2 jetzt erst Mitte September<br />
2012 erscheinen: Noch gibt es zu<br />
viele kaputte Pakete. Man müsse<br />
den Release-Prozess überdenken<br />
und eventuell nur noch einmal<br />
jährlich veröffentlichen,<br />
meint Release-Manager Stephan<br />
Kulow (http:// tinyurl. com/<br />
lu0812‐opensuse).<br />
Die Linux Foundation (http://<br />
www. linuxfoundation. org) bekommt<br />
mit Samsung Electronics<br />
ein siebtes sogenanntes Platinum-Mitglied.<br />
Diese Sponsoren<br />
zahlen einen jährlichen Beitrag<br />
von je 500 000 US-Dollar und bekommen<br />
einen Sitz im Board of<br />
Directors der Stiftung.<br />
Rund 100 neue Netzwerkprotokolle<br />
beherrscht Wireshark 1.8.0<br />
und kann daneben erstmals den<br />
Netzwerkverkehr mehrerer<br />
Schnittstellen gleichzeitig aufzeichnen<br />
(http:// www. wireshark.<br />
o rg). Als Speicherformat dient<br />
nun Pcap-ng, die ältere Pcap-<br />
Notation unterstützt die neue<br />
Version aber weiter.<br />
Anfang Juli haben die Entwickler<br />
für Debian 7.0 „Wheezy“ planmäßig<br />
den Freeze eingeleitet<br />
(http:// tinyurl. com/ lu0812‐<br />
wheezy). Damit fließen ab sofort<br />
nur noch Release-relevante Änderungen<br />
wie etwa wichtige<br />
Bugfixes in die Software ein.<br />
Linux-Essentials-Programm startet durch<br />
Das Linux Professional Institut<br />
hat den offiziellen Startschuss<br />
für das Linux-Essentials-Programm<br />
(http:// tinyurl. com/<br />
lu0812‐lpi) gegeben, das sich<br />
an Neueinsteiger und Jugendliche<br />
richtet. Die Prüfung ist ab<br />
Killerdrohne mit Linux-Steuerung: MQ-8B<br />
der US-Navy. (Bild: Northrop Grumman)<br />
sofort auf diversen Events im<br />
Angebot, etwa bei der Campus-<br />
Party Berlin am 21. August und<br />
bei der FrOSCon in St. Augustin<br />
am 25. August. Das Essentials-Programm<br />
enthält unter<br />
anderem Themengebiete wie<br />
US-Navy steuert Kampfdrohnen künftig mit Linux<br />
Für knapp 28 Millionen Dollar<br />
rüstet die US-Marine die Kontrollsoftware<br />
für die nächste<br />
Generation ihrer schiffsgestützten<br />
Drohnen von Windows<br />
auf Linux um (http://<br />
tinyurl. com/ lu0812‐register).<br />
Dem Vernehmen nach hängt<br />
diese Umstellung nicht zuletzt<br />
mit den Schwierigkeiten durch<br />
Schadsoftware zusammen,<br />
welche die<br />
US-Luftwaffe bei den<br />
Steuerungssystemen<br />
ihrer Drohnenflotte<br />
hatte (http:// tinyurl.<br />
com/ lu0812‐wired).<br />
So manchem Linux-<br />
Protagonisten stößt<br />
diese Maßnahme<br />
sauer auf: Im Gegensatz<br />
zum rein für Aufklärungszwecke<br />
ausgelegten<br />
Vorgänger<br />
Northrop-Grumman<br />
RQ-8A handelt es<br />
sich bei den künftig<br />
via Linux gesteuerten<br />
168 MQ-8B-UAVs um<br />
Linux-Community und berufliche<br />
Laufbahn im Bereich<br />
Open Source, gängige Betriebssysteme<br />
und wichtige Open-<br />
Source-Anwendungen, Lizenzen<br />
oder Grundlagen der Linux-Kommandozeile.<br />
(uba)<br />
eine bewaffnete Version, die<br />
an zwei Stummelflügeln lasergelenkte<br />
Waffen wie die Panzerabwehrrakete<br />
AGM-114<br />
Hellfire, die Gleitbombe<br />
GBU-44/B Viper Strike oder<br />
das „Advanced Precision Kill<br />
Weapon System“ APKWS auf<br />
Basis von 70-mm-FFAR-Raketen<br />
mitführen kann (http://<br />
tinyurl. com/ lu0812‐firescout).<br />
Dass Linux jetzt zum ferngesteuerten<br />
Töten von Menschen<br />
dienen soll, treibt viele<br />
auf die verbalen Barrikaden.<br />
Wie allerdings zahlreiche<br />
Kommentatoren anmerkten,<br />
gibt die GPL keine Handhabe<br />
gegen solche Verwendungen<br />
freier Software her: Schon die<br />
„Freiheit Null“ schreibt vor,<br />
dass ein Anwender freie Software<br />
für beliebige Zwecke ausführen<br />
können muss. (jlu)<br />
12<br />
08 | 12<br />
Das Neueste rund um Linux, aktuelle Kurztests und Artikel aus<br />
<strong>LinuxUser</strong> finden Sie täglich auf www.linux-community.de
Neues rund um Linux<br />
aktuelles<br />
Pfiffiger Mini-Rechner mit vorinstalliertem Linux Mint<br />
Als „Mintbox“ vertreibt der<br />
Hersteller Compulab ab sofort<br />
eine Version seines bekannten<br />
Fit-PC 3 mit vorinstalliertem<br />
Linux Mint 13, einer auf<br />
Ubuntu 12.04 basierenden LTS-<br />
Version mit fünf Jahren Support<br />
und Cinnamon-Desktop<br />
(http:// tinyurl. com/ lu0812‐<br />
mintbox). Die zwei erhältlichen<br />
Varianten Mintbox Basic und<br />
Mintbox Pro unterscheiden sich<br />
zum einen durch die Ausführung<br />
des Metallgehäuses: Die<br />
Pro-Ausführung steckt in einem<br />
zur Wärmeableitung gerippten<br />
Gehäuse statt in einem<br />
glatten Case wie die Basic. Zum<br />
anderen bringt die Pro-Version<br />
ein deutlich stärkeres CPU/<br />
GPU-SoC (AMD G-T56N, 18W<br />
vs. G-T40N, 9W) und 8 statt<br />
4 GByte RAM mit. Beide Varianten<br />
verfügen über eine<br />
250-GByte-Festplatte, Gigabit-<br />
Ethernet, 802.11b/g/n-WLAN<br />
sowie je zwei USB3- und USB2-<br />
Ports. Die weiteren Anschlüsse<br />
umfassen je zwei Mini-PCIeund<br />
eSATA-Buchsen sowie einen<br />
mSATA- und einen seriellen<br />
Port. Zur Grafikausgabe<br />
gibt es zwei HDMI-Ausgänge<br />
und einen Displayport, für Audio<br />
sorgen Digital-7.1-S/PDIF<br />
und Analog-2.0-Audio. Die<br />
Mintbox mit einer Standfläche<br />
etwa in der Größe eines CD-<br />
Cases verzichtet auf einen Lüfter.<br />
Laut Mint-Chef Clement<br />
Lefebvre beherrschen beide<br />
Mintbox-Varianten die ruckelfreie<br />
Wiedergabe von<br />
Videos bis 1080p (http://<br />
blog. linuxmint. com/ ? p=<br />
2055). Die Mintbox Basic kostet<br />
476 US-Dollar, die Pro-Version<br />
549 Dollar. Hinzu kommen<br />
für deutsche Kunden 55 Dollar<br />
Versandgebühren sowie Mehrwertsteuer<br />
und Zoll. (jlu)<br />
Anschlusswunder mit Mint 13:<br />
die Mintbox von Compulab.<br />
(Bild: Linuxmint.com)<br />
Grub2 erreicht endlich Final-Status<br />
Mit einem neuen Menü-Theme, Treiberupdates<br />
und vielen Verbesserungen hat<br />
sich der Grand Unified Bootloader 2 aus der<br />
Beta-Phase verabschiedet und gilt nun als<br />
final. Laut Entwickler Wladimir Serbinenko<br />
(http:// tinyurl. com/ lu0812‐grub2) feiert in<br />
der Final-Version nicht nur das offizielle<br />
Gfxmenu-Theme „Starfield“ Premiere, sondern<br />
auch Grub2-Ports für Itanium- und<br />
SGI-Mips-Systeme. Zu den weiteren Neuerungen<br />
zählen diverse Treiber-Updates und<br />
Neuaufnahmen, etwa für EHCI. (uba)<br />
Remotebox 1.3 hält Verbindung<br />
Remotebox, eine Verwaltungsoberfläche<br />
für Virtualbox auf<br />
dem lokalen und auf entfernten<br />
Rechnern, liegt jetzt in Version<br />
1.3 vor. Das in Perl und<br />
GTK umgesetzte Remotebox<br />
(http:// remotebox. knobgoblin.<br />
or g. uk) verwaltet lokale oder<br />
entfernte Virtualbox-Instanzen.<br />
Dabei erfolgt die Verbindung<br />
mit der Anzeige des Gastsystems<br />
via RDP. Die Anwendung<br />
kann Gäste erstellen,<br />
konfigurieren, starten, stoppen<br />
Die GUI Remotebox erlaubt unter anderem das<br />
Verwalten von Virtualbox-Instanzen aus der Ferne.<br />
und pausieren. Das neue<br />
Release verwendet einen<br />
Heartbeat, der für das Weiterbestehen<br />
der Netzwerkverbindungen<br />
sorgt. Daneben<br />
gibt es weitere Verbesserungen<br />
beim Connection<br />
Handling. USB-Geräte lassen<br />
sich jetzt während des<br />
Betriebes an den Gast anschließen<br />
oder entfernen.<br />
Außerdem verbesserten die<br />
Entwickler die Reaktionsfreudigkeit<br />
der Oberfläche.<br />
Weitere Neuerungen<br />
finden<br />
sich in<br />
der Ankündigung<br />
des Projektes.<br />
R e mo te b ox<br />
1.3 steht unter<br />
der GPL<br />
als Quelltext-<br />
Tar ball zum<br />
Download<br />
bereit.<br />
(mhu/jlu) n<br />
Linux<br />
Das umfassende Handbuch<br />
openbook<br />
online!<br />
1.282 S., 5. Auflage, mit 2 DVDs, 49,90 €<br />
» www.GalileoComputing.de/2963<br />
LPIC-1<br />
Erfolgreiche Linux-Zertifizierung<br />
545 S., 3. Auflage 2012, mit DVD, 34,90 €<br />
» www.GalileoComputing.de/2653<br />
Für Linux-User<br />
Android-Apps entwickeln<br />
398 S., 2. Auflage, mit DVD, 24,90 €<br />
» www.GalileoComputing.de/3158<br />
www.GalileoComputing.de<br />
Linux-Server<br />
1.100 S., 2. Auflage, 49,90 €<br />
» www.GalileoComputing.de/3051<br />
Wissen, wie’s geht.
eport<br />
Interview: Mandriva<br />
Im Gespräch mit Jean-Manuel Croset, CEO von Mandriva SA,<br />
Auf neuem Kurs<br />
Das mehrfach beinahe havarierte<br />
Schiff Mandriva SA hat einen neuen<br />
Kapitän. <strong>LinuxUser</strong> sprach mit dem neuen CEO<br />
Jean-Manuel Croset über dessen aktuelle Pläne und<br />
die Aussichten für das Unternehmen. Wolfgang Bornath<br />
© James Steidl, 123RF<br />
README<br />
Nach einer weiteren<br />
Beinahe-Pleite im Zuge<br />
einer fast zehnjährigen<br />
Serie von Krisen präsentiert<br />
sich Mandriva<br />
derzeit wieder einmal finanziell<br />
stabilisiert und<br />
peilt eine Erneuerung<br />
des Unternehmens an.<br />
Der neue CEO Jean-Manuel<br />
Croset sprach mit<br />
<strong>LinuxUser</strong> über seine<br />
Pläne für die Zukunft<br />
des Unternehmens.<br />
Mandriva SA, der französische<br />
Herausgeber der Distribution<br />
Mandriva Linux, hat ein sehr unruhiges<br />
Jahrzehnt hinter sich.<br />
Anfänglich unter dem Namen<br />
Mandrakesoft als erfolgreicher<br />
Distributor hochgelobt und von<br />
den Investoren der Dotcom-Ära<br />
begehrt, geriet das Unternehmen<br />
im Rahmen des bald folgenden<br />
Dotcom-Strudels in so ernsthafte<br />
Schwierigkeiten, dass 2003 nur<br />
noch die Inanspruchnahme des<br />
Gläubigerschutzes Mandrakesoft<br />
vor der Insolvenz rettete.<br />
In der Folgezeit konnte sich der<br />
ab 2005 als Mandriva SA firmierende<br />
Distributor wieder aus dem<br />
Tief hervorkämpfen, litt aber immer<br />
wieder unter Finanznöten<br />
und wurde 2010 erneut nur durch<br />
das Auftauchen des Finanzinvestors<br />
Townarea Ltd. vor dem Aus<br />
bewahrt. Im Rahmen dieser Rettungsaktion<br />
musste sich Mandriva<br />
SA von seinem Geschäftsteil<br />
EdgeIT trennen, in dem die meisten<br />
Entwickler der Distribution<br />
Mandriva Linux beschäftigt waren.<br />
Das hatte unter anderem zur<br />
Folge, dass der Fork Mageia entstand,<br />
über dessen jüngstes Release<br />
wir kürzlich berichteten [1].<br />
2012 stand Mandriva SA wieder<br />
vor der Insolvenz, da einer der Investoren<br />
sich gegen eine dringend<br />
benötigte Kapitalerhöhung sperrte.<br />
In dieser Situation machte der<br />
damalige COO der Firma, Jean-<br />
Manuel Croset, durch die Übernahme<br />
der Aktien des Investors den<br />
Weg für die benötigte Kapitalerhöhung<br />
frei. Im Unterschied zu anderen<br />
Investoren übernahm er gleichzeitig<br />
als CEO das Steuer des Unternehmens<br />
und plant Mandriva<br />
SA durch einige Maßnahmen in ein<br />
ruhigeres Fahrwasser zu führen.<br />
<strong>LinuxUser</strong> freut sich, dass Jean-<br />
Manuel Croset sich als erstes Mitglied<br />
eines Mandriva-Managements<br />
einem deutschen Fachmagazin<br />
für ein Interview zur Verfügung<br />
stellte.<br />
<strong>LinuxUser</strong>: Zunächst danken wir<br />
Ihnen, dass Sie sich bei all Ihren<br />
Verpflichtungen die Zeit für ein<br />
ausführliches Interview nehmen.<br />
In der „Szene“ weiß man bisher –<br />
außer Ihren Schweizer Wurzeln –<br />
wenig über die Person Jean-Manuel<br />
Croset. Wären Sie so freundlich,<br />
uns etwas über Ihren Hintergrund<br />
zu erzählen?<br />
Jean-Manuel Croset: Vielleicht<br />
liegt es gerade an meinen Schweizer<br />
Wurzeln, dass ich die produktive<br />
Arbeit ausführlichen Statements<br />
und sensationellen Meldungen<br />
vorziehe.<br />
Ich habe nach dem Abschluss<br />
der Höheren Handelsschule mit<br />
anschließender technischer Weiterbildung<br />
meine Karriere in verschiedenen<br />
Großunternehmen in<br />
der Schweiz und im näheren Ausland<br />
begonnen. Nach einer Weltreise<br />
verbrachte ich zehn Jahre in<br />
leitenden Positionen bei verschiedenen<br />
Projekten des Schweizer<br />
Bundesheeres (Einführung, Verkauf<br />
und Ausbildung von Telematik<br />
und IT-Systemen). 2010 gründete<br />
ich ein IT-Unternehmen in<br />
der Schweiz, das in den Bereichen<br />
Netzwerk, Hosting und Services<br />
sowie Consulting aktiv ist. In diesem<br />
Rahmen wurde ich beauftragt,<br />
bei der Umstrukturierung<br />
von Mandriva SA mitzuarbeiten.<br />
14 08 | 12<br />
www.linux-user.de
Interview: Mandriva<br />
report<br />
LU: Wie wurden Sie auf Mandriva<br />
aufmerksam, und was bewog Sie<br />
letztendlich dazu, sich in diesem<br />
umfassenden Ausmaß mit dem<br />
Unternehmen zu verbinden?<br />
JMC: Ich habe im Oktober 2011<br />
im Rahmen eines Consulting-<br />
Auftrags als COO bei Mandriva<br />
SA begonnen. Dabei wurde mir<br />
schnell klar, dass einerseits viel<br />
Arbeit nötig sein würde, um das<br />
Unternehmen in den Fokus des<br />
Marktes zurückzubringen, dass<br />
sich aber mit dem vorhandenen<br />
riesigen Potenzial des Unternehmens<br />
viel erreichen ließe. Überzeugt<br />
durch die im Unternehmen<br />
vorhandenen Fähigkeiten, habe<br />
ich mich auch im Rahmen der Kapitalerhöhung<br />
zur persönlichen<br />
Beteiligung durchgerungen.<br />
„Zehn neue Stellen<br />
innnerhalb der nächsten<br />
sechs Monate.”<br />
LU: Derzeit scheint die Lage<br />
durch Ihren Einstieg und die aktuelle<br />
Kapitalspritze stabilisiert –<br />
zumindest fürs Erste. Natürlich<br />
fragen sich Beobachter: Ist die finanzielle<br />
Lage nachhaltig stabilisiert?<br />
Wie lange reicht das frische<br />
Geld? Muss man nicht davon ausgehen,<br />
dass spätestens in zwei<br />
Jahren Mandriva wieder wackelt?<br />
JMC: Die finanzielle Lage des Unternehmens<br />
ist sehr stabil. Wir<br />
haben jetzt die Mittel zur geplanten<br />
Restrukturierung sowie für<br />
das Einführen und Unterstützen<br />
der Produkte und Dienstleistungen,<br />
welche die Zukunft der Firma<br />
innerhalb der nächsten zwei<br />
Jahre sichern sollen. Zudem bezahlen<br />
wir die langjährigen Schulden<br />
in ein paar Monaten vollständig<br />
zurück, was in der Geschichte<br />
der Firma ein Novum darstellt.<br />
Mandriva SA wird in zwei Jahren<br />
noch auf dem Markt und sogar<br />
sehr erfolgreich sein, wenn es<br />
uns gelingt, innovative und konkurrenzfähige<br />
Dienste und Produkte<br />
erfolgreich zu vermarkten.<br />
Dies setzt ein Umdenken voraus,<br />
das zurzeit auch stattfindet.<br />
LU: Als Kapital eines Unternehmens<br />
gilt ja nicht nur das Bare,<br />
sondern insbesondere auch das<br />
sogenannte Humankapital, also<br />
die Innovationskraft und das<br />
Können der Mitarbeiter. Wie viel<br />
Personal beschäftigt Mandriva SA<br />
momentan, und bei wie vielen der<br />
Mitarbeiter handelt es sich um<br />
Entwickler? Erlaubt die finanzielle<br />
Erholung Neueinstellungen,<br />
und falls ja: Wie viele Entwickler<br />
planen Sie einzustellen?<br />
JMC: Mandriva SA beschäftigt<br />
heute rund 40 Mitarbeiter an<br />
sechs Standorten, 80 Prozent<br />
davon sind in der Entwicklung<br />
tätig. Gleichzeitig investieren<br />
wir durch unsere Tätigkeit in<br />
Forschungsprojekten in beträchtlichem<br />
Ausmaß in die Zukunft<br />
des Unternehmens. Wir<br />
werden innerhalb der nächsten<br />
sechs Monate rund zehn Mitarbeiter<br />
einstellen.<br />
LU: In der Vergangenheit musste<br />
Mandriva immer wieder empfindliche<br />
Rückschläge bei seinen Geschäften<br />
hinnehmen, wie etwa<br />
die spektakuläre Entscheidung<br />
der französischen Gendarmerie<br />
Nationale zugunsten von Ubuntu<br />
statt des heimischen Mandrivas<br />
auf ihren 80 000 Desktops. Auch<br />
in anderen ins Auge gefassten<br />
Märkten (beispielsweise Südamerika)<br />
hatten konkurrierende Unternehmen<br />
die größeren Erfolge.<br />
Welche Märkte will Mandriva in<br />
Zukunft mit welchen Produkten<br />
adressieren? Spielt Europa<br />
dabei noch eine<br />
wesentliche Rolle?<br />
JMC: Europa spielt in<br />
unseren Zukunftsplänen<br />
eine wichtige Rolle. Wir<br />
betrachten diesen Markt<br />
als sehr reif und anspruchsvoll;<br />
gerade hier<br />
müssen wir durch konsequente<br />
Verbesserung<br />
des Angebots und bessere<br />
Qualität der Produkte<br />
überzeugen. In Brasilien<br />
sind wir stark aufgestellt<br />
und möchten diesen<br />
Markt sowie andere zukunftsträchtige<br />
Märkte künftig<br />
konsequent und systematisch<br />
adressieren.<br />
Für uns zählt aber die Übereinstimmung<br />
unserer Produkte mit<br />
den Marktbedürfnissen (jetzige<br />
und künftige) mehr als ein rein<br />
geografischer Ansatz. Wir konzentrieren<br />
uns künftig auf Unternehmen,<br />
mit Produkten und<br />
Dienstleistungen für Server und<br />
IT-Management – auch in der<br />
Cloud. Zudem wird der Bildungsbereich<br />
nach wie vor eine wichtige<br />
Rolle für uns spielen.<br />
LU: Wie will sich Mandriva dabei<br />
gegen die dominante Konkurrenz<br />
durchsetzen? Warum sollte ein<br />
Kunde Mandriva statt Red Hat<br />
oder Canonical wählen? Und wie<br />
wollen Sie angesichts der in der<br />
Vergangenheit periodisch immer<br />
wieder bei Mandriva auftretenden<br />
Finanzkrisen neues Vertrauen<br />
bei den Kunden im Unternehmensmarkt<br />
wecken?<br />
JMC: Primär sollten sich die Kunden<br />
aufgrund der Qualität sowie<br />
entscheidender Vorteile für unsere<br />
Produkte entscheiden. Die klar<br />
identifizierte Herkunft unserer<br />
Lösungen und Produkte wird uns<br />
zusammen mit unserer Innovationsfähigkeit<br />
dabei helfen, das<br />
Vertrauen der Kunden zurückzuerobern.<br />
Dazu soll außerdem die<br />
klar definierte Strategie und die<br />
daraus entstehende Stabilität im<br />
Unternehmen mittel- und langfristig<br />
beitragen.<br />
Glossar<br />
COO: Chief Operations<br />
Officer. Ein Manager,<br />
der das operative Geschäft<br />
eines Unternehmens<br />
leitet, aber nicht<br />
dessen strategische<br />
Planung.<br />
CEO: Chief Executive<br />
Officer. Das geschäftsführende<br />
Vorstandsmitglied<br />
beziehungsweise<br />
der Vorstandsvorsitzende<br />
oder Generaldirektor<br />
eines Unternehmens.<br />
Jean-Manuel Croset<br />
tritt als CEO an, um<br />
Mandriva SA wieder in<br />
ein ruhigeres Fahrwasser<br />
zu bringen.<br />
www.linux-user.de<br />
08 | 12 15
eport<br />
Interview: Mandriva<br />
LU: Das Mandriva-Kernprodukt<br />
„Server“ soll ja künftig auf Mageia-Code<br />
basieren. Will Mandriva<br />
dazu den Mandriva-Fork Mageia<br />
zurückforken? Oder setzt<br />
das Unternehmen eher auf eine<br />
konstruktive Zusammenarbeit<br />
mit der Mageia-Community?<br />
Falls ja, will sich Mandriva an den<br />
Mageia-Gremien beteiligen, und<br />
wie? Und planen Sie ein Sponsoring<br />
für Mageia?<br />
„Wir setzen konsequent<br />
auf Zusammenarbeit.”<br />
JMC: Wir setzen konsequent auf<br />
Zusammenarbeit und eine harmonische<br />
Entwicklung der Partner.<br />
Es ist keineswegs geplant, irgendwelche<br />
Produkte zu „forken“,<br />
und wir unterhalten sehr gute Beziehungen<br />
zu sämtlichen Partnern.<br />
Für uns zählen Offenheit,<br />
Klarheit und als Konsequenz Vertrauen<br />
zu den Grundwerten des<br />
Unternehmens.<br />
Wir möchten bei Partnern oder<br />
Communities keine leitenden<br />
Positionen übernehmen, leisten<br />
aber gerne Unterstützung im jeweils<br />
gewünschten Rahmen. Dies<br />
wird primär auf technischem Gebiet<br />
durch entsprechende Beiträge<br />
geschehen, könnte aber auch<br />
in beiderseitigem Einvernehmen<br />
mit anderen Mitteln erfolgen.<br />
Mandriva SA beabsichtigt nicht,<br />
sich – gleich in welcher Weise –<br />
aufzudrängen, sondern zielt darauf<br />
ab, sich stets vorab mit den<br />
Partnern zu einigen.<br />
Ich möchte hier hervorheben,<br />
dass zwar Mageia als Basis für<br />
Server-Produkte ausgewählt wurde,<br />
dass aber für den Desktop-<br />
Einsatz weiter Mandriva Linux<br />
als Grundlage dienen soll.<br />
LU: Apropos Desktop: Sie haben<br />
ja dieser Tage in einem Eintrag<br />
auf dem Firmenblog die Rückkehr<br />
Mandrivas zu einer Communitygetriebenen<br />
Entwicklung propagiert.<br />
Wie viel Community (in Ziffern)<br />
hat Mandriva denn überhaupt<br />
noch, nachdem ein Großteil<br />
der Entwickler und Anwender<br />
zu Mageia abgewandert ist? Wie<br />
wichtig ist für Sie eine eigene<br />
Community, die das Unternehmen<br />
unterstützt, wobei zur<br />
„Community“ ja sowohl freiwillige<br />
Kontributoren gehören, als<br />
auch eine Benutzerbasis der<br />
Enduser-Distribution Mandriva<br />
Linux? Und welchen Sinn sehen<br />
Sie darin, künstlich eine zweite<br />
Community parallel zur lebendigen<br />
und hochproduktiven Mageia-Gemeinschaft<br />
zu implementieren,<br />
die bereits zwei Releases<br />
vorgelegt hat?<br />
JMC: Es liegt in der Natur der<br />
Sache, dass sich eine Community<br />
schwer zahlenmäßig abschätzen<br />
lässt. Ich kann Ihnen aber versichern,<br />
dass die Mandriva-Linux-<br />
Community existiert und dass<br />
eine große Anzahl von Kontributoren<br />
und Benutzern bereit sind,<br />
wieder in die aktive Arbeit an der<br />
Distribution einzusteigen. Mandriva<br />
SA wünscht, dass sich die<br />
Community dem Projekt widmet,<br />
nicht das Unternehmen.<br />
In diesem Sinn haben wir eine<br />
initiale Auswahl von Protagonisten<br />
der Entwickler- und Benutzer-Gemeinschaft<br />
dazu eingeladen,<br />
in einem Kick-Off-Meeting<br />
die Rahmenbedingungen, Strukturen<br />
und Lenkungsaspekte der<br />
künftigen Mandriva-Linux-Organisation<br />
gemeinsam zu definieren.<br />
Als Basisbegriffe für diese<br />
Organisation wünschen wir uns<br />
die Begriffe „unabhängig“, „transparent“<br />
und „meritokratisch“.<br />
Ich genieße dabei den persönlichen<br />
Vorteil, frei von irgendwelchen<br />
Vorurteilen aufgrund alter<br />
Streitigkeiten zu sein, und so<br />
wünsche ich mir für die Zukunft,<br />
dass sich Mandriva Linux frei, eigenständig<br />
und offen für jedwede<br />
Zusammenarbeit entwickelt.<br />
LU: Wie viel Einfluss will Mandriva<br />
in der Community ausüben,<br />
und wie? Behalten Sie sich da<br />
eine Richtlinienkompetenz, ein<br />
Veto-Recht oder Ähnliches in den<br />
Gremien vor? Was bekommt die<br />
Community von Mandriva, was<br />
sie von Mageia nicht haben kann?<br />
JMC: Mandriva SA möchte keine<br />
besonderen Rechte in der Community<br />
ausüben. Wir wollen die<br />
Eigenständigkeit und Freiheit<br />
von Mandriva Linux sichern und<br />
keine Richtlinien oder Gesetze<br />
vorschreiben. Diese Funktion sehen<br />
wir als Aufgabe der Community<br />
selbst. Es ist zurzeit schwierig<br />
zu beurteilen, welche Vorteile<br />
Mandriva Linux als Community-<br />
Projekt gegenüber gleichartigen<br />
Projekten anderer Communities<br />
bieten kann, da sich das Projekt<br />
erst in der Entstehung befindet.<br />
Wir als Unternehmen sehen aber<br />
keinerlei Hindernisse, in verschiedenen<br />
Projekten tätig zu<br />
sein und darzu beizutragen.<br />
„Nächstes Jahr ausgereifte,<br />
innovative Unternehmensprodukte”<br />
LU: Wo sehen Sie das Unternehmen<br />
nächstes Jahr um diese Zeit?<br />
Wo in fünf Jahren?<br />
JMC: Ich sehe das Unternehmen<br />
nächstes Jahr erfolgreich mit ausgereiften<br />
und gleichzeitig innovativen<br />
Unternehmensprodukten<br />
und in mittelfristiger Zukunft als<br />
führender europäischer Anbieter<br />
alternativer und solider Lösungen<br />
sowie als Referenz für die erfolgreiche<br />
Industrialisierung innovativer<br />
Forschungsprojekte. Ganz<br />
sicher werden wir dem Cloud-Bereich<br />
einen großen Teil unserer<br />
Aktivität widmen.<br />
LU: Herr Croset, wir danken Ihnen<br />
für den Dialog und wünschen<br />
Ihnen und Mandriva viel Erfolg.<br />
Das Interview führte Wolfgang<br />
„wobo“ Bornath im Umfeld der jährlich<br />
stattfindenden Open-Source-<br />
Messe Solutions Linux [2] in Paris.<br />
Wolfgang Bornath ist ein langjähriges<br />
Mitglied der Mandriva-Community<br />
und seit Anfang an im Mageia-<br />
Projekt aktiv. (jlu) n<br />
info<br />
1] Mageia 2: Wolfgang Bornath, „Langsamer<br />
Steigflug“, LU 07/2012, S. 12,<br />
http:// www. linux‐community. de/ 25935<br />
[2] Solutions Linux: http:// solutionslinux. fr<br />
16 08 | 12<br />
www.linux-user.de
1&1 WEBHOSTING<br />
BESSER HOSTEN!<br />
Kein anderer <strong>Web</strong>hoster<br />
überzeugt durch so viel<br />
Kompetenz, Know-how<br />
und Qualität wie 1&1.<br />
✓<br />
Maximal sicher:<br />
Paralleles Hosting Ihrer<br />
<strong>Web</strong>site in zwei Hightech-<br />
Rechenzentren an verschiedenen<br />
Orten!<br />
✓ Superschnell:<br />
275 GBit/s Anbindung!<br />
✓<br />
Umweltschonend:<br />
Grüner Strom!<br />
✓ Zukunftssicher:<br />
1.300 eigene Entwickler!<br />
Ausgabe 05/12<br />
Ausgabe 07/12<br />
Komplett-Paket für professionelle <strong>Web</strong>sites:<br />
■ 4 Domains inklusive (Auswahl aus .de, .com, .net, .org,<br />
.biz, .info, .name, .eu, .at)<br />
■ 4 GB <strong>Web</strong>space<br />
■ UNLIMITEDTraf fi c<br />
■ 5 FTP-Accounts<br />
■ 5 MySQL Datenbanken (je 1 GB)<br />
■ 1&1 <strong>Web</strong>analytics<br />
■ UNLIMITED Click & Build Apps (Auswahl aus 65 Anwendungen,<br />
z. B. Joomla!, WordPress, eCommerce, CMS)<br />
■ PHP5, Zend Framework, Perl, Python, Ruby, SSI<br />
■ NUR BEI 1&1: GEO-REDUNDANZ!<br />
Maximale Verfügbarkeit durch paralleles Hosting<br />
in zwei örtlich getrennten Hightech-Rechenzentren<br />
■ u. v. m.<br />
1&1 DUAL BASIC<br />
1 JAHR FÜR<br />
6, 99<br />
€/Monat*<br />
danach<br />
6,99 €/Monat*<br />
0,–€/Monat,<br />
DOMAINS OHNE EINRICHTUNGSGEBÜHR:<br />
€/Monat<br />
€/Monat<br />
29<br />
(im 1. Jahr)<br />
69<br />
.de 0, 0, 49 €<br />
.com/.net/.org 0, * (im 1. Jahr) 1, *<br />
1, 49 €<br />
0 26 02 / 96 91<br />
0800 / 100 668 www.1und1.info<br />
* 1&1 Dual Basic im 1. Jahr 0,– €/Monat, danach 6,99 €/Monat. .de Domain im 1. Jahr 0,29 €/Monat, danach 0,49 €/Monat, .com, .net, .org im 1. Jahr 0,69 €/Monat, danach 1,49 €/Monat.<br />
Einmalige Einrichtungsgebühr 9,60 € (entfällt bei Domains). 24 Monate Mindestvertragslaufzeit (12 Monate bei Domains). Preise inkl. MwSt.
eport<br />
Linux & Mobile<br />
© Lawren, 123rf.com<br />
Mobile Systeme im Wandel der Zeit<br />
Generationenvertrag<br />
Als vor über 20 Jahren die ersten Mobilgeräte das Licht der Welt erblickten, wurden sie oft nur milde belächelt.<br />
Heute zählen sie zum unentbehrlichen Zubehör des täglichen Lebens – oft mit Linux als Motor. Andrzej Wiencek<br />
README<br />
Palm und Apple sahen<br />
bereits in den Neunzigern<br />
das Potenzial<br />
mobiler Handhelds, und<br />
brachten die ersten auf<br />
den Markt. Die Zeit war<br />
zu dieser Zeit jedoch<br />
noch nicht reif für diese<br />
Technik, und so vergingen<br />
etwa 10 Jahre, bevor<br />
Geräte dieser Gattung<br />
eine breitere Anerkennung<br />
fanden. Den<br />
Run der breiten Masse<br />
losgetreten hat aber<br />
letztendlich Apple mit<br />
dem iPhone.<br />
Wer noch vor wenigen Jahren im<br />
Zusammenhang mit seinem Mobiltelefon<br />
das Wort „Betriebssystem“<br />
verwendete, wurde meist<br />
eher stirnrunzelnd gemustert.<br />
Kein Wunder, denn die Software<br />
der Geräte erinnerte kaum an<br />
das, was sich die meisten bis dahin<br />
unter einem Betriebssystem<br />
vorstellten: Klickintensive Balkenmenüs<br />
auf briefmarkengroßen<br />
Displays ließen nicht wirklich<br />
den Eindruck von einer produktiven<br />
Arbeitsumgebung aufkommen.<br />
Erst größere Displays in<br />
Kombination mit leistungsfähigen<br />
Prozessoren machten die weitere<br />
Entwicklung möglich.<br />
Doch auch damals gab es durchaus<br />
schon erfolgreiche und visionäre<br />
Konzepte. Von Palm OS und<br />
Symbian über Windows Mobile<br />
bis hin zu iOS und Android ist die<br />
Entstehung der mobilen Betriebssysteme<br />
bis heute eine faszinierende<br />
Geschichte – mit vielen<br />
neuen Ansätzen in der Gegenwart<br />
und einem spannenden Ausblick<br />
auf die Zukunft.<br />
Vorreiter<br />
Als Pionier in Sachen mobile<br />
Computer trat eine kleine Firma<br />
namens Palm auf den Plan, die<br />
1992 auf die Idee kam, dass man<br />
mit einer Displaytastatur und<br />
Stifteingabe die Plastiktasten<br />
doch zugunsten eines größeren<br />
Displays ersetzen könnte (Abbildung<br />
A). Ihr Visionär und Gründer<br />
Jeff Hawkings war es dann<br />
auch, der die Schreiberkennung<br />
namens Graffiti entwickelte, die<br />
später bei vielen verschiedenen<br />
Herstellern unter diversen Bezeichnungen<br />
zum Einsatz kam.<br />
Das erste PDA-Projekt war somit<br />
geboren: Palm lieferte die Idee,<br />
Casio die Hardware und Geoworks<br />
das Betriebssystem. Tandy<br />
übernahm letztendlich den Vertrieb,<br />
unter dessen Namen „Zoomer“<br />
der erste PDA das analoge<br />
Backlight der Welt erblickte.<br />
Fast zeitgleich brachte ein anderer<br />
Global-Player seinen ersten<br />
PDA auf den Markt, der zwar bereits<br />
über eine neuronale Handschriftenerkennung<br />
verfügte,<br />
aber noch erhebliche Schwachstellen<br />
in Hard- und Software<br />
zeigte und teilweise schlichtweg<br />
nicht funktionierte. Die Rede ist<br />
von Apple und seinem ersten<br />
Newton MessagePad (Abbildung<br />
B). Das Gerät verfügte<br />
schon 1993 über einige Innovationen,<br />
die kurioserweise erst heute<br />
wieder in aktuellen Betriebssystemen<br />
wie Windows Vista auftauchten:<br />
So konnte der Newton<br />
unabhängige Daten, die soge-<br />
18 08 | 12<br />
www.linux-user.de
Linux & Mobile<br />
report<br />
nannten „Soups“, verwalten, die<br />
von mehreren Anwendungen<br />
gleichzeitig genutzt wurden. Allerdings<br />
wurde der Newton viel<br />
zu früh und unausgereift regelrecht<br />
auf den Markt geworfen.<br />
Sowohl mit dem Tandy Zoomer<br />
als auch dem Apple Newton erfuhren<br />
Betriebssysteme auf mobilen<br />
Geräten letztendlich ihre Geburtsstunde.<br />
Tatsächlich war die<br />
Welt aber noch nicht bereit für<br />
dieses Novum, denn beide Geräte<br />
hatten nicht nur äußerlich viel<br />
gemeinsam, sondern floppten<br />
auch gleichermaßen. Trotz dieser<br />
finanziellen Misserfolge wurden<br />
die Entwicklungen von Palm OS<br />
und Newton OS aber weiter voran<br />
getrieben, bis dann schließlich<br />
1996 der erste Palm Pilot mit<br />
dem Palm OS 1.0 auf den Markt<br />
kam. Der Rest ist eine Erfolgsgeschichte,<br />
die sich bis zum Palm<br />
OS Cobalt fortsetzte und bis heute<br />
seine Spuren in dem von Hewlett-Packard<br />
übernommenen Betriebssystem<br />
<strong>Web</strong>OS hinterlässt.<br />
Doch auch andere Hersteller<br />
schliefen nicht: Eine Arbeitsgemeinschaft<br />
aus Ericsson, Motorola<br />
und Nokia bastelte ab 1998 zusammen<br />
mit Psion an einem neuen<br />
Betriebssystem namens Symbian<br />
OS. Als Resultat erschien im<br />
Jahr 2000 das Ericsson R380: Der<br />
Klappknochen aus zeitgemäßem<br />
Anthrazit-Plastik kombinierte<br />
dank Symbian erstmals die Funktionen<br />
eines PDAs mit einem Mobiltelefon.<br />
Das herausstechende<br />
Merkmal war sicher die E-Mail-<br />
Funktion, mit der sich die Post<br />
nun endlich auch von unterwegs<br />
abrufen ließ.<br />
Überhaupt schien 2000 das Jahr<br />
der beginnenden Smartphone-<br />
Revolution zu werden. Neben<br />
Symbian brachte auch Microsoft<br />
mit dem Windows CE / Mobile<br />
sein erstes mobiles Betriebssystem<br />
auf den Markt. Ab diesem<br />
Punkt konnten nun verschiedene<br />
Hersteller die neue Geräteklasse<br />
produzieren und mit dem Allround-OS<br />
aus Redmond bestücken<br />
– der Markt für weitere Geräte<br />
dieser Klasse war geöffnet. In<br />
den darauffolgenden Jahren kamen<br />
immer mehr PDAs mit integriertem<br />
Telefon auf den Markt.<br />
Neben Handspring, Palm und<br />
Blackberry brachte auch Nokia<br />
seine erfolgreiche Communicator<br />
Produktlinie heraus.<br />
Die Touch-Revolution<br />
Im Jahr 2007 meldete sich Apple<br />
auf dem Mobilfunkmarkt zurück,<br />
und brachte mit dem iPhone wohl<br />
eines der signifikantesten Geräte<br />
des vergangenen Jahrzehnts auf<br />
den Markt: Erstmals wurde die<br />
Stifteingabe bewusst weggelassen.<br />
Stattdessen kam als wirksamste<br />
Neuerung neben dem einfachen<br />
Bedienkonzept die Fingerbedienung,<br />
die dank Multitouch<br />
auch Gesten wie das „Pinchen“<br />
zum schnellen Vergrößern und<br />
Verkleinern erlaubte.<br />
Doch damit nicht genug: Apples<br />
jahrelange Erfahrung im Bereich<br />
der Desktop-Betriebssysteme<br />
wirkte fast wie eine Waffe, der die<br />
anderen Hersteller vorerst nichts<br />
entgegenzusetzen hatten. Das<br />
Unternehmen portierte seinen<br />
Unix-Unterbau von Mac OS X einfach<br />
auf das iPhone. Das Gerät<br />
ging weg wie warme Semmeln<br />
und machte Apple in den kommenden<br />
Jahren zum reichsten<br />
Unternehmen der Welt. Neben<br />
Nokia und Motorola kämpfen die<br />
Größen der Telefonbranche bis<br />
heute mit den Umsatzverlusten<br />
durch den iPhone-Einschlag.<br />
Der offene Markt<br />
Vor allem Nokia, der bis heute<br />
globalen Nummer eins des Handymarktes,<br />
stand die Panik ins<br />
Gesicht geschrieben: Schnell<br />
kauften die Finnen noch das norwegische<br />
Unternehmen Trolltech,<br />
um mit der betriebssystemübergreifenden<br />
GUI-Bibliothek Qt [1]<br />
ihre bisherigen Symbian-Geräte<br />
fit für Multitouch und neue Anwendungen<br />
zu machen. Weiter<br />
arbeitete das Unternehmen eng<br />
mit der Linux-Community zusammen<br />
und brachte schließlich<br />
mit Intel<br />
das Betriebssystem<br />
Meego für<br />
<strong>Web</strong>-Tablets und<br />
Smartphones an<br />
den Start.<br />
Doch Nokia verschlief<br />
die rechtzeitige GSM-Integration:<br />
Seine Tablets, wie das N800 und<br />
N810 kamen außerhalb einer<br />
WLAN-Verbindung nur mithilfe<br />
eines Handys ins Internet. Zusätzlich<br />
fehlten durch die verpasste<br />
SIM-Integration auch Telefon-<br />
und SMS-Apps. Durch diese<br />
Nachteile wurden die sonst ausgereiften<br />
Produkte auf den Status<br />
eines PDA degradiert und floppten<br />
in der Folge.<br />
Als dann schließlich das Nokia<br />
N900 ausgestattet mit allen<br />
Funktionen eines Smartphones<br />
herauskam, war Apple bereits bei<br />
seiner dritten iPhone Generation<br />
angekommen. So entschied sich<br />
Nokia letztendlich dafür, das vielversprechende<br />
Linux-System kurzerhand<br />
fallen zu lassen und<br />
stattdessen Microsofts Betriebssystem<br />
Windows Phone 7 auf alle<br />
Smartphones zu bringen.<br />
A Das Palmpilot 5000<br />
gilt als das Urgestein<br />
unter den Handhelds.<br />
B Auch Apple<br />
versuchte mit<br />
dem Newton<br />
Messagepad 2000<br />
sein Glück, scheiterte<br />
damals aber ebenso<br />
wie Palm.<br />
C RIM hat die Zeichen<br />
der Zeit erkannt und<br />
stattet sein Blackberry<br />
Playbook OS 2.0 mit einem<br />
Support für Android-Apps<br />
aus.<br />
www.linux-user.de<br />
08 | 12 19
eport<br />
Linux & Mobile<br />
D Nokia zeigt<br />
mit dem Morph-<br />
Conceptphone-Armband,<br />
wie die mobile<br />
Zukunft aussehen<br />
könnte.<br />
E Geht es nach<br />
Google, laufen wir<br />
künftig mit einem Mobilgerät<br />
im Brillenformat<br />
durchs Leben.<br />
(Bild: Google)<br />
Linux kontert<br />
Die ehemals kleine<br />
Firma namens<br />
Android, die der Ex-<br />
Apple- Mitarbeiter Andy<br />
Rubin gegründet hatte, war bereits<br />
2005 von Google eingekauft<br />
worden. Google präsentierte nun<br />
mit der Android-Oberfläche ein<br />
angepasstes Linux, das genau wie<br />
Apples System multitouchfähig<br />
war, eine eigene App-Integration<br />
mitbrachte und im Gegensatz zu<br />
iOS ganz ohne Hardware-Bindung<br />
auf verschiedenen Architekturen<br />
diverser Hersteller lief.<br />
Mit der Markteinführung des<br />
Nexus One wurde Android über<br />
Nacht populär. Damit waren alle<br />
Hersteller happy – mit Ausnahme<br />
natürlich von Apple: Steve Jobs<br />
brachte das Konkurrenzprodukt<br />
so in Rage, dass er von „Diebstahl“<br />
sprach und davon, gegen<br />
Android in einen „thermonuklearen<br />
Krieg“ ziehen zu wollen.<br />
Doch mit seiner neuen Freiheit<br />
sorgte Android dafür, dass wir<br />
heute neben dem iPhone eine<br />
Vielfalt an Geräten im Regal finden.<br />
Schnell entwickelten sich in<br />
diesem Zuge Plattformen wie das<br />
Blackberry Playbook OS (Abbildung<br />
C, vorherige<br />
Seite),<br />
der Palm-<br />
Nachfolger<br />
<strong>Web</strong>OS und<br />
Windows<br />
Phone 7, die<br />
auf einen<br />
mehr oder weniger<br />
üppigen<br />
Marktplatz<br />
mit Apps zugreifen<br />
und<br />
Fingerbedienung<br />
fließend<br />
beherrschen.<br />
Die Kandidaten der mobilen Betriebssysteme<br />
lassen sich grundsätzlich<br />
in zwei Kategorien aufteilen:<br />
Zum einen wären da mit<br />
Android, Meego beziehungsweise<br />
Tizen [2] und bald <strong>Web</strong>OS [3] die<br />
offenen Systeme, zum anderen<br />
mit Windows Phone 7 [4], dem<br />
Blackberry Playbook OS 2.0 [5]<br />
und Apples iOS [6] die Closed-<br />
Source-Systeme.<br />
Es liegt in der Natur der Sache,<br />
dass sich die grundsätzliche Bedienung<br />
unter allen Betriebssystemen<br />
nicht signifikant unterscheidet<br />
– schließlich wurde jedes<br />
System für Fingerbedienung und<br />
Gesten optimiert. Natürlich gibt<br />
es Unterschiede, vor allem hinsichtlich<br />
der Art und Vielfalt von<br />
Anwendungen. Doch die Grundfunktionen<br />
wie Kopieren und<br />
Einfügen, Scrollen und Blättern<br />
oder Zoomen und Verkleinern ähneln<br />
sich bei allen Systemen.<br />
Die Tops und Flops<br />
Während Android und iOS bisher<br />
als klare Gewinner der mobilen<br />
Betriebssysteme gelten, gibt es<br />
natürlich auch Verlierer. Auf der<br />
Kippe standen dabei weniger die<br />
kleinen Anbieter, sondern vielmehr<br />
große Konzerne. Der<br />
Grund: Während Nischenprodukte<br />
und No-Name-Geräte kleinerer<br />
Hersteller eher auf Android setzen,<br />
mussten viele der Big Player<br />
die schmerzhafte Erfahrung machen,<br />
dass der Zug für eigene<br />
Softwarelösungen im mobilen<br />
OS-Bereich schon längst abgefahren<br />
war. Allenfalls Microsoft wird<br />
es vermutlich noch gelingen, sich<br />
mit Windows Phone 7 auch als<br />
Späteinsteiger erfolgreich zu positionieren.<br />
Und auch wenn der Neueinsteiger<br />
Windows Phone 7 noch weit<br />
von Android und iOS entfernt ist,<br />
so kann man mit der konstanten<br />
Entwicklungssicherheit und den<br />
künftigen Tablet-Anbietern kombiniert<br />
mit der Marktposition<br />
von Microsoft davon ausgehen,<br />
dass der Marktanteil für den<br />
Software-Riesen steigen wird,<br />
spätestens mit Windows Phone 8<br />
und den ARM-Versionen des<br />
kommenden Windows 8.<br />
Zu den erwähnten großen Unternehmen<br />
auf der Verliererseite<br />
gehörte aber auch Hewlett<br />
Packard: Der IT-Riese scheiterte<br />
mit seinem Touchpad, das mit<br />
dem Palm OS Nachfolger <strong>Web</strong>OS<br />
bestückt war. Nach nur sieben<br />
Wochen nahm der Hersteller das<br />
Gerät wieder vom Markt, feuerte<br />
den Chef Leo Apotheker und<br />
setzte Milliarden in den Sand.<br />
Nach der Übernahme von Palm<br />
und dem Linux-basierten <strong>Web</strong>OS<br />
sah man schnell ein, dass es offenbar<br />
keinen Platz mehr für ein<br />
weiteres mobiles Betriebssystem<br />
auf dem Markt gab – die meisten<br />
Entwickler hatten sich einfach<br />
auf Android oder iOS festgelegt.<br />
Die Folge: In einer „Alles-mussraus“-Aktion,<br />
die wohl vielen<br />
noch im Gedächtnis sein dürfte,<br />
verramschte HP weltweit seine<br />
<strong>Web</strong>OS-Geräte zum Kampfpreis<br />
von etwa 130 Euro, um wenigstens<br />
einen Teil der Kosten wieder<br />
hereinzubekommen. Immerhin<br />
freuten sich Millionen Schnäppchenjäger<br />
über die schicken Geräte<br />
und warten nun gespannt auf<br />
die Freigabe von <strong>Web</strong>OS zur<br />
Open-Source-Plattform, die noch<br />
in diesem Sommer über die Bühne<br />
gehen soll.<br />
Auch RIM stolperte zunächst<br />
aus ähnlichen Gründen mit seinem<br />
bereits erwähnten Playbook<br />
und dem ebenfalls unixoiden System<br />
QNX beziehungsweise Playbook<br />
OS. Immerhin versah der<br />
Blackberry-Produzent das Betriebssystem<br />
jüngst mit einem<br />
Update auf die Version 2.0 und<br />
rüstete viele überfällige Funktionen,<br />
etwa den Mail-Client, erfolgreich<br />
nach. Auch eine Twitterund<br />
Facebook-Integration wurden<br />
hinzugefügt und Adressbuchsowie<br />
Kalender-App endlich<br />
nachgeliefert. Die vielversprechendste<br />
Neuerung aber kam mit<br />
der Möglichkeit, nun auch Android-Apps<br />
zu starten. Allerdings<br />
beschneidet RIM hier die App-<br />
20 08 | 12<br />
www.linux-user.de
Linux & Mobile<br />
report<br />
Auswahl des Android Market und<br />
riskiert damit, Sympathien zu<br />
verspielen, die das Gerät doch<br />
noch erfolgreich machen könnten.<br />
Ebenfalls fristet das anfangs<br />
vielversprechende Linux-System<br />
Meego mittlerweile ein Nischendasein.<br />
Aktuell läuft es immerhin<br />
auf dem Nokia N9 und dem<br />
WeTab von 4tiitoo [7]. Das mit<br />
Samsung, Intel und Nokia konzipierte<br />
System bringt beim WeTab<br />
interessante Bedienkonzepte mit:<br />
Unter anderem präsentiert sich<br />
der Desktop hier als ein großes<br />
Scrollfeld, auf dem die Programme<br />
vertikal angeordnet sind, was<br />
konzeptionell etwas an die Metro-Oberfläche<br />
der neuen Microsoft-Systeme<br />
erinnert.<br />
Doch seit der Entscheidung Nokias,<br />
seine neuen Geräte zukünftig<br />
mit Windows Phone 7 beziehungsweise<br />
8 zu bespielen, gelang<br />
Meego nie wirklich der große<br />
Durchbruch. Daher wird das Betriebssystem<br />
jetzt vom neuen<br />
Open-Source-Projekt Tizen ersetzt,<br />
das laut der Linux Foundation<br />
auf HTML5-basierende Apps<br />
setzt. Auf diese Weise sollen flexible<br />
Schnittstellen für ein enorm<br />
hohes Maß an Anpassungsfähigkeit<br />
beim Programmieren sorgen.<br />
Die mobile Glaskugel<br />
Nicht zuletzt die steigenden Ansprüche<br />
des Endverbrauchers und<br />
die fortschreitenden technischen<br />
Möglichkeiten haben den Computer<br />
letztendlich auf Hosentaschengröße<br />
geschrumpft. Wenn<br />
mit den NFC-Chips bald auch das<br />
bargeldlose Bezahlen per Smartphone<br />
zum Standard gerät, ist die<br />
Geräteklasse endgültig nicht<br />
mehr aus dem Alltag wegzudenken.<br />
Bezahlmittel, Location-<br />
Dienste und GPS, Social-Network-<br />
und Cloud-Anbindung, Datenspeicher,<br />
Adressbuch, Telefon<br />
und Terminkalender: Das Bündeln<br />
all dieser Funktionen macht<br />
mobile Geräte schon zu einem<br />
fast unheimlichen Machtinstrument.<br />
Ob das die neue Freiheit<br />
oder die neue Überwachung wird,<br />
darüber entscheidet maßgeblich<br />
auch die kritische Verantwortung<br />
der Nutzer. Dabei sollte man die<br />
Zukunft aber nicht gleich schwarz<br />
malen. Allein die kommenden<br />
Monate sind schon interessant:<br />
Microsoft erwacht aus seinem<br />
Dornröschenschlaf und schickt<br />
nach Mobile 7 nun Mobile 8 in<br />
die Startlöcher. Zeitgleich bastelt<br />
das Unternehmen mit Windows 8<br />
und der Metro-Oberfläche [8] daran,<br />
seine Desktop-Betriebssysteme<br />
fit für Tablets und Multitouch<br />
zu machen. Der Palm-OS-Nachfolger<br />
<strong>Web</strong>OS steht inzwischen<br />
unter einer Open-Source-Lizenz,<br />
und schließlich darf man auch<br />
noch auf den Meego-Nachfolger<br />
Tizen gespannt sein.<br />
Mobilität erhöhen<br />
Bei so viel Zeitgeschehen wirkt<br />
ein Blick in die weitere Zukunft<br />
bereits wie spannende Science-<br />
Fiction. Mobile Betriebssysteme<br />
werden auch auf neue Hardware<br />
zugeschnitten sein, die weitere<br />
Anforderungen mit sich bringen.<br />
Ob das Display ausrollbar ist, es<br />
wie beim futuristischen Konzept-<br />
Phone „Morph“ [9] von Nokia<br />
faltbar ums Handgelenk getragen<br />
wird (Abbildung D) oder wir alle<br />
mit Googles „Glass“ ([10], Abbildung<br />
E) auf der Stirn herumlaufen,<br />
wissen wir noch nicht.<br />
Sicher ist nur ein Ziel der Entwickler,<br />
die Mobilität so weit zu<br />
erhöhen, dass der Nutzer am<br />
Ende das Gerät gar nicht mehr<br />
merkt. So bastelt ein amerikanisches<br />
Forschungsprojekt der Universität<br />
Washington zusammen<br />
mit finnischen Wissenschaftlern<br />
bereits seit geraumer Zeit an einer<br />
Kontaktlinse, die irgendwann<br />
Displays ersetzen soll ([11], Abbildung<br />
F). Die Linse wird dazu<br />
kabellos per Induktionsspannung<br />
mit Strom versorgt und hat einen<br />
gewaltigen Vorteil gegenüber den<br />
heutigen Anzeigen: Da sie theoretisch<br />
das gesamte Blickfeld abdeckt,<br />
hat man nicht nur mehr<br />
Platz, sondern kann mittels Augmented-Reality-Technik<br />
wahrgenommene<br />
Gegenstände<br />
um eingeblendete<br />
Zusatzinformationen<br />
interaktiv<br />
ergänzen.<br />
Ausblick<br />
Sicher ist es<br />
bis zur Serienreife<br />
noch<br />
ein weiter Weg: Aktuell zeigt die<br />
Linse im Labor erst einen Pixel<br />
an. Doch bis es erst mal so weit<br />
ist, könnte auch eine aktuell<br />
schon ganz reale Softwarelösung<br />
Abhilfe schaffen: Die intelligente<br />
Sprachsteuerung.<br />
Es ist wohl kaum Zufall, dass<br />
Apple in die Spracherkennungssoftware<br />
Siri [12] 600 Millionen<br />
Dollar investiert hat. Google arbeitet<br />
unter dem Codenamen<br />
„Majel“ an einer ähnlichen Technologie,<br />
die bereits in diesem<br />
Jahr an den Start gehen soll.<br />
Denn wenn Sprachsteuerung tatsächlich<br />
erst einmal so funktioniert,<br />
dass uns mobile Geräte mit<br />
normalen Sätzen verstehen, können<br />
wir Smartphones überwiegend<br />
in der Tasche lassen. (tle) n<br />
info<br />
[1] Qt: http:// qt. nokia. com<br />
[2] Tizen: https:// www. tizen. org<br />
[3] HP <strong>Web</strong>OS: https:// developer. palm. com<br />
[4] Windows Phone 7: http:// www. microsoft.<br />
com/ windowsphone/ de‐DE/<br />
[5] Playbook OS: http:// de. blackberry. com/<br />
playbook‐tablet/ playbook‐os2. jsp<br />
[6] Apple iOS: http:// www. apple. com/ de/ ios/<br />
features. html<br />
[7] WeTab: http:// www. 4tiitoo. com<br />
[8] Windows Mobile 8:<br />
http:// www. windowsmobile8. com<br />
[9] Nokia Morph:<br />
http:// research. nokia. com/ morph<br />
[10] Google Project Glass: https:// plus. google.<br />
com/ u/ 0/ 111626127367496192147<br />
[11] Display-Kontaktlinse:<br />
http:// www. engr. washington. edu/<br />
facresearch/ highlights/ ee_contactlens. html<br />
[12] Apple Siri: http:// www. apple. com/ de/<br />
iphone/ features/ siri. html<br />
F Derzeit noch<br />
Zukunftsmusik: die<br />
Display-Kontaktlinse<br />
der University of<br />
Washington (UW).<br />
www.linux-user.de<br />
08 | 12 21
schwerpunkt<br />
HTML5-Tools<br />
Interessante Tools für HTML5-Entwickler<br />
Fünfte Dimension<br />
„HMTL5 rocks“ – das findet nicht nur Google, und so gibt es bereits eine erkleckliche Anzahl von<br />
Ressourcen, Frameworks und Werkzeugen rund um den brandneuen <strong>Web</strong>standard. Thomas Drilling<br />
Maqetta 6.0.1<br />
LU/maqetta/<br />
README<br />
Schon heute stehen<br />
zahlreiche professionelle<br />
und vor allem<br />
kostenlose Tools und<br />
Frameworks für HTML5<br />
und CSS3 zur Auswahl,<br />
die auch den Neueinstieg<br />
in die <strong>Web</strong>-<br />
Programmierung<br />
unterstützen. Dieser<br />
Artikel stellt die interessantesten<br />
davon vor.<br />
Dank HTML5 und CSS3 beherrschen<br />
<strong>Web</strong>sites heute Funktionen,<br />
die vorher (selbst mit Java)<br />
schlicht nicht möglich waren. Dabei<br />
verbessert HTML5 nicht nur<br />
das Darstellen von <strong>Web</strong>seiten auf<br />
Desktop-PCs, sondern ermöglicht<br />
insbesondere das effiziente Entwickeln<br />
von <strong>Web</strong>anwendungen<br />
für mobile Geräte wie Smartphones<br />
und Tablets. Daher wird<br />
HTML5 das <strong>Web</strong> und die darin erhältlichen<br />
Anwendungen in Zukunft<br />
zweifelsohne dominieren.<br />
Dabei benötigt der Browser beispielsweise<br />
keine zusätzlichen<br />
Plugins mehr, um Video- oder<br />
Audio-Inhalte wiederzugeben.<br />
Insbesondere Entwicklern eröffnen<br />
HTML5 und CSS3 völlig neue<br />
Möglichkeiten, wie etwa Thread-<br />
Programmierung mit <strong>Web</strong>-Workers,<br />
direkte Zugriffsmöglichkeiten<br />
auf das Dateisystem mit ,<br />
ein ausgefeilter Offline-Modus,<br />
zweidimensionalen<br />
Grafiken mit dem -Element,<br />
Animationen mit CSS3 und<br />
das Verwenden beliebiger <strong>Web</strong>-<br />
Fonts mit @font‐face, um nur die<br />
Wichtigsten zu nennen.<br />
Das Beste daran: Schon heute stehen<br />
dazu zahlreiche professionelle<br />
und vor allem kostenlose Tools<br />
und Frameworks zur Auswahl, die<br />
auch den Neueinstieg in die <strong>Web</strong>-<br />
Programmierung unterstützen.<br />
HTML5-Ressourcen im <strong>Web</strong><br />
Die derzeit populärste HTML5-<br />
Ressource stellt zweifelsohne<br />
Googles „HTML5 rocks“ dar [1].<br />
Möchten Sie sich mit den Möglichkeiten<br />
und Standards von<br />
HTML5 vertraut machen oder<br />
schlicht wissen, wie Sie bei Ihren<br />
<strong>Web</strong>-Projekten von den neuen<br />
Funktionen profitieren können,<br />
bietet Googles <strong>Web</strong>-Portal eine<br />
ideale Anlaufstelle.<br />
Google hat „HTML5 rocks“ 2010<br />
ans Netz gebracht, um Entwickler<br />
und <strong>Web</strong>designer mit Demos,<br />
Code-Beispielen und Schritt-für-<br />
Schritt-Anleitungen im Umgang<br />
mit fast allen HTML5-Funktionen<br />
zu unterstützen und den Einstieg<br />
zu erleichtern (Abbildung A). Die<br />
verfügbaren Code-Beispiele und<br />
Demos behandeln die Funktionen<br />
Offline-Modus, Geo-Location,<br />
Audio- und Video-Tags sowie das<br />
-Element und File-<br />
Storage. „HTML5 rocks“ bietet<br />
außerdem eine Reihe von interaktiven<br />
Präsentationen, die einen<br />
umfassenden Überblick über die<br />
Möglichkeiten von HTML5<br />
liefern. Daneben findet sich<br />
eine Code-Sandbox, mit<br />
deren Hilfe Sie Ihre HTML5-<br />
Experimente mitsamt<br />
der neuen<br />
APIs<br />
und CSS-Eigenschaften in einer<br />
sichereren Umgebung ohne<br />
Gefährdung des eigenen Systems<br />
in die Praxis umsetzen.<br />
Auch die offizielle <strong>Web</strong>seite des<br />
W3C-Konsortiums [2] ist einen<br />
Besuch wert und umfasst neben<br />
Links auf viele weitere nützliche<br />
Ressourcen vor allem lesenswerte<br />
Anleitungen. Traditionell bietet<br />
die <strong>Web</strong>seite auch Validatoren für<br />
HTML und CSS an, mit deren<br />
Hilfe Sie als <strong>Web</strong>-Entwickler die<br />
Konformität Ihres Codes testen<br />
[3]. Erwähnung verdient in<br />
diesem Zusammenhang auch das<br />
W3C-Cheatsheet [4], eine<br />
Referenz aller HTML5-, CSS3-<br />
und XSLT-Befehle.<br />
Die sehr empfehlenswerte deutsche<br />
<strong>Web</strong>site Selfhtml5 [5] liefert<br />
ebenfalls eine ganze Reihe von<br />
Beispielen und Anleitungen,<br />
wobei sie ebenfalls das Entwickeln<br />
von Apps für Mobilgeräte<br />
behandelt. Dazu gibt es erklärende<br />
Videos und unter HTML5<br />
<strong>Web</strong>Apps einen interessanten<br />
Link auf die HTML5-Version des<br />
momentan populären Spiels „Cut<br />
the Rope“ [6], die recht eindrucksvoll<br />
demonstriert, was<br />
HTML5 heute leistet.<br />
© Imagehit Asia, 123RF<br />
24<br />
08 | 12
HTML5-Tools<br />
schwerpunkt<br />
Die Entwickler haben<br />
„Cut the Rope“<br />
von der nativen<br />
iOS-App auf<br />
HTML5 umgesetzt,<br />
was angesichts der<br />
zugrundeliegenden<br />
Physik und der aufwendigen<br />
Gestaltung<br />
eine echte Herausforderung<br />
war,<br />
die in Vor-HTML5-<br />
Zeitalter nicht umsetzbar<br />
gewesen<br />
wäre. Faktisch lässt<br />
sich kein Unterschied<br />
zwischen<br />
der nativen App<br />
und der HTML5-<br />
<strong>Web</strong>-App erkennen.<br />
Mozillas Developer Network [7]<br />
offeriert ebenfalls eine eigene<br />
HTML5-Referenz mitsamt Code-<br />
Beispielen und Referenzen. Das<br />
verdeutlich, dass Mozilla mit seiner<br />
<strong>Web</strong>-API ohnehin länger daran<br />
arbeitet, den Unterschied<br />
zwischen nativen und <strong>Web</strong>-Apps<br />
in Zukunft zu verwischen.<br />
Maqetta<br />
Mit dem quelloffenen, webbasierten<br />
<strong>Web</strong>-Editor Maqetta [8] erstellen<br />
Sie im Handumdrehen Benutzeroberflächen<br />
für Mobil- und<br />
Desktop-Anwendungen auf Basis<br />
von HTML5, CSS3 und Ajax. Das<br />
von IBM entwickelte Maqetta hat<br />
das Ziel, die Nachteile von Ajax-<br />
Umgebungen im Vergleich zu den<br />
proprietären Technologien wie<br />
Flash und Silverlight zu eliminieren.<br />
Das Unternehmen übergab<br />
das Projekt Maqetta erst Anfang<br />
2012 unter einer Open-Source-Lizenz<br />
an die gemeinnützige Dojo-<br />
Stiftung, die unter anderem für<br />
das Javascript-Framework Dojo<br />
Toolkit [9] bekannt ist.<br />
Sie laden Maqetta in der aktuellen<br />
Version 6.0.1 in Form eines<br />
ZIP-Archivs herunter [10] und<br />
installieren es dann auf einem lokalen<br />
<strong>Web</strong>server. Hierzu genügt<br />
nach dem Entpacken des ZIP-Archivs<br />
der Aufruf von ./maqetta.<br />
server.unix.sh respektive maqetta.<br />
local.unix.sh. Anschließend steht<br />
das Tool sofort unter der Adresse<br />
http://Server:50000/maqetta oder<br />
http://127.0.0.1:50000/maqetta zur<br />
Verfügung. Der WYSIWYG-Editor<br />
unterstützt Sie beim Erstellen<br />
von <strong>Web</strong>seiten oder von Oberflächen<br />
von <strong>Web</strong>anwendungen (Abbildung<br />
B). Maqetta ermöglicht<br />
das Erstellen eines ansprechenden<br />
Layouts mit einem großen<br />
Umfang grafischer Elemente, die<br />
Sie einfach via Drag & Drop anwenden.<br />
Maqetta ist im Unterschied zu<br />
anderen Lösungen nicht an eine<br />
einzelne, spezifische UI-Biblio-<br />
A Auf Googles „HTML5<br />
rocks“ können Entwickler<br />
und <strong>Web</strong>designer<br />
mit den neuen<br />
HTML-Features experimentieren.<br />
Tipp<br />
Google empfiehlt<br />
zwar jedem, der mit<br />
dem vollen Funktionsumfang<br />
von HTML5<br />
experimentieren<br />
möchte, den hauseigenen<br />
Browser<br />
Chrome zu verwenden,<br />
inzwischen unterstützen<br />
aber die<br />
meisten gängigen<br />
<strong>Web</strong>browser HTML5.<br />
Eine Ausnahme stellt<br />
lediglich Microsofts<br />
Internet dar.<br />
B Der leistungsfähige<br />
<strong>Web</strong>-Editor Maqetta<br />
wurde ursprünglich<br />
von IBM entwickelt.
schwerpunkt<br />
HTML5-Tools<br />
C Das Tool Maqetta<br />
bindet bei Bedarf unterschiedliche<br />
Widget-<br />
Bibliotheken ein.<br />
D Über Layout- Schablonen<br />
unterstützt Maqetta<br />
Sie beim zielgerichteten<br />
Entwickeln<br />
von Layouts für gängige<br />
Mobilgeräte.<br />
thek gebunden. Sie können in der<br />
aktuellen Version problemlos andere<br />
bewährte Lösungen einbinden<br />
wie Yahoos YUI-Library oder<br />
JQuery UI (Abbildung C).<br />
Daneben unterstützt Maqetta<br />
Sie beim Entwickeln mobiler Anwendungen<br />
mit Silhouetten, also<br />
Layout-Schablonen bekannter<br />
Geräte wie dem iPhone. So erstellen<br />
Sie zielgenaue Layouts (Abbildung<br />
D). Maqetta erlaubt es bei<br />
Bedarf in der Quellcode-Ansicht<br />
zu arbeiten. Es ist sogar möglich,<br />
gleichzeitig im visuellen- und im<br />
Code-Modus zu arbeiten. Darüber<br />
hi naus unterstützt das Tool<br />
Teamarbeit mit Funktionen für<br />
Reviews, Bewertungen oder Kommentare.<br />
HTML5 Boilerplate<br />
Stehen Sie noch am Anfang Ihres<br />
HTML5-Abenteuers, sollten Sie<br />
sich das Open-Source-Tool<br />
HTML5 Boilerplate [11] ansehen.<br />
Bei Boilerplate handelt es sich um<br />
eine sehr professionell gemachte<br />
HTML/CSS/JS-Vorlage, die als<br />
Ausgangsbasis für HTML5-Projekte<br />
dient. Boilerplate wurde von<br />
Paul Irish entwickelt, einem Ingenieur<br />
von Googles Chrome-Team,<br />
und steht aktuell in der Version<br />
3.0 zum freien Download auf<br />
der Projektseite sowie auf Github<br />
[12] bereit. Sie finden dort<br />
sowohl eine hervorragend dokumentierte<br />
Version als auch eine<br />
ausschließlich aus Code bestehende,<br />
abgestrippte Variante.<br />
HTML5 Boilerplate vereinfacht<br />
dank Cross-Browser-Normalisierung,<br />
eingebauter Performance-<br />
Optimierungen und vieler weiterer<br />
Funktionen wie etwa Cross-<br />
Domain-Ajax das Arbeiten mit<br />
vielen HMTL5-Funktionen. Das<br />
Paket enthält unter anderem eine<br />
für Einsteiger nützliche .htaccess-<br />
Konfigurationsdatei. Sie bietet<br />
brauchbare Voreinstellungen wie<br />
eine Reihe von Standard-Caching-<br />
Regeln oder Einstellungen für das<br />
effiziente Wiedergeben von HT-<br />
ML5-Video. Zudem erlaubt Boilerplate<br />
das einfache Verwenden<br />
von @font‐face-Schriften sowie<br />
das komprimierte Ausliefern der<br />
verwendeten Ressourcen.<br />
Paul Irish hat zusammen mit Faruk<br />
Ates neben Boilerplate mit<br />
Modernizr [13] eine quelloffene<br />
Javascript-Bibliothek entwickelt,<br />
die bei <strong>Web</strong>designern ebenfalls<br />
viel Anklang findet, das sich mit<br />
ihr Darstellungsfehler von CSS3-<br />
und HTML5-<strong>Web</strong>seiten auf älteren<br />
Browsern verhindern lassen.<br />
Laut Dokumentation [14] erkennt<br />
Modernizr, ob der jeweilige<br />
Browser HTML5 unterstützt, und<br />
ersetzt gegebenenfalls fehlende<br />
Funktionen durch Javascript-<br />
Codeschnipsel („Polyfills“), was<br />
eine gewisse Abwärtskompatibilität<br />
ermöglicht. Der Sinn des Ganzen<br />
besteht vorrangig darin, dass<br />
sich Entwickler mit HTML5 vertraut<br />
machen können, ohne<br />
Rücksicht auf das Vorhandensein<br />
HTML5-fähiger Browser beim<br />
Anwender nehmen zu müssen.<br />
Die Bibliothek unterstütz t unter<br />
anderem und @font‐face.<br />
Sproutcore<br />
Ein weiteres sehr populäres<br />
Open-Source-HTML5-Framework<br />
für <strong>Web</strong>-Anwendungen ist<br />
Sprout core [15]. Mithilfe des freien<br />
HTML5-Frameworks entwickeln<br />
Sie <strong>Web</strong>-Anwendungen, die<br />
im Zusammenspiel mit einem<br />
modernen HTML5-fähigen Browser<br />
problemlos mit Desktop-<br />
Applikationen konkurrieren können,<br />
ohne dass der Nutzer<br />
irgendwelche Plugins installiert<br />
muss. Sproutcore stammt von der<br />
Firma Strobe Inc. [16], die von<br />
dem ehemaligen Apple-Mitarbeiter<br />
Charles Jolley gegründet wurde.<br />
Seit 2011 steht das Framework<br />
unter einer Open-Source-<br />
Lizenz (MIT License). Das Framework<br />
entstand ursprünglich als<br />
Fundament für Apples Mobile-<br />
Me-Dienst und ist unter Entwicklern<br />
wegen seiner Robustheit und<br />
Schnelligkeit beliebt. Außerdem<br />
skaliert das System gut.Technisch<br />
unterscheidet sich das Framework<br />
dadurch von anderen Lösungen,<br />
dass Sproutcore die gesamte Business-Logik<br />
in Java script umsetzt<br />
und daher vollständig auf Client-<br />
26 08 | 12<br />
www.linux-user.de
HTML5-Tools<br />
schwerpunkt<br />
E Das Highlight von<br />
HTML5 Boilerplate<br />
stellt die mitgelieferte<br />
.htaccess-Datei dar.<br />
Seite implementiert wird, womit<br />
sich die Reaktionszeiten von <strong>Web</strong>-<br />
Anwendungen deutlich verringern<br />
lassen, weil sich der Datenaustausch<br />
zwischen Browser und<br />
Server auf ein Minimum reduziert.<br />
Sproutcore selbst ist allerdings<br />
in Ruby implementiert, womit<br />
Sie als Entwickler einer <strong>Web</strong>-<br />
Oberfläche aber nichts zu tun haben:<br />
Sie entwickeln mit Sproutcore,<br />
wie mit jeder anderen <strong>Web</strong>-<br />
Plattform auch, Programme in<br />
HTML5, Javascript und CSS3.<br />
Um Sproutcore in der Version<br />
1.9.2 unter Linux zu nutzen,<br />
brauchen Sie Ruby 1.9.2, jedoch<br />
bringen die meisten aktuellen<br />
Distributionen lediglich Ruby<br />
1.8.2 mit. Erfreulicherweise besitzt<br />
Ruby mit Gems ein eigenes<br />
Paket-Management, das Ihnen<br />
ermöglicht, mehrere Versionen<br />
eines Programms oder einer Bibliothek<br />
kontrolliert zu installieren<br />
und wieder zu entfernen. Außerdem<br />
können Sie mithilfe des<br />
Ruby-Version-Managers RVM<br />
mehrere Ruby-Implementierungen<br />
und Gems-Versionen parallel<br />
nutzen. Sie checken RVM wahlweise<br />
direkt von Github aus oder<br />
nutzen den rvm‐installer (Listing<br />
1, Zeilen 1 bis 3). Anschließend<br />
empfiehlt es sich, die PATH-<br />
Variable des Systems mit Ruby zu<br />
erweitern, wozu Sie die Datei<br />
~/.bash_profile um folgende Zeile<br />
ergänzen:<br />
[[ ‐s "$HOME/.rvm/scripts/rvm" ]U<br />
] && source "$HOME/.rvm/scripts/U<br />
rvm<br />
Das ermöglicht es, die Ruby-Version<br />
1.9.2 via RVM zu installieren<br />
(Listing 1, Zeilen 4 bis 6).<br />
Ubuntu-Nutzer können mit relativ<br />
wenig Aufwand auch Sproutcore<br />
1.8.2 ausprobieren, indem<br />
sie einfach die Pakete ruby-rvm<br />
und (falls noch nicht geschehen)<br />
build-essential installieren. Das<br />
Installieren von Sproutcore 1.8.2<br />
erfolgt dann ganz einfach mit gem<br />
install sproutcore.<br />
Der mit sproutcore server zu<br />
startende Server nutzt per Default<br />
Port 4020. Eine ausführlicher<br />
„Getting-Started-Guide“ [17]<br />
gibt darüber Auskunft, wie Sie<br />
ein erstes Projekt anlegen.<br />
Sencha Touch<br />
Eines der bekanntesten Frameworks<br />
zum Erstellen plattformübergreifender<br />
Anwendungen für<br />
Smartphones ist das vollständig<br />
auf HTML5 und CSS3 basierende<br />
Sencha Touch [18]. Sencha Touch<br />
zeichnet sich – wie der Name<br />
schon nahelegt – durch das komfortable<br />
Verwalten von Touch-Ereignissen<br />
aus und bringt eine umfassende<br />
UI-Bibliothek mit. Zur<br />
grafischen Gestaltung von Oberflächen<br />
nutzt es ausschließlich<br />
CSS3-Transitions und verzichtet<br />
(abgesehen von Icons) ganz auf<br />
Bilder. Darüber hinaus nutzt auch<br />
Sencha Touch eine große Anzahl<br />
an HTML5-Funktionen.<br />
Sencha Touch unterstützt offiziell<br />
die Mobilplattformen Android,<br />
iOS und Blackberry 6, soll aber<br />
laut Hersteller Sencha Inc. auf jedem<br />
mobilen Browser funktionieren,<br />
der HTML5-Features unterstützt.<br />
Die aktuelle Version<br />
2.0.2.2 der „Free Commercial Version“<br />
steht unter [19] zum kostenlosen<br />
Download bereit.<br />
Jo HTML5 App Framework<br />
Zu den nicht ganz so bekannten<br />
HTML5-Frameworks zählt Jo<br />
[20], das die Plattformen Android,<br />
Blackberry, ChromeOS, iOS<br />
und <strong>Web</strong>OS unterstützt. Wie Sen-<br />
Listing 1<br />
01 $ curl ‐s https://rvm.beginrescueend.com/install/rvm<br />
‐o rvm‐installer<br />
02 $ chmod +x rvm‐installer<br />
03 $ ./rvm‐installer ‐‐version latest<br />
04 $ rvm install ruby‐1.9.2<br />
05 $ rvm use 1.9.2<br />
06 $ rvm ‐‐default use 1.9.2<br />
www.linux-user.de<br />
08 | 12 27
schwerpunkt<br />
HTML5-Tools<br />
F Mit RVM und<br />
Gems lassen sich<br />
mehrere Ruby-Versionen<br />
parallel installieren<br />
und nutzen.<br />
cha Touch eignet sich Jo vorrangig<br />
zum Entwickeln von mobilen<br />
Apps und bringt eine UI-Widget-<br />
Library und einfach zu implementierende<br />
CSS3-Animationen mit.<br />
Im Zusammenspiel mit der App<br />
Phonegap [21] ermöglicht Jo<br />
auch das Entwickeln mobiler<br />
Apps auf Basis von HTML5, die<br />
sich nativ übersetzen lassen. Bei<br />
Jo handelt es sich um freie Software,<br />
das Framework wird unter<br />
einer OpenBSD-Lizenz auf Github<br />
[22] gehostet.<br />
Und sonst?<br />
Möchten Sie als Entwickler schon<br />
jetzt Multimedia-Daten ausschließlich<br />
mithilfe von HTML5-<br />
Features wie und <br />
einbinden, ohne sich Gedanken<br />
darum zu machen, welchen Browser<br />
der Anwender nutzt, können<br />
Sie neben der oben erwähnten<br />
Modernizr-Bibliothek auch den<br />
MediaElement Player [23] verwenden<br />
(Abbildung G). Dabei<br />
stellt eine Open-Source-Javascript-Bibliothek<br />
mithilfe von<br />
CSS und dem populären<br />
Framework<br />
JQuery [24]<br />
einen universellen<br />
Video-Player<br />
zur Verfügung.<br />
Ein Skript prüft<br />
beim Laden der<br />
Seite, ob der anfragende<br />
Browser<br />
HTML5 unterstützt<br />
– falls<br />
nicht, ersetzt die<br />
Lösung automatisch<br />
das -Tag durch ein<br />
Flash- oder Silverlight-Plugin.<br />
Um ein sehr leistungsfähiges<br />
<strong>Web</strong>-Entwicklungstool handelt es<br />
sich bei Aptana Studio [25] von<br />
Appcelerator. Die aktuelle Version<br />
3.0 [26] unterstützt mit<br />
HTML5, CSS3, Javascript, Ruby,<br />
Rails, PHP und Python alle heute<br />
relevanten <strong>Web</strong>-Technologien.<br />
Aptana Studio bringt neben eigenen<br />
Validatoren auch diverse<br />
Browser-Emulatoren mit, ist allerdings<br />
nur bei nicht gewerblicher<br />
Nutzung kostenlos.<br />
Fazit<br />
In vielen Bereichen vereinfacht<br />
sich das Programmieren von<br />
plattformübergreifenden Oberflächen.<br />
Das umfasst selbst komplexe<br />
Applikationen. Derzeit bietet<br />
HTML5 vor allem beim Abspielen<br />
von Multimedia-Inhalten<br />
unbestreitbare Vorteile und<br />
macht das bisher übliche Verwenden<br />
von Plugins obsolet, sofern<br />
Sie mithilfe der HTML5-Tags<br />
und Multimedia-<br />
Inhalte auf einfache Weise in Ihre<br />
<strong>Web</strong>seite integrieren. Sollte sich<br />
HTML5 wie zu erwarten durchsetzen,<br />
macht es also in naher Zukunft<br />
Technologien wie Flash<br />
oder auch Silverlight überflüssig.<br />
Dass HTML5 aber deutlich mehr<br />
kann, als nur Plugins ersetzen,<br />
sollte unsere Übersicht gezeigt<br />
haben und macht hoffentlich<br />
Lust auf das langsam heraufziehende<br />
<strong>Web</strong> 3.0. (jlu) n<br />
[1] „HTML5 rocks“:<br />
http:// www. html5rocks. com/ en/<br />
[2] W3C-Konsortium: http:// www. w3. org<br />
[3] W3C-Validator: http:// validator. w3. org<br />
[4] W3C-Cheatsheet:<br />
http:// www. w3. org/ 2009/ cheatsheet<br />
[5] Selfhtml5: www. selfhtml5. org<br />
[6] „Cut the rope“:<br />
http:// www. cuttherope. ie/ dev<br />
[7] Mozilla Developer Network:<br />
https:// developer. mozilla. org/ de<br />
[8] Dojo Foundation/ Maqetta: http://<br />
dojofoundation. org/ projects/ maqetta<br />
[9] Dojo-Toolkit:<br />
info<br />
http:// dojofoundation. org/ projects/ dojo<br />
[10] Maqetta-Download:<br />
http:// maqetta. org/ downloads/<br />
[11] HTML5 Boilerplate:<br />
http:// de. html5boilerplate. com<br />
[12] HTML5-Boilerplate (Github): https:// github.<br />
com/ paulirish/ html5‐boilerplate<br />
[13] Modernizr: http:// www. modernizr. com<br />
[14] Modernizr-Doku:<br />
http:// modernizr. com/ docs/<br />
[15] Sproutcore: http:// www. sproutcore. com<br />
[16] Strobe Inc.: http:// www. strobecorp. com<br />
[17] Sproutcore – Getting-Started-Guide:<br />
http:// guides. sproutcore. com/ getting_started.<br />
html<br />
[18] Sencha Touch: http:// www. sencha. com/<br />
products/ touch/ index. php<br />
[19] Sencha-Touch-Download: http:// www.<br />
sencha. com/ products/ touch/ download/<br />
[20] Jo HTML5 App Framework:<br />
http:// joapp. com<br />
[21] Phonegap: http:// phonegap. com<br />
[22] Jo (Github):<br />
http:// github. com/ davebalmer/ jo<br />
[23] MediaElement Player:<br />
G Der MediaElement<br />
http:// mediaelementjs. com<br />
Player ermöglicht<br />
[24] JQuery: http:// jquery. com<br />
HTML5-Anwendungen<br />
[25] Aptana Studio: http:// www. aptana. com<br />
mit Video-Tag auch auf<br />
[26] Aptana-Studio-Download:<br />
älteren Browsern.<br />
http:// www. aptana. com/ products/ studio3<br />
28 08 | 12<br />
www.linux-user.de
CouchDB<br />
schwerpunkt<br />
Daten für <strong>Web</strong>-Applikationen verwalten mit der NoSQL-Datenbank CouchDB<br />
Komfortables Sofa<br />
Mit CouchDB und wenigen Javascript-Kenntnissen programmieren Sie im Nu eine <strong>Web</strong>-Applikation<br />
inklusive Datenbank. Ganz ohne Umdenken greift das neue Konzept allerdings nicht. Tim Schürmann<br />
© Malalena, sxc.hu<br />
Eine Datenbank aufzusetzen,<br />
übersteigt die Möglichkeiten der<br />
meisten Heimanwender. Bietet<br />
der gemietete <strong>Web</strong>space zusätzlich<br />
keine vorkonfigurierte Datenbank<br />
an, war das früher der<br />
Todesstoß für einigermaßen<br />
komplexe Anwendungen im <strong>Web</strong>.<br />
CouchDB [1] eröffnet einen einfacheren<br />
Weg, um nicht nur Daten,<br />
sondern komplette Programme<br />
zu speichern und auszuliefern.<br />
Ursprung<br />
Die Wurzeln des Projektes reichen<br />
zurück bis in die Zeit kurz<br />
nach der Jahrtausendwende:<br />
Nach seinem Studium arbeitete<br />
Damien Katz lange Zeit bei IBM<br />
an Lotus Notes. 2002 verließ er<br />
seinen Arbeitgeber und begann<br />
eine eigene Open-Source-Datenbank<br />
zu entwickeln. Sie sollte wie<br />
die von Notes arbeiten, aber wesentlich<br />
mehr Funktionen bieten.<br />
Als Programmiersprache wählte<br />
er Erlang [2] – mit dem sich die<br />
parallelen Zugriffe auf die gespeicherten<br />
Daten besonders einfach<br />
umsetzen ließen. Die erste Version<br />
der CouchDB getauften Datenbank<br />
erschien schließlich 2005.<br />
Da Damien Katz in dieser Phase<br />
kaum Geld mit der Software verdiente,<br />
arbeitet er kurzzeitig für<br />
MySQL, das Unternehmen hinter<br />
der gleichnamigen Datenbank.<br />
Schließlich landete er wieder bei<br />
IBM. Dort durfte er weiterhin an<br />
CouchDB schrauben, musste aber<br />
die Rechte an der Datenbank an die<br />
Apache Software Foundation übergeben.<br />
Seit Ende 2008 ist das Programm<br />
ein vollwertiges Apache<br />
Projekt und steht komplett unter<br />
der freien Apache-Lizenz.<br />
2010 erreichte CouchDB die<br />
Versionsnummer 1.0. Bis dahin<br />
lief sie jedoch schon in zahlreichen<br />
Projekten und erfreute sich<br />
einer recht großen Anhängerschaft.<br />
Mittlerweile gehört die<br />
Applikation zu den bekanntesten<br />
Datenbanken, die auf SQL als Abfragesprache<br />
verzichten. Solche<br />
Datenbanksysteme firmieren derzeit<br />
unter dem zwar modischen,<br />
aber leicht missverständlichen<br />
Begriff NoSQL.<br />
Schriftstücke<br />
CouchDB speichert immer komplette<br />
Dokumente – wenn auch<br />
nicht Dateien im Sinne eines<br />
LibreOffice-Dokumentes, sondern<br />
Textdateien im Austauschformat<br />
JSON [3]. Listing 1 zeigt ein kleines<br />
Beispiel für ein solches Dokument.<br />
In den geschweiften Klammern<br />
stehen alle zu speichernden<br />
Informationen. Um diese später<br />
einfacher auffinden und unterscheiden<br />
zu können, erhält jeder<br />
Wert zunächst einen eindeutigen<br />
Namen, den sogenannten Key.<br />
Listing 1<br />
{<br />
"name": "Max Mustermann",<br />
"strasse": "Musweg 4",<br />
"ort": "Beidorf",<br />
"plz": 74214,<br />
"telefonnummern": [<br />
"0123/4546780", "9876‐543201" ]<br />
}<br />
CouchDB 1.2.0<br />
LU/couchdb/<br />
README<br />
CouchDB verzichtet auf<br />
SQL. Stattdessen speichert<br />
es komplette Dokumente,<br />
Abfragen bestehen<br />
aus speziellen<br />
URLs und Javascript-<br />
Funktionen und liefert<br />
auf Wunsch sogar komplette<br />
<strong>Web</strong>-Anwendungen<br />
aus und ersetzt<br />
so den <strong>Web</strong>server.<br />
www.linux-user.de<br />
08 | 12 29
schwerpunkt<br />
CouchDB<br />
A Den Namen des<br />
Dokumentes hängen Sie<br />
einfach an die URL an.<br />
In diesem Fall dient als<br />
Name die von CouchDB<br />
erzeugte UUID.<br />
installation<br />
Listing 1 auf der vorherigen Seite<br />
führt beispielsweise die Ortsangabe<br />
Beidorf unter dem Key ort.<br />
Der Key selbst steht immer in Anführungszeichen.<br />
Ihm folgen ein<br />
Doppelpunkt und dann die eigentliche<br />
Information. Sofern es<br />
sich dabei um einen Text handelt,<br />
steht dieser ebenfalls in Anführungszeichen,<br />
bei Zahlen dürfen<br />
Sie diese weglassen.<br />
Kommas trennen die zu speichernden<br />
Daten jeweils – in Listing<br />
1 am Ende einer jeden Zeile.<br />
Aufzählungen beziehungsweise<br />
Listen stehen zwischen eckigen<br />
Klammern, wobei ebenfalls wieder<br />
Kommata die einzelnen Werte<br />
trennen. Welche Daten ein Dokument<br />
enthält, dürfen Sie frei<br />
festlegen. Als Werte erlaubt die<br />
Software übrigens wiederum<br />
JSON-Strukturen, wie das Beispiel<br />
aus Listing 2 zeigt.<br />
CouchDB liegt einigen wenigen Distributionen bereits bei – allerdings<br />
mitunter in ziemlich alten Versionen. Das Repository von<br />
Ubuntu 12.04 bietet beispielsweise die Version 1.0.1 an, zum<br />
Redaktionsschluss aktuell war aber bereits die Version 1.2.0.<br />
Folglich kommen Sie meist nicht umhin, selbst den CouchDB-<br />
Quellcode zu übersetzen.<br />
Dazu installieren Sie zunächst über den Paketmanager Erlang<br />
OTP (in der Version R12B5 oder höher), Make, GCC für C++, ICU,<br />
OpenSSL, Mozilla SpiderMonkey (mindestens in Version 1.7),<br />
Libcurl und Help2man. Unter Ubuntu 12.04 und Debian geht das<br />
am schnellsten über den folgenden Befehl in einem Terminal:<br />
$ sudo apt‐get install build‐essential erlang erlang‐euU<br />
nit libicu‐dev libmozjs‐dev libcurl4‐openssl‐dev<br />
Anschließend laden Sie von der CouchDB-Homepage oder der<br />
Heft-DVD das Archiv herunter und entpacken Sie es im Home-<br />
Verzeichnis. Dort übersetzen und installieren Sie CouchDB mit<br />
den folgenden drei Befehlen:<br />
$ ./configure<br />
$ make<br />
Anfragen und Anweisungen<br />
nimmt CouchDB über das HTTP-<br />
Protokoll entgegen, das Browser<br />
zum Abrufen von <strong>Web</strong>seiten verwenden.<br />
Vereinfacht gesagt: Sie<br />
rufen spezielle URLs auf, die<br />
CouchDB dann wiederum als<br />
Anweisungen interpretiert. Das<br />
Prinzip ist unter dem Namen<br />
RESTful [4] bekannt.<br />
Am einfachsten setzen Sie solche<br />
Anfragen über das Hilfsprogramm<br />
cURL [5] ab, das sich in<br />
den Repositories aller gängigen<br />
Distributionen findet. Eine neue<br />
Datenbank adressbuch erzeugen<br />
Sie über den folgenden Aufruf:<br />
$ curl ‐X PUT http://127.0.0.1:5U<br />
984/adressbuch<br />
Das Kommando PUT bezeichnet<br />
die entsprechende HTTP-Methode.<br />
Sie weist CouchDB an, etwas<br />
zu erstellen oder zu verändern.<br />
Hinter der Adresse 127.0.0.1 verbirgt<br />
sich der eigene Rechner, auf<br />
dem CouchDB standardmäßig am<br />
TCP-Port 5984 lauscht. CouchDB<br />
liefert also grundsätzlich alle Ausgaben<br />
in der JSON-Notation zurück.<br />
Die Rückmeldung auf den<br />
Befehl sollte {"ok":true} lauten.<br />
Die erstellte Datenbank können<br />
Sie jetzt mit Daten füllen – wie<br />
etwa denen aus Listing 1. Wie alle<br />
in CouchDB gespeicherten Dokumente<br />
benötigt auch dieses allerdings<br />
noch einen eindeutigen Namen<br />
– CouchDB speichert ihn<br />
dann später im Dokument unter<br />
dem Key _id.<br />
Sie dürfen sich für jedes Dokument<br />
selbst einen Namen ausdenken,<br />
solange er keine Sonderzeichen<br />
enthält und nicht mit einem<br />
Unterstrich beginnt – solche<br />
Namen reserviert CouchDB für<br />
interne Zwecke. Wichtig ist, dass<br />
Sie einen eindeutigen Namen<br />
wählen. Um das sicherzustellen,<br />
generieren Sie diesen am einfachsten<br />
über CouchDB selbst<br />
(Abbildung A):<br />
$ curl ‐X GET http://127.0.0.1:5U<br />
984/_uuids<br />
Als Ergebnis erhalten Sie eine lange,<br />
kryptische Zeichenkette: einen<br />
sogenannten Universally<br />
Unique Identifier, kurz UUID [6].<br />
Unter Verwendung des Namens<br />
können Sie das Dokument in die<br />
Datenbank stecken, den dazu nötigen<br />
cURL-Befehl zeigt Listing 3.<br />
Durch das angehängte Dokument<br />
verwandelt der Befehl sich<br />
in einen ziemlich unhandlichen<br />
Bandwurm. Wollen oder müssen<br />
Sie Dokumente per Hand in die<br />
Datenbank stopfen, sollten Sie<br />
$ sudo make install<br />
Anschließend starten Sie CouchDB via sudo couchdb. Steuern<br />
Sie jetzt in einem Browser die Adresse http://127.0.0.1:5984/<br />
an, meldet sich CouchDB mit {"couchdb":"Welcome","version":<br />
"1.2.0"}.<br />
B CouchDB bringt ein eingebautes Frontend mit dem Namen Futon mit, über<br />
das Sie die Datenbanken etwas komfortabler verwalten.<br />
30 08 | 12<br />
www.linux-user.de
CouchDB<br />
schwerpunkt<br />
deshalb die Hilfe der mitgelieferten<br />
Oberfläche in Anspruch nehmen.<br />
Sie erreichen sie mit einem<br />
Browser unter der Adresse<br />
http://127.0.0.1:5984/_utils/.<br />
Sie sehen dann die in CouchDB<br />
eingebaute <strong>Web</strong>-Applikation namens<br />
Futon (Abbildung B). In<br />
dieser klicken Sie die entsprechende<br />
Datenbank in der Liste<br />
an, im Beispiel also das adressbuch.<br />
Die anderen Datenbanken, deren<br />
Name mit einem Unterstrich beginnt,<br />
nutzt CouchDB für interne<br />
Zwecke. Im Zweifelsfall erstellen<br />
Sie mit Create Database unkompliziert<br />
eine neue Datenbank.<br />
In der geöffneten Datenbank<br />
legt Futon über New Document<br />
ein weiteres leeres Dokument an<br />
und vergibt dafür automatisch<br />
eine ID. Die müssen Sie nur über<br />
die entsprechende Checkbox bestätigen<br />
– oder aber den Vorschlag<br />
der Software mit einer eigenen<br />
ID überschreiben.<br />
Per Add Field ergänzen Sie jetzt<br />
sukzessive weitere Datenfelder.<br />
Für eine Änderung genügt ein<br />
Klick auf den entsprechenden<br />
Eintrag (Abbildung C). Alternativ<br />
geben Sie auf dem Register Source<br />
das komplette Dokument in der<br />
JSON-Notation ein beziehungsweise<br />
bearbeiten es.<br />
Altlasten<br />
Egal, ob Sie ein Dokument über<br />
die Kommandozeile oder Futon<br />
in die Datenbank schieben: Die<br />
Software fügt dem Dokument automatisch<br />
eine Versionsnummer<br />
hinzu. Die liegt im Key _rev und<br />
setzt sich aus zwei Teilen zusammen:<br />
Am Anfang vor dem Bindestrich<br />
steht eine fortlaufende<br />
Nummer. CouchDB zählt diese<br />
nach jeder Änderung um eins<br />
hoch. Zudem erstellt CouchDB<br />
mittels des MD5-Verfahrens eine<br />
Prüfsumme des Dokumentes, die<br />
hinter dem Bindestrich steht. Die<br />
älteren Versionen des Dokumentes<br />
bleiben weiterhin in der Datenbank.<br />
In Futon haben Sie die<br />
Möglichkeit, über Previous Version<br />
durch diese zu blättern.<br />
Wenn Sie ein Dokument mit<br />
cURL ändern oder löschen, müssen<br />
Sie die komplette Versionsnummer<br />
mit angeben. Der Befehl<br />
aus Listing 4 erweitert beispielsweise<br />
das vorhandene Dokument<br />
um den Eintrag alter. Sofern dieser<br />
Key noch nicht existiert, erzeugt<br />
ihn der Befehl, andernfalls<br />
ändert er den Wert des Schlüssels.<br />
Die erneute Angabe der übrigen<br />
Keys ist notwendig, da<br />
CouchDB diese andernfalls löschen<br />
würde. Wie Sie in Futon<br />
oder via Terminal schnell herausfinden,<br />
hat CouchDB die Revisionsnummer<br />
erhöht.<br />
Wie das Beispiel zeigt, dürfen<br />
Sie einem Dokument jederzeit beliebige<br />
weitere Daten hinzufügen.<br />
Die anderen Dokumente können<br />
komplett andere Informationen<br />
enthalten – so dürfte die Adresse<br />
von Peter Schmidt auch nur seine<br />
{<br />
"name": "Max Mustermann"<br />
"bestellung": 1<br />
"produkte": [<br />
{"bestellung": "T‐Shirt"<br />
"anzahl": 1<br />
},<br />
{<br />
"bestellung": "Schuhe"<br />
"anzahl": 2<br />
} ]<br />
}<br />
Listing 2<br />
Mobilfunknummer umfassen. Im<br />
Gegensatz zu herkömmlichen relationalen<br />
Datenbanken ist<br />
CouchDB folglich schemafrei.<br />
Die Pflicht zur Angabe der Revisionsnummer<br />
stellt übrigens keine<br />
Schikane dar: Möchten zwei<br />
Benutzer Daten verändern, sperren<br />
andere Datenbanken den Zugriff<br />
zunächst für den zweiten Benutzer.<br />
Erst wenn der erste Benutzer<br />
alle Operationen ausgeführt<br />
hat, ist der zweite Benutzer<br />
an der Reihe. Dieses Blockieren<br />
C Futon ermöglicht<br />
das komfortable Anlegen<br />
und Bearbeiten eines<br />
Dokumentes – hier<br />
der Adresse von Max<br />
Mustermann.<br />
Listing 3<br />
$ curl ‐X PUT http://127.0.0.1:5984/adressbuch/6<br />
825dc0758d90d1ec96b57dbdc000c38 ‐d '{"name": "Max<br />
Mustermann","strasse": "Musweg 4","ort": "Beidorf","plz":<br />
74214,"telefonnummern": [ "0123/4546780", "9876‐543201"<br />
]}'<br />
Listing 4<br />
$ curl ‐X PUT http://127.0.0.1:5984/adressbuch<br />
/6825dc0758d90d1ec96b57dbdc000c38 ‐d '{"_rev":<br />
"1‐b2148264bd1a386e43da2ebfe6794d41", "name": "Max<br />
Mustermann","strasse": "Musweg 4","ort": "Beidorf","plz":<br />
74214,"telefonnummern": [ "0123/4546780", "9876‐543201"<br />
],"alter": 24}'<br />
01 function(doc) {<br />
02 if (doc.name == 'Schmidt') emit(doc.name, 1)<br />
03 }<br />
04 <br />
05 function(keys, values, rereduce) {<br />
06 return sum(values)<br />
07 }<br />
Listing 5<br />
www.linux-user.de<br />
08 | 12 31
schwerpunkt<br />
CouchDB<br />
D Hier liegen zwei<br />
Adressen mit dem Namen<br />
Schmidt in der Datenbank.<br />
Wie rows andeutet,<br />
darf eine Anfrage<br />
mehrere Ergebnisse<br />
liefern.<br />
Listing 7<br />
01 {<br />
führt unter anderem zu einer<br />
schlechteren Performance.<br />
CouchDB setzt deshalb auf das<br />
Multiversion-Concurrency-Control-Verfahren<br />
(MVCC). Dabei<br />
dürfen alle Benutzer immer alle<br />
Daten aus der Datenbank lesen.<br />
CouchDB liefert dann jeweils die<br />
gerade aktuelle Version des Dokumentes<br />
zurück. Aktualisiert nun<br />
ein Benutzer ein Dokument,<br />
prüft CouchDB, ob eventuell<br />
schon ein anderer schneller war.<br />
Dazu vergleicht CouchDB die mitgegebene<br />
Versionsnummer mit<br />
Listing 6<br />
02 "_id": "_design/adressbuch",<br />
03 "views": {<br />
04 ...},<br />
05 "shows": {<br />
06 "htmladr": "function(doc, req) {<br />
07 if(doc) {<br />
{<br />
"_id": "_design/adressbuch",<br />
"views": {<br />
"AnzahlSchmidt": {<br />
"map": "function(doc) { \<br />
if (doc.name ==<br />
'Schmidt') emit(doc.name, 1) \<br />
}",<br />
"reduce": "function(keys,<br />
values, rereduce) { \<br />
return sum(values) \<br />
}"<br />
}<br />
}<br />
}<br />
08 return 'Ein<br />
DokumentName: '+doc.name+' Straße: '+doc.strasse+' Ort: '+doc.plz+'<br />
'+doc.ort+'';<br />
09 } else {<br />
10 return 'Es gibt kein Dokument mit der ID<br />
'+req.id+'';<br />
11 }<br />
12 }"<br />
13 }<br />
14 }<br />
der aktuellen in der Datenbank.<br />
Weichen die beiden Zahlen ab,<br />
meldet CouchDB einen Konflikt,<br />
den Sie auflösen müssen.<br />
Abbilden und Reduzieren<br />
Komplexe Abfragen erfolgen in<br />
CouchDB auf einem etwas ungewöhnlichen<br />
Weg. Jede Abfrage<br />
besteht aus zwei Phasen: Die erste<br />
wählt zunächst einen Teil der<br />
Dokumente aus, den die zweite<br />
Phase dann weiterverarbeitet.<br />
Sucht zum Beispiel die erste Phase<br />
alle Adressen mit dem Namensteil<br />
Schmidt heraus, wäre es<br />
möglich, die Anzahl dieser Adressen<br />
zu zählen. Die erste Phase<br />
heißt „Map“, die zweite „Reduce“.<br />
In der ersten Phase durchläuft<br />
CouchDB alle Dokumente in einer<br />
Datenbank. Dabei übergibt die<br />
Software jedes einzelne Dokument<br />
einer Javascript-Funktion.<br />
Die wiederum entscheidet, ob das<br />
Dokument für das weitere Verarbeiten<br />
relevant ist. Listing 5 zeigt<br />
in den ersten drei Zeilen eine einfache<br />
Map-Funktion.<br />
Diese prüft, ob das von Couch<br />
DB übergebene Dokument einen<br />
Key name mit dem Wert Schmidt<br />
enthält. Falls ja, gibt sie nicht<br />
etwa die komplette Adresse zurück,<br />
sondern via emit() lediglich<br />
einen Schlüssel namens Schmidt<br />
mit dem Wert 1. Als Ergebnis der<br />
ersten Phase erhalten Sie dann<br />
eine Liste mit Zwischenergebnissen<br />
der Form:<br />
"Schmidt": 1<br />
"Schmidt": 1<br />
"Schmidt": 1<br />
...<br />
Gefeuerte Replikanten<br />
Diese Liste stopft CouchDB jetzt<br />
in eine zweite Funktion (Listing<br />
5, Zeile 5 bis 7). Diese zählt<br />
jetzt einfach alle gefundenen Zwischenergebnisse.<br />
Das Ergebnis ist die Anzahl aller<br />
Schmidts im Adressbuch. Für<br />
Umsteiger von SQL mag das<br />
ziemlich kompliziert wirken, zumal<br />
zwingend Javascript-Kenntnisse<br />
erforderlich sind. Umgekehrt<br />
ermöglicht CouchDB gerade<br />
dank dieses Umstandes besonders<br />
komplexe Abfragen und Berechnungen.<br />
Die Reduce-Funktion dürfen Sie<br />
in CouchDB weglassen – etwa,<br />
wenn Sie einfach nur an den Adressen<br />
aller Schmidts interessiert<br />
sind. Das Ausführen im Hintergrund<br />
übernimmt die bekannte<br />
Software Spidermonkey, die auch<br />
in Firefox den Javascript-Code interpretiert.<br />
Über sogenannte<br />
View-Server binden Sie aber bei<br />
Bedarf unkompliziert weitere<br />
Sprachen an – derzeit unter anderem<br />
PHP, Perl und Python.<br />
Ansichtssache<br />
Mit den zwei Funktionen ist es<br />
aber noch nicht getan: Beide müssen<br />
Sie in einer sogenannten<br />
View zusammenfassen und diese<br />
wiederum in einem speziellen Design-Dokument<br />
ablegen. Wie das<br />
mit den beiden Funktionen aussieht,<br />
zeigt Listing 6.<br />
Beide Funktionen lagern unter<br />
den Keys map und reduce – das gibt<br />
CouchDB so vor. Dieses Duo wiederum<br />
fasst der Key AnzahlSchmidt<br />
zusammen. Diesen Namen dürfen<br />
Sie frei wählen. Die Ansicht<br />
AnzahlSchmidt steckt wiederum im<br />
Bei Bedarf transferieren Sie eine Datenbank<br />
an andere laufende<br />
CouchDB-Instanz („replizieren“). Die<br />
beteiligten Kollegen halten den Datenbestand<br />
dabei immer automatisch auf<br />
dem aktuellen Stand. CouchDB eignet<br />
sich somit hervorragend für verteilte<br />
(<strong>Web</strong>-)Anwendungen. Aus diesem<br />
Grund nutzte Canonical die Datenbank<br />
eine Zeit lang für seinen Dienst<br />
Ubuntu One. Dort sorgte CouchDB unter<br />
anderem für den Abgleich von Kontakten<br />
und Lesezeichen. Nach einer<br />
Weile stellte sich jedoch heraus, dass<br />
CouchDB den mehreren Millionen Benutzern<br />
nicht gewachsen war, sodass<br />
sich Canonical Ende 2011 dazu entschloss,<br />
die Software gegen eine Eigenentwicklung<br />
auszutauschen. Dabei<br />
heben die CouchDB-Entwickler gerade<br />
die gute Skalierbarkeit ihrer Datenbank<br />
gern hervor.<br />
32 08 | 12<br />
www.linux-user.de
CouchDB<br />
schwerpunkt<br />
Key views (auch das gibt die Software<br />
so vor). Das Dokument erhält<br />
schließlich noch einen Namen,<br />
der mit _design/ beginnt.<br />
Dies kennzeichnet das Dokument<br />
als Design-Dokument.<br />
Listing 6 legen Sie als neues Dokument<br />
in der Datenbank ab, im<br />
Beispiel also im adressbuch. Anschließend<br />
starten Sie die Abfrage<br />
über den Befehl:<br />
E Die Show-Funktion<br />
presst hier drei Informationen<br />
aus dem Dokument<br />
in eine einfache<br />
HTML-Seite.<br />
F Die HTML-Seite präsentiert<br />
das Ergebnis<br />
der Abfrage.<br />
$ curl http://127.0.0.1:5984/adrU<br />
essbuch/_design/adressbuch/_viewU<br />
/AnzahlSchmidt<br />
Sie brauchen also nur eine simple<br />
URL aufzurufen. Wie in Abbildung<br />
D erscheint das Ergebnis<br />
standardmäßig im JSON-Format.<br />
Schminktisch<br />
Sowohl die gespeicherten Dokumente<br />
als auch die Ergebnisse<br />
von Abfragen lassen sich umformatieren<br />
und beispielsweise als<br />
HTML-Seite ausgeben. Dies übernimmt<br />
wieder eine Javascript-<br />
Funktion. Gibt diese nur den Inhalt<br />
eines einzigen Dokumentes<br />
aus, handelt es sich um eine sogenannte<br />
Show-Funktion.<br />
Einen einfachen Vertreter dieser<br />
Gattung zeigt Listing 7 ab der<br />
Zeile 5. Sie presst lediglich die<br />
Werte für Namen, Straße und Ort<br />
des übergebenen Dokumentes in<br />
eine einfache HTML-Seite und<br />
liefert diese zurück. Über die Fallunterscheidung<br />
prüfen Sie, ob es<br />
ein entsprechendes Dokument<br />
gibt (beziehungsweise die Funktion<br />
eines erhalten hat).<br />
[1] CouchDB: http:// couchdb. apache. org<br />
[2] Erlang: http:// de. wikipedia. org/ wiki/<br />
Erlang_%28Programmiersprache%29<br />
[3] JSON: http:// de. wikipedia. org/ wiki/<br />
JavaScript_Object_Notation<br />
info<br />
[4] REST-Schnittstelle: http:// de. wikipedia. org/<br />
wiki/ Representational_State_Transfer<br />
[5] cURL-Workshop: Falko Benthin, „Flexibles<br />
Werkzeug“, LU 06/2012, S. 78,<br />
http:// www. linux‐community. de/ 25773<br />
[6] UUID: http:// de. wikipedia. org/ wiki/ UUID<br />
[7] Couchbase: http:// www. couchbase. com<br />
Wie Listing 7 zeigt, müssen Sie<br />
die Funktion unter einem frei<br />
wählbaren Schlüsselwort (im Beispiel<br />
htmladr) im Design-Dokument<br />
unterhalb des Keys shows<br />
speichern. Hängen Sie im Browser<br />
an die URL die ID eines Dokumentes<br />
an, erhalten Sie als Ergebnis<br />
die <strong>Web</strong>seite (Abbildung E).<br />
Anfragen wie in Abbildung D<br />
produzieren zwar eine Liste von<br />
Ergebnissen, intern handelt es<br />
sich dabei aber nur um einen einzelnen<br />
Wert. Über die List-Funktion<br />
bereitet CouchDB diesen auf.<br />
Die einfache List-Funktion aus<br />
Listing 8 gibt die Anzahl der<br />
Schmidts in der Datenbank als<br />
HTML-Dokument aus, das Ergebnis<br />
erhalten Sie über die entsprechende<br />
URL (Abbildung F).<br />
Wenn Sie die <strong>Web</strong>seiten jetzt<br />
noch ein wenig mit CSS und Javascript<br />
garnieren, haben Sie eine<br />
vollständige <strong>Web</strong>-Anwendung –<br />
eine CouchApp. Sie brauchen<br />
dazu noch nicht einmal einen<br />
<strong>Web</strong>server. Das eingebaute Futon<br />
arbeitet übrigens nach dem exakt<br />
gleichen Prinzip.<br />
Fazit<br />
Neben den gezeigten Funktionen<br />
bietet CouchDB noch viele weitere,<br />
darunter natürlich das obligatorische<br />
Verwalten der Rechte.<br />
Die Datenbank erfordert jedoch<br />
ein radikales Umdenken. Insbesondere<br />
Umsteiger von SQL dürften<br />
sich nur langsam an das Map-<br />
Reduce-Konzept gewöhnen.<br />
Da es keine direkten Verknüpfungen<br />
mehr zwischen den Datensätzen<br />
gibt, ist es zudem in<br />
dokumentenorientierten Datenbanken<br />
durchaus üblich, Dokumente<br />
mehrfach zu speichern.<br />
Bei einer Bestellung könnte man<br />
beispielsweise die einzelnen Produkte<br />
noch einmal vollständig direkt<br />
im Datensatz zur Bestellung<br />
ablegen. Dadurch liegt jedes Produkt<br />
mehrfach in der Datenbank.<br />
Zusammen mit den älteren Versionen<br />
der Dokumente bläht sich<br />
der Bestand dann stetig auf.<br />
CouchDB eignet sich folglich<br />
nicht für alle Einsatzgebiete gleichermaßen.<br />
Ein Haupteinsatzfeld<br />
stellen zweifelsohne kompakte<br />
<strong>Web</strong>-Anwendungen dar, bei denen<br />
die Datenbank sogar einen<br />
kompletten <strong>Web</strong>server einspart.<br />
Damien Katz stieg übrigens Anfang<br />
2012 aus dem CouchDB<br />
Projekt aus und gründete Couchbase<br />
[7]. Das Unternehmen entwickelt<br />
eine Datenbank, die alle<br />
Vorteile der Konkurrenten Couch<br />
DB, Membase und Memcached<br />
vereinen möchte. (agr) n<br />
Listing 8<br />
{<br />
"_id": "_design/adressbuch",<br />
"views": {<br />
...<br />
},<br />
"lists": {<br />
"htmlschmidt": "function(head, req) {<br />
start({'headers': {'content‐type': 'text/html'}});<br />
send('Anzahl<br />
Schmidts');<br />
var row = getRow();<br />
send('Im Adressbuch sind: '+row.value+'<br />
Personen, die Schmidt heißen.');<br />
}"<br />
}<br />
}<br />
www.linux-user.de<br />
08 | 12 33
schwerpunkt<br />
Bluegriffon<br />
<strong>Web</strong>seiten erstellen mit Bluegriffon<br />
Blauer<br />
Greif<br />
README<br />
Bluegriffon 1.5.2,<br />
freie Addons<br />
und Dictionaries<br />
LU/bluegriffon/<br />
Bluegriffon ist ein freier<br />
HTML5-Editor mit CSS-<br />
Unterstützung, der sich<br />
mit (teilweise kostenpflichtigen)<br />
Addons erweitern<br />
lässt. <strong>LinuxUser</strong><br />
stellt diesen unscheinbaren<br />
Vertreter seiner<br />
Zunft vor.<br />
Glossar<br />
WYSIWYG: What you<br />
see is what you get. Ein<br />
Dokument erscheint<br />
während des Bearbeitens<br />
am Bildschirm so,<br />
wie es bei der Ausgabe<br />
später aussieht.<br />
W3C: World Wide <strong>Web</strong><br />
Consortium. Gremium<br />
für die Definition von<br />
<strong>Web</strong>standards wie<br />
HTML, XML, CSS, SVG<br />
und vieler mehr.<br />
Der erweiterbare HTML-Editor Bluegriffon<br />
basiert auf Mozillas bewährter<br />
Gecko-Engine, unterstützt bereits<br />
HTML5 und beherrscht WYSIWYG.<br />
Vincze-Aron Szabo<br />
Die meisten<br />
HTML-Editoren<br />
unter Linux<br />
unterstützen<br />
den Anwender<br />
optimal<br />
beim klassischen<br />
Editieren<br />
mit<br />
HTML, CSS<br />
und anderen<br />
<strong>Web</strong>-Technologien.<br />
Dieses<br />
Feld ist also<br />
hart umkämpft<br />
und<br />
bietet dennoch Platz für einen<br />
weiteren Vertreter seiner Zunft,<br />
der mindestens einen Mehrwert<br />
bietet: WYSIWYG. Sie sehen also<br />
bereits beim Erstellen der <strong>Web</strong>site<br />
das Resultat Ihrer Arbeit,<br />
ohne zusätzlich einen Browser<br />
öffnen zu müssen. Der vom Entwickler<br />
Daniel Glazman seit 2008<br />
betreute Bluegriffon [1] ist ein<br />
Nachfolger des Editors Nvu, der<br />
wiederum auf dem Mozilla Composer<br />
basiert. Der komplett neu<br />
programmierte Editor verwendet<br />
Mozillas HTML-Engine Gecko<br />
und wird seit seiner Erstveröffentlichung<br />
stetig weiterentwickelt.<br />
Bei der Anwendung selbst<br />
handelt es sich um Open-Source.<br />
Sie bietet die wesentlichen<br />
Grundfunktionen, die man zum<br />
Editieren von HTML braucht.<br />
Wichtige Zusatzfunktionen lassen<br />
sich durch allerdings größtenteils<br />
kostenpflichtige Addons ergänzen.<br />
Neben Linux unterstützt<br />
Bluegriffon Windows<br />
und Mac OS X, was ihn für Anwender<br />
interessant macht, die<br />
zwischen den Betriebsystemwelten<br />
hin und her pendeln.<br />
Den HTML- und CSS-Quellcode<br />
erstellen Sie mit Bluegriffon<br />
W3C-konform, wobei die Anwendung<br />
neben XHTML 1.0 und<br />
HTML 4 auch das neue HTML5<br />
und XHTML5 unterstützt. Auf<br />
der Seite der Cascading Stylesheets<br />
beherrscht Bluegriffon all<br />
jene Anteile von CSS3, die sich<br />
bereits in der Gecko-Engine finden.<br />
Daneben können Sie mit<br />
Bluegriffon SVG-Dateien bearbeiten.<br />
Das übernimmt der integrierte<br />
SVG-Editor SVG-Edit. Wie<br />
Sie die Software installieren, zeigt<br />
der Kasten Installation.<br />
Nachdem Sie Bluegriffon<br />
gestartet haben, begrüßt Sie<br />
eine aufgeräumte Oberfläche<br />
ohne viel Schnickschnack. Um<br />
mit der Arbeit zu beginnen, haben<br />
Sie mehrere Möglichkeiten.<br />
Mit [Strg]+[T] legen Sie ein leeres<br />
neues Dokument im selben Programmfenster<br />
an. Möchten Sie<br />
sich von der Anwendung ein paar<br />
Arbeitsschritte abnehmen lassen,<br />
dann klicken Sie in der Menüleiste<br />
auf Datei | Neu Assistent. Im<br />
sich nun öffnenden Assistenten<br />
legen Sie in wenigen Schritten<br />
den HTML-Typ fest, wie zum Beispiel<br />
HTML4 oder HTML5, und<br />
geben allgemeine Meta-Angaben<br />
zum Dokument ein.<br />
Darüber hinaus können Sie über<br />
diesen Assistenten bereits Grundlagen<br />
für das Layout der <strong>Web</strong>seite<br />
© #Natalia Lukiyanova, 123RF<br />
34 08 | 12<br />
www.linux-user.de
Bluegriffon<br />
schwerpunkt<br />
festlegen. So nehmen Sie beispielsweise<br />
Einstellungen für Farben<br />
und den Hintergrund vor<br />
und definieren ein CSS-Seitengrundlayout.<br />
Dazu finden Sie im<br />
letzten Dialog des integrierten<br />
Assistenten alle notwendigen Felder<br />
(Abbildung A).<br />
Nach Anhaken des Kontrollkästchens<br />
Vordefiniertes CSS-Layout<br />
anwenden legen Sie über Breite<br />
und Seitenleiste fest, wie groß der<br />
Inhaltsbereich beziehungsweise<br />
die Seitenleiste ausfallen sollen.<br />
Über neue Zeile können Sie den<br />
Inhaltsbereich weiter aufteilen,<br />
indem Sie zum Beispiel dafür ein<br />
Zwei-Spalten-Layout vorsehen.<br />
Ein mögliches Ergebnis zeigt Abbildung<br />
B. Mithilfe von Inhalt mit<br />
’lorem ipsum’ Platzhalter füllen erkennen<br />
Sie gleich nach Abschließen<br />
des Assistenten, was Bluegriffon<br />
aus Ihren Angaben zurechtgezaubert<br />
hat.<br />
Über die Symbolleiste und die<br />
Menüs erreichen Sie alle Funktionen,<br />
die Sie zum Erzeugen und<br />
Formatieren von Inhalten benötigen.<br />
Für das Einfügen von Tabellen<br />
und Links bietet die Software<br />
hilfreiche Unterstützung. Bei Tabellen<br />
geben Sie wie in einer Textverarbeitung<br />
mithilfe der Maus<br />
an, wie viele Spalten und Zeilen<br />
Sie gerne hätten. Für das Einfügen<br />
von Verknüpfungen steht ein<br />
Dialog zur Verfügung, in dem Sie<br />
alle erforderlichen Angaben wie<br />
Linktext, Ziel oder Zielfenster<br />
eingeben.<br />
Die Arbeit im Wechsel zwischen<br />
der WYSIWYG- und der Quelltext-Ansicht<br />
geht flott von der<br />
Hand. Über die entsprechend bezeichneten<br />
Buttons unterhalb des<br />
Arbeitsbereichs springen Sie zwischen<br />
diesen Ansichten hin und<br />
her. Sofern Sie mehrere Dokumente<br />
gleichzeitig geöffnet haben,<br />
können Sie diese über entsprechende<br />
Reiter unterhalb der<br />
Symbolleiste bequem in den Vordergrund<br />
holen und bearbeiten<br />
(Abbildung C, folgende Seite).<br />
Die WYSIWYG-Ansicht bietet<br />
den Vorteil, dass Sie gleich sehen,<br />
wie das Arbeitsergebnis aussieht,<br />
und gleichzeitig Inhalte editieren<br />
können. Dennoch sollten Sie zur<br />
Endkontrolle die Seite weiterhin<br />
in den Browsern Ihrer Wahl daraufhin<br />
überprüfen, ob die Darstellung<br />
tatsächlich so ausfällt<br />
wie gedacht.<br />
Eine Brotkrumen-Darstellung<br />
unterhalb des Arbeitsbereichs informiert<br />
Sie laufend darüber, an<br />
welchem Knoten im HTML-Code<br />
Sie gerade arbeiten. Sofern Sie an<br />
der Grundstruktur der geöffneten<br />
<strong>Web</strong>site schrauben möchten,<br />
empfiehlt es sich aber, in die<br />
Quelltext-Ansicht zu wechseln:<br />
Hier sehen Sie genau, was Sie tun,<br />
während es in der WYSIWYG-Ansicht<br />
schnell passiert, dass Sie etwas<br />
kaputt machen, was sich<br />
nicht so ohne Weiteres wieder reparieren<br />
lässt. Beim Wechsel in<br />
die jeweils andere Ansicht merkt<br />
sich Bluegriffon die Cursor-Position,<br />
sodass Sie bequem weiterarbeiten<br />
können, ohne die richtige<br />
Stelle suchen zu müssen.<br />
HTML5 und Tabellen<br />
Für die Arbeit mit HTML5 ist<br />
Bluegriffon schon gut vorbereitet.<br />
Im Menü Einfügen | HTML 5<br />
Element finden Sie passende Elemente,<br />
die Sie über den<br />
WYSIWYG-Editor einbinden.<br />
Zwar wurde HTML5 noch nicht<br />
abschließend vom W3C verabschiedet,<br />
doch die bereits defi-<br />
A Der Assistent für<br />
neue HTML-Dokumente<br />
ermöglicht mit<br />
wenigen Klicks das Erstellen<br />
von dreispaltigen<br />
Layouts.<br />
Installation<br />
Die notwendigen Pakete zu Bluegriffon erhalten Sie auf der Projekt-<strong>Web</strong>site<br />
[4]. Dort finden Sie sowohl Pakete für Ubuntu als<br />
auch für Fedora. Lassen Sie sich von den angegebenen gültigen<br />
Distributionsversionen nicht davon abhalten, diese Pakete auch<br />
in neueren Versionen des jeweiligen Betriebssystems einzusetzen.<br />
Außerdem steht dem Einsatz unter verwandten Systemen<br />
wie zum Beispiel Linux Mint im Normalfall nichts im Weg.<br />
Für jede der beiden Distributionen stehen zwei Versionen zur Verfügung:<br />
ein Installer und ein Tar-Archiv. Laden Sie der Einfachheit<br />
halber den Installer herunter, und machen Sie die Datei ausführbar<br />
(Listing 1, Zeile 1). Nun können Sie (mit Root-Rechten) den<br />
Installer ausführen (Zeile 2). Er führt Sie durch die Installationsprozedur;<br />
in den angezeigten Dialogen müssen Sie in der Regel<br />
keine Parameter mehr ändern.<br />
Listing 1<br />
B Dank des eingebauten Assistenten haben Sie ein solches HTML-CSS-<br />
Grundgerüst im Handumdrehen schnell erstellt.<br />
01 $ chmod +x BlueGriffon‐1.5.2‐Ubuntu11.10‐i686‐Install<br />
02 # ./BlueGriffon‐1.5.2‐Ubuntu11.10‐i686‐Install<br />
www.linux-user.de<br />
08 | 12 35
schwerpunkt<br />
Bluegriffon<br />
C Sie haben die Möglichkeit,<br />
im Quelltext<br />
und in der WYSIWYG-<br />
Ansicht zu editieren.<br />
D Sie können bequem<br />
IDs und Klassen definieren<br />
und diese später<br />
bei Bedarf weiteren<br />
Elementen zuweisen.<br />
nierten Elemente sind hier verfügbar<br />
– darunter auch solche<br />
zum differenzierteren Strukturieren<br />
von <strong>Web</strong>seiten, wie <br />
oder . Tabellen erstellen<br />
Sie mit Bluegriffon schnell. Positionieren<br />
Sie den Cursor an die<br />
Stelle, wo Sie eine einfügen wollen,<br />
und klicken Sie in der Menüleiste<br />
auf Tabelle | Extras. Sobald<br />
Sie die Anzahl der Zeilen und<br />
Spalten festgelegt haben, fügt der<br />
Editor das Element ein, und Sie<br />
können diese bearbeiten.<br />
Über Tabelle | Einfügen | Tabellenlegende<br />
geben Sie eine Tabellenüberschrift<br />
an, die dem<br />
HTML-Element entspricht.<br />
Die wesentlichen<br />
Tabellen eigenschaften bearbeiten<br />
Sie unter Tabelle | Tabelleneigenschaften.<br />
Der sich über diesen Menü-Eintrag<br />
öffnende Dialog ermöglicht<br />
das Anpassen von Zeilen-<br />
und Spaltenanzahl, Rahmen,<br />
Abständen, Breiten und Zelleneigenschaften.<br />
Natürlich können<br />
Sie CSS-Code direkt in den Editor<br />
eingeben – doch<br />
das ist natürlich<br />
nicht der Sinn<br />
eines solchen<br />
Editors. Für das<br />
Bearbeiten von<br />
CSS definieren<br />
Sie mithilfe des<br />
Dialogs CSS-Eigenschaften<br />
Stile,<br />
IDs und Klassen<br />
(Abbildung D).<br />
Dazu positionieren<br />
Sie den<br />
Cursor an der<br />
gewünschten<br />
Position auf der<br />
<strong>Web</strong>site und öffnen<br />
dann über<br />
den Button CSS Stil setzen die CSS<br />
Eigenschaften. Wählen Sie über<br />
die Auswahlliste Stile anwenden<br />
auf aus, ob Sie alle Elemente desselben<br />
Typs beziehungsweise alle<br />
Elemente einer bestimmten Klasse<br />
mit den CSS-Eigenschaften<br />
versehen wollen oder zusätzlich<br />
noch eine ID für das ausgewählte<br />
Element vergeben wollen. Nun<br />
tragen Sie in den darunter ausklappbaren<br />
Feldern die CSS-Eigenschaften<br />
ein.<br />
Für fortgeschrittene Anwender,<br />
denen diese schon recht ordentlichen<br />
CSS-Funktionen nicht ausreichen,<br />
bietet das Bluegriffon-<br />
Projekt die Erweiterung CSS Pro<br />
Editor an, die derzeit 9,99 Euro<br />
kostet [3]. Sie erleichtert die Arbeit<br />
mit CSS und ermöglicht eine<br />
bessere Kontrolle über bestimmte<br />
CSS3-Features wie zum Beispiel<br />
Schatten.<br />
Besondere Funktionen<br />
Als standardkonformer HTML-<br />
Editor unterstützt Bluegriffon<br />
auch den XML-Standard für SVG-<br />
Vektorgrafiken. Allerdings verfügt<br />
er dazu nicht über eigene<br />
Funktionen, sondern bindet die<br />
Anwendung SVG-Edit ein (Abbildung<br />
E). Sie starten SVG-Edit<br />
über das entsprechende Icon in<br />
der Symbolleiste, woraufhin die<br />
Anwendung ein Fenster öffnet.<br />
Über das Symbol in der Ecke oben<br />
links ändern Sie unter Document<br />
Properties die Anwendungssprache<br />
auf Deutsch. Unangenehmerweise<br />
geht diese Einstellung beim<br />
nächsten Start von SVG-Edit wieder<br />
verloren.<br />
Nun dürfen Sie zeichnen, was<br />
das Zeug hält. Auf der linken<br />
Fensterseite finden Sie verschiedene<br />
Werkzeuge für Linien, Formen<br />
und Text. SVG-Profis editieren<br />
nach einem Klick auf den Button<br />
mit dem Aufdruck SVG direkt<br />
im SVG-Quellcode. Die Größe des<br />
Gesamtbildes passen Sie über die<br />
bereits erwähnten Document Properties<br />
unter Dimension der Zeichenfläche<br />
an. Sofern Sie nicht<br />
den ganzen Arbeitsbereich aus-<br />
36 08 | 12<br />
www.linux-user.de
Bluegriffon<br />
schwerpunkt<br />
nutzen, sollten Sie die Zeichenfläche<br />
entsprechend<br />
verkleinern, weil SVG-Edit<br />
anderenfalls auch den gesamten<br />
Weißraum mit in<br />
die <strong>Web</strong>site übernimmt.<br />
Sobald Sie die Zeichnung<br />
fertiggestellt haben, übernehmen<br />
Sie diese über den<br />
Menüpunkt Bild speichern<br />
direkt an die momentane<br />
Cursorposition auf der<br />
<strong>Web</strong>site. Bluegriffon baut<br />
dann automatisch den<br />
notwendigen Quellcode<br />
ein – auch bei HTML4, wo<br />
sich SVG nur über Javascript<br />
integrieren lässt,<br />
während HTML5 das direkte<br />
Einbinden von SVG-<br />
Code erlaubt. Aus der<br />
WYSIWYG-Ansicht heraus<br />
können Sie die erstellte Grafik<br />
per Doppelklick erneut in SVG<br />
Edit bearbeiten.<br />
Eine besondere Hilfestellung<br />
beim Editieren von HTML bietet<br />
der DOM-Explorer, mit dem Sie<br />
in der Elementstruktur der<br />
HTML-Datei navigieren und<br />
ebenfalls kleine Veränderungen<br />
vornehmen. Bei umfangreichen<br />
HTML-Dateien können Sie auf<br />
diese Weise im Dokument arbeiten,<br />
ohne den ganzen Code betrachten<br />
zu müssen. Über die<br />
rechte Maustaste entfernen oder<br />
ändern Sie Elemente. Sie rufen<br />
den DOM-Explorer über Konsolen<br />
| DOM Explorer auf.<br />
Erweiterungen<br />
Schon in der Grundausstattung<br />
lässt sich Bluegriffon sehr gut<br />
nutzen. Darüber hinaus erweitern<br />
Sie den HTML-Editor mit<br />
größtenteils kostenpflichtigen<br />
Addons wie den bereits erwähnten<br />
CSS Pro Editor. Eine eigene<br />
<strong>Web</strong>site [3] bietet eine Übersicht<br />
aller erhältlichen Addons.<br />
Sie können diese einzeln erwerben<br />
oder nach dem Silver Offer [4]<br />
Ausschau halten: Dieses Addon-<br />
Paket kostet 35 Euro und enthält<br />
acht nützliche Erweiterungen. In<br />
diesem Paket fehlen aber wichtige<br />
Zusatzfunktionen wie zum Beispiel<br />
der Project Manager, der Ihnen<br />
hilft, die Übersicht über die<br />
Projekte zu wahren und deren lokale<br />
Dateien mit dem <strong>Web</strong>-Server<br />
per FTP synchron hält. Ein weiteres<br />
interessantes Feature bietet<br />
der Mobile Viewer, der Sie bei der<br />
Entwicklung von <strong>Web</strong>sites für<br />
mobile Endgeräte unterstützt.<br />
Haben Sie sich für den Kauf von<br />
Addons entschieden, legen Sie<br />
wie von anderen Online-Shops<br />
gewohnt die Ware in einen Einkaufswagen.<br />
Zum Bezahlen benötigen<br />
Sie einen Paypal-Account,<br />
andere Zahlungsmöglichkeiten<br />
bietet der Shop nicht an.<br />
Sieht man genau hin, finden<br />
sich aber auch kostenlose Ergänzungen<br />
für Bluegriffon im Angebot.<br />
Mit FireFTP erhalten Sie einen<br />
FTP-Client, der auf einfache<br />
Weise den Zugriff per FTP auf Ihren<br />
<strong>Web</strong>server erlaubt. Außerdem<br />
finden Sie unter Dictionaries verschiedene<br />
Wörterbücher für die<br />
Rechtschreibkontrolle.<br />
Fazit<br />
Insgesamt präsentiert sich Bluegriffon<br />
als rundum zufriedenstellender<br />
HTML-Editor mit zahlreichen<br />
nützlichen CSS-Funktionen,<br />
der es ermöglicht, W3C-konformen<br />
HTML-Quellcode für <strong>Web</strong>seiten<br />
zu erstellen. Wer gewohnt<br />
ist, klassisch im Quellcode zu editieren,<br />
der muss sich jedoch ein<br />
wenig umgewöhnen.<br />
Insbesondere Einsteiger oder<br />
Anwender, die nur gelegentlich<br />
HTML-Seiten erstellen, empfinden<br />
die WYSIWYG-Arbeitsweise<br />
jedoch als Arbeitserleichterung.<br />
Bereits die Kernanwendung eignet<br />
sich bestens für das gelegentliche<br />
Arbeiten mit HTML.<br />
Gegen die Tatsache, dass sich<br />
das Projekt aus den Addon-Verkäufen<br />
finanzieren will, spricht<br />
grundsätzlich nichts. Für ernsthafte<br />
Anwender läppern sich die<br />
die Kosten für Addons aber recht<br />
schnell zu erklecklichen Geldbeträgen<br />
zusammen.<br />
Wer klug ist, spart mit dem Angebot<br />
Silver Offer: Es enthält zusätzlich<br />
den CSS Pro Editor, der<br />
die ernsthafte Arbeit mit komplexem<br />
CSS-Code erst so richtig<br />
komfortabel macht. (jlu) n<br />
info<br />
[1] Bluegriffon: http:// www. bluegriffon. org<br />
[2] Addons: http:// www. bluegriffon. com<br />
[3] Silver Offer: http:// www. bluegriffon. com/<br />
index. php? pages/ SILVER‐OFFER<br />
[4] Download:<br />
http:// bluegriffon. org/ pages/ Download<br />
E Mit dem integrierten<br />
SVG-Editor betten Sie<br />
auf Knopfdruck eigene<br />
Vektorzeichnungen in<br />
Bluegriffon ein.<br />
www.linux-user.de<br />
08 | 12 37
schwerpunkt<br />
Nginx<br />
Die russische Alternative zum Apache-<strong>Web</strong>server<br />
Auf der Überholspur<br />
© Misha, Fotolia<br />
Schlank, schnell, vielseitig und einfach zu konfigurieren: Nginx bringt alles mit, was man sich von einem modernen<br />
<strong>Web</strong>server wünscht. Kein Wunder, dass das pfiffige Multitalent immer weiter zu Apache aufholt. Falko Benthin<br />
README<br />
Mit Nginx macht dem<br />
Apache ein leistungsfähiger<br />
<strong>Web</strong>server Konkurrenz,<br />
der sich zu<br />
Recht immer größerer<br />
Beliebtheit erfreut. Als<br />
eventbasierter Server<br />
kommt er mit wenigen<br />
Prozessen aus und verbraucht<br />
kaum System-<br />
Ressourcen, was ihn<br />
auch zu einem Kandidaten<br />
für betagte oder<br />
weniger gut ausgebaute<br />
Rechner macht.<br />
Zwar dominiert Apache mit<br />
Marktanteilen von über 60 Prozent<br />
noch immer den <strong>Web</strong>server-<br />
Markt, doch seit knapp vier Jahren<br />
schickt sich mit Nginx [1]<br />
eine feine, schnelle Alternative<br />
an, dem Marktführer Anteile abzuluchsen.<br />
Im Juni 2012 wurden<br />
laut der Netcraft <strong>Web</strong> Server Survey<br />
[2] weltweit bereits über<br />
zehn Prozent der <strong>Web</strong>seiten von<br />
Nginx ausgeliefert – ein grandioser<br />
Aufstieg, wenn man bedenkt,<br />
dass der aus Russland stammende<br />
<strong>Web</strong>server bis vor Kurzem<br />
noch ziemlich unbekannt war.<br />
Nginx wurde bereits 2002 von<br />
dem Russen Igor Sysoev entwickelt.<br />
Ursprünglich war er dafür<br />
gedacht, die <strong>Web</strong>seiten von Rambler.ru<br />
auszuliefern. Das tat der<br />
unter einer BSD-Lizenz stehende<br />
Server dann auch mit beeindruckender<br />
Leistung. Neben der Performance<br />
punktet Nginx auch, indem<br />
er sich modular einsetzen<br />
sowie leicht konfigurieren lässt<br />
und durch geringen Ressourcenverbrauch<br />
glänzt. Der <strong>Web</strong>server<br />
kann Anfragen nicht nur direkt<br />
beantworten, sondern auch als<br />
Reverse-Proxy für seine Kollegen<br />
dienen, etwa für Apache.<br />
Schnell installiert<br />
Nginx liegt in den Repositories<br />
aller gängigen Distributionen. Die<br />
Installation solcher fertig geschnürter<br />
Pakete ist zwar zweifelsohne<br />
bequem, bietet aber<br />
nicht immer das Bestmögliche:<br />
Anders als bei Apache gilt es die<br />
zu verwendenden Module und<br />
Funktionen bei Nginx schon beim<br />
Übersetzen des Quellcodes anzugeben,<br />
denn sie werden direkt<br />
beim Kompilieren integriert. Verwenden<br />
Sie Binärpakete einer<br />
Distribution, entlocken Sie Nginx<br />
mit nginx ‐V die beim Übersetzen<br />
berücksichtigten Module.<br />
Spätestens, wenn ein Modul<br />
fehlt, das Paket zu viele unnötige<br />
Komponenten als Ballast mitschleppt<br />
oder Nginx topaktuell<br />
sein soll, lohnt es sich, den <strong>Web</strong>server<br />
aus den Quellen zu übersetzen.<br />
Nachdem Sie die Quellen<br />
[3] der derzeit neuesten Version<br />
1.2.1 heruntergeladen haben,<br />
entpacken Sie diese mit tar ‐xzf<br />
nginx‐1.2.1.tar.gz und wechseln<br />
in das neu entstandene Verzeichnis.<br />
Die Installation erfolgt mittels<br />
./configure, make und (als root)<br />
make install.<br />
Mit ./configure ‐‐help erhalten<br />
Sie eine Übersicht aller möglichen<br />
Optionen für Configure. So prüfen<br />
Sie beispielsweise, ob die Konfiguration<br />
alle gewünschten Module<br />
integriert respektive die<br />
38 08 | 12<br />
www.linux-user.de
Nginx<br />
schwerpunkt<br />
unerwünschten außen vor lässt:<br />
Standardmäßig sind beispielsweise<br />
das SSL-Modul oder IPv6-Unterstützung<br />
deaktiviert. Außerdem<br />
können Sie mithilfe bestimmter<br />
Optionen von der Standardkonfiguration<br />
abweichende<br />
Pfade setzen. Neben den Core-<br />
Modulen existieren noch viele<br />
Module von Drittanbietern [4],<br />
die die Software zwar nicht offiziell<br />
unterstützt, die aber die Funktionalität<br />
des schnellen <strong>Web</strong>servers<br />
stark ausbauen.<br />
Standardmäßig landet Nginx im<br />
Verzeichnis /usr/local/nginx/.<br />
Dort lagern dann sowohl die ausführbaren<br />
Binaries als auch die<br />
Konfigurations- und Protokolldateien.<br />
In vielen Fällen residiert jedoch<br />
/usr/local/ auf der Root-Partition.<br />
Wenn diese aufgrund vieler<br />
temporärer Dateien zuläuft,<br />
und sich das System instabil verhält,<br />
liegt es nicht unbedingt auf<br />
der Hand, auf /usr/local/nginx/ als<br />
mögliche Quelle des aktuellen<br />
Übels zu kommen.<br />
Daher ist Konfiguration in der<br />
Regel in /etc/ beziehungsweise<br />
Protokolle in /var/log/ besser aufgehoben.<br />
Das regeln Sie entweder<br />
über die Schalter ‐‐conf‐path=Pfad,<br />
‐‐error‐log‐path=Pfad sowie über<br />
‐‐http‐log‐path=Pfad oder später<br />
über symbolische Links. Das Gleiche<br />
gilt für temporäre Dateien<br />
(‐‐http‐client‐body‐temp‐path und<br />
‐‐http‐fastcgi‐temp‐path), die Sie<br />
auf /tmp/ zeigen lassen sollten.<br />
Um zu prüfen, ob die Installation<br />
geklappt hat, hilft ein /usr/<br />
local/nginx/sbin/nginx ‐v ‐t.<br />
Spuckt Nginx daraufhin die Versionsnummer<br />
und einen positiven<br />
Bescheid über einen erfolgreichen<br />
Selbsttest aus, steht dem Start<br />
des Servers nichts mehr im Wege.<br />
Indem Sie Nginx aus den Quellen<br />
installieren, erhalten Sie zwar<br />
einen taufrischen <strong>Web</strong>browser,<br />
aber es fehlt das Startskript, mit<br />
dem sich der Server bequem beim<br />
Rechnerstart in Stellung bringen,<br />
neu starten, neu laden oder beenden<br />
lässt. Auf der Heft-DVD sowie<br />
als Download finden Sie ein<br />
entsprechendes Skript für Debian<br />
und Ubuntu [5], das Sie unter<br />
/ etc/init.d als nginx ablegen.<br />
A Die schematische Struktur der<br />
HTTP-Konfiguration von Nginx.<br />
Rasant einrichten<br />
Nginx ist fast ebenso schnell eingerichtet,<br />
wie Sie es installiert haben.<br />
In der Konfigurationsdatei<br />
(beziehungsweise den Dateien,<br />
wenn die Konfiguration einzelner<br />
Server separat erfolgen soll) gilt<br />
es in der Regel, nur noch wenige<br />
Änderungen vorzunehmen. Die<br />
wichtigste Konfigurationsdatei,<br />
nginx.conf, liegt – sofern Sie bei<br />
der Installation keinen anderen<br />
Pfad gesetzt haben – unter /usr/<br />
local/nginx/conf/. Stammt Nginx<br />
aus dem Distributionsfundus,<br />
findet sie sich möglicherweise<br />
auch unter /etc/nginx/.<br />
Sie konfigurieren den <strong>Web</strong>server<br />
in drei oder vier (mit Mailproxy)<br />
Modulen: main, events, http<br />
und mail. Bis auf das Main-Modul<br />
stehen alle Modul-Konfigurationen<br />
als sogenannte Blöcke innerhalb<br />
geschweifter Klammern,<br />
Strichpunkte schließen die einzelnen<br />
Anweisungen ab. Es gibt<br />
auch noch ein Konfigurationsmodul,<br />
das aber nichts weiter tut, als<br />
sich um das Einbinden externer<br />
Dateien zu kümmern, wodurch<br />
sich die Konfiguration aufteilen<br />
und damit übersichtlicher gestalten<br />
lässt.<br />
Nginx besteht aus einer einzigen<br />
Binärdatei. Der Server startet,<br />
sofern nicht anders gewünscht,<br />
einen Masterprozess<br />
mit Root-Rechten als Daemon.<br />
Dieser schickt anschließend eine<br />
Reihe Worker-Prozesse unter anderen<br />
Nutzer- und Gruppenrechten<br />
(gewöhnlich www oder wwwdata)<br />
ins Rennen, welche die anfragenden<br />
HTTP-Clients bedienen.<br />
Hier bietet es sich an, pro<br />
CPU-Kern einen Worker-Prozess<br />
zu starten. Die zugehörigen Parameter<br />
daemon, user und worker_processes<br />
gehören zu den wichtigsten<br />
Anweisungen im Main-Modul.<br />
In den Anweisungen für das<br />
Events-Modul legen Sie fest, wie<br />
viele gleichzeitige Verbindungen<br />
ein Worker bearbeitet, welches<br />
Ereignis-Modell er dazu nutzt<br />
oder ob Nginx alle eingehenden<br />
Verbindungen auf einmal akzeptiert.<br />
Mit der Anzahl der gleichzeitigen<br />
Verbindungen sollten Sie<br />
experimentieren: Liegt der angegebene<br />
Wert zu niedrig, lehnt der<br />
Server eventuell Anfragen ab, ist<br />
er zu hoch, kann das System abstürzen.<br />
Listing 1 zeigt eine kommentierte<br />
Beispielkonfiguration<br />
für die Module Main und Events.<br />
Listing 1<br />
# /etc/nginx/nginx.conf<br />
# als Daemon laufen<br />
daemon on;<br />
# User, der Worker‐Prozess<br />
ausfuehrt<br />
user www‐data www‐data;<br />
# Anzahl Worker‐Prozesse, einer<br />
pro CPU‐Core<br />
worker_processes 4;<br />
events {<br />
# Anzahl simultaner<br />
Verbindungen<br />
worker_connections 1024;<br />
use epoll;<br />
}<br />
Nginx 1.2.1,<br />
Memcached 1.4.13<br />
LU/nginx/<br />
www.linux-user.de<br />
08 | 12 39
schwerpunkt<br />
Nginx<br />
Listing 2<br />
Als letztes wichtiges und umfangreichstes<br />
Modul vor einem ersten<br />
Test gilt es das HTTP-Modul einzurichten.<br />
Es gliedert sich in die<br />
Blöcke http, server und location<br />
(Abbildung A, vorherige Seite).<br />
Angaben im Block http bestimmen<br />
die HTTP-Eigenschaften. Sie<br />
wirken sich auf alle server-Blöcke<br />
aus, die jeweils einen virtuellen<br />
Host des <strong>Web</strong>servers definieren.<br />
Die innerhalb der server-Direktiven<br />
stehenden location-Blöcke beeinflussen<br />
nur einzelne Verzeichnisse.<br />
Auch wenn Nginx mehrere<br />
http-Blöcke erlaubt, sollten Sie<br />
sich auf einen beschränken: Dadurch<br />
halten Sie einerseits die<br />
Konfigurationsdatei lesbarer, andererseits<br />
wird verhindert, dass<br />
Sie Anweisungen versehentlich<br />
überschreiben und so die Fehlersuche<br />
erschweren.<br />
Viele HTTP-Direktiven sind bereits<br />
mit sinnvollen Werten vorbelegt.<br />
Zu den Anpassungen, die<br />
für alle virtuellen Hosts (V-Hosts)<br />
gelten sollen, zählen wahrscheinlich<br />
die Werte für Timeouts, das<br />
Caching und die Gzip-Komprimierung<br />
auszuliefernder <strong>Web</strong>seiten.<br />
Kürzere Timeouts als die<br />
gängigen 60 bis 75 Sekunden bieten<br />
sich beispielsweise bei hochfrequentierten<br />
<strong>Web</strong>seiten an, die<br />
wenig Nutzer-Interaktionen erfordern.<br />
Clientseitiges Caching<br />
eignet sich ideal für Seiten, die<br />
sich selten ändern. Die Gzip-<br />
Komprimierung lässt sich auf bestimmte<br />
Dateitypen beschränken.<br />
http {<br />
include mime.types;<br />
default_type application/octet‐stream;<br />
sendfile on;<br />
keepalive_timeout 30;<br />
gzip on;<br />
gzip_comp_level 5;<br />
gzip_proxied any;<br />
gzip_types text/css text/javascript text/xml text/<br />
plain application/xml application/xhtml+xml application/<br />
x‐httpd‐php application/x‐httpd‐fastphp application/<br />
rss+xml application/javascript application/x‐javascript ;<br />
log_not_found off;<br />
include sites‐enabled/*;<br />
}<br />
Bei bereits komprimierten Dateien<br />
(typischerweise etwa Grafiken<br />
oder MP3s) würde eine wiederholte<br />
Kompression nur Rechenzeit<br />
kosten, ohne nennenswerte<br />
Vorteile zu bringen.<br />
Ein Beispiel für globale http-Direktiven<br />
zeigt Listing 2. Es integriert<br />
die Datei mime.types, nach deren<br />
Vorgaben Nginx verschiedene<br />
Dateitypen unterschiedlich behandelt.<br />
Erkennt der Server einen<br />
Typ nicht, liefert er die Datei als<br />
application/octet‐stream aus. Mit<br />
sendfile on halst Nginx die Verwaltung<br />
der Datei-Übertragungen<br />
dem Kernel auf. Der Server setzt<br />
Keep-Alive-Verbindungen schon<br />
nach 30 anstelle der standardmäßigen<br />
60 Sekunden zurück.<br />
Bei der Gzip-Komprimierung<br />
wurde zwischen schneller, aber<br />
schlechter Kompression (1) und<br />
bester, aber zeitaufwendiger<br />
Kompression (9) die goldene Mitte<br />
gewählt. Die Kompression<br />
greift auch dann, wenn die HTTP-<br />
Anfrage über einen Proxy abgesetzt<br />
wurde. Zudem komprimiert<br />
der Server neben text/html auch<br />
weitere textlastige Dateitypen,<br />
während Grafiken und Audio-Dateien<br />
außen vor bleiben. log_not_<br />
found off; verhindert, dass Nginx<br />
jede Anfrage nach einer nicht vorhandenen<br />
Datei zeit- und platzraubend<br />
protokolliert. Diese Anweisung<br />
gilt nicht nur für fehlende<br />
<strong>Web</strong>seiten, sondern auch für<br />
die gern und oft vergessenen Dateien<br />
robots.txt und favicon.ico.<br />
Jetzt kann es an die virtuellen<br />
Hosts gehen. Listing 3 zeigt eine<br />
sehr einfache server-Direktive:<br />
Nginx lauscht auf Port 80 und<br />
schaut, sobald eine Anfrage eingeht,<br />
im Verzeichnis /var/www/<br />
nach, ob er sie bedienen kann. Im<br />
Zweifelsfall liefert er die index.<br />
Listing 3<br />
server {<br />
listen 80;<br />
server_name localhost;<br />
root /var/www;<br />
index index.html index.htm;<br />
}<br />
htm(l) aus, sofern es eine solche<br />
gibt. Es bietet sich an, für jede<br />
gehostete Domain eine eigene<br />
Konfigurationsdatei anzulegen<br />
und diese dann einzubinden<br />
(siehe vorletzte Zeile in Listing<br />
2). Die beim Apache gern geübte<br />
Praxis, V-Hosts im Verzeichnis<br />
sites‐available/ einzurichten<br />
und dann über einen Softlink ins<br />
Verzeichnis sites‐enabled/ zu verlinken,<br />
funktioniert ebenfalls mit<br />
Nginx sehr gut.<br />
Mit der bis hierhin erstellten,<br />
einfachen Konfiguration können<br />
Sie Nginx über den Befehl usr/<br />
local/nginx/sbin/nginx ‐t prüfen<br />
lassen, ob er die getätigten Einstellungen<br />
klaglos akzeptiert.<br />
Treten keine Fehler auf, starten<br />
Sie den Server anschließend mit<br />
/ etc/init.d/nginx start. Sobald Sie<br />
im Browser http:// localhost/ aufrufen,<br />
sollte Nginx die index.html<br />
auf den Schirm holen.<br />
PHP, Caching und Denies<br />
Etwas komplizierter, aber auch<br />
realitätsnäher gibt sich Listing 4.<br />
Hier kommen auch Caching für<br />
statische Dateien, PHP sowie<br />
Rewrite-Regeln ins Spiel.<br />
Um in Scriptsprachen wie PHP,<br />
Python oder Perl implementierte<br />
dynamische Seiten auszuliefern,<br />
greift Nginx auf FastCGI zurück.<br />
Im Zusammenspiel mit PHP hat<br />
sich dazu in der Vergangenheit<br />
PHP-FPM [6] etabliert. In Listing<br />
4 übergibt Nginx die Verarbeitung<br />
von PHP an den FastCGI-<br />
Process-Manager, der auf einem<br />
Unix-Socket lauscht. Bei derartigen<br />
Lösungen gilt es darauf zu<br />
achten, dass entsprechende PHP-<br />
Instanzen beim Serverstart geladen<br />
werden. Falls Sie PHP-FPM<br />
aus dem Repository der Linux-<br />
Distribution installiert haben,<br />
sollten die zugehörigen<br />
Startskripte bereits eingerichtet<br />
sein; anderenfalls fällt ein wenig<br />
Nacharbeit an.<br />
Die location-Blöcke ermöglichen<br />
es Nginx, ausgewählte Dateien<br />
und Verzeichnisse speziell zu behandeln.<br />
Anstelle einfacher Ver-<br />
40 08 | 12<br />
www.linux-user.de
Nginx<br />
schwerpunkt<br />
zeichnisangaben lassen sich auch<br />
komplexe Muster verwenden, die<br />
Nginx dann nur auf wenige Dateien<br />
anwendet. Über einen Location-Modifikator<br />
(siehe Tabelle<br />
Location-Modifikatoren) teilen<br />
Sie dem Server mit, wie er das folgende<br />
Muster zu behandeln hat.<br />
So gilt zum Beispiel location ~* \.<br />
php$ für alle Dateien, die auf .php,<br />
.PHP, .pHp, … enden.<br />
Im Beispiel aus Listing 4 animiert<br />
Nginx die Browser, statische<br />
Inhalte wie Bilder, CSS- und<br />
Javascript-Dateien solange wie<br />
möglich im Browser-Cache zu halten.<br />
Dadurch verringern sich bei<br />
wiederholten Seitenbesuchen des<br />
Clients Datenvolumen und Ladezeiten.<br />
Ein weiteres, für die Praxis<br />
wichtiges Beispiel ist der Block<br />
location ~ /include/*: Er legt fest,<br />
dass Clients keine im Verzeichnis<br />
/include/ abgelegten Dateien laden<br />
dürfen. Versuchen Sie es<br />
dann trotzdem, speist der <strong>Web</strong>server<br />
Sie rundweg mit einem<br />
Fehler 404 (Not Found) ab.<br />
Modifikator<br />
kein Modifikator<br />
Beschreibung<br />
Rewrites<br />
Viele dynamische <strong>Web</strong>seiten verwenden<br />
kryptische URIs wie etwa<br />
http://www.site.de/?dir=foo&file=ba<br />
r&comment=baz. Sie sehen nicht nur<br />
gruselig aus und sind schlecht zu<br />
merken, sondern wirken sich<br />
auch ungünstig auf die Suchmaschinenoptimierung<br />
aus. Hier<br />
helfen Rewrite-Regeln, die hässlichen<br />
URIs zu verschönern. Um<br />
die obige URI in die lesefreundlichere<br />
Form http://www.Site.de/<br />
foo/bar/baz zu bringen, verwenden<br />
Sie die Anweisung<br />
rewrite ^/(.*)/(.*)/(.*)$ /?dir=U<br />
$1&file=$2&comment=$3;<br />
Hier verkörpern die regulären<br />
Ausdrücke (.*) jeweils einen Parameter<br />
und werden mit $1, $2, $3<br />
verarbeitet. Ähnliche Regeln helfen<br />
dabei, Besucher restrukturierter<br />
<strong>Web</strong>seiten an die richtige Stelle<br />
weiterzuleiten, statt sie mit einer<br />
Fehlermeldung zu vergraulen.<br />
Nehmen wir an, Sie haben die Seite<br />
/robinhood.php in das Verzeichnis<br />
/sherwood/ verschoben: Dann<br />
sorgt die Rewrite-Regel<br />
rewrite ^/robinhood.php$ /sherwoU<br />
od/robinhood.php permanent;<br />
dafür, dass Besucher die Seite<br />
über Lesezeichen und Suchmaschinen<br />
weiterhin erreichen und<br />
beim nächsten Besuch via HTTP-<br />
Statuscode 301 (Moved Permanently)<br />
erfahren, dass Sie die Seite<br />
dauerhaft verschoben haben.<br />
Lassen Sie dagegen das permanent<br />
weg, liefert Nginx den Statuscode<br />
302 (Found) aus, was signalisiert,<br />
dass Sie die Seite nur temporär<br />
verschoben haben und daher<br />
Lesezeichen sowie indizierte URIs<br />
weiter gelten.<br />
Neben den Parametern in der<br />
URI kann Nginx für die Rewrites<br />
auch verschiedene Variablen [7]<br />
auswerten, beispielsweise Werte<br />
Location-Modifikatoren<br />
Die URI (einfacher String) muss mit dem vorgegebenen Muster<br />
beginnen.<br />
= Die URI (einfacher String) muss dem Muster genau entsprechen.<br />
~ Nginx behandelt den folgenden regulären Ausdruck schreibweisenabhängig<br />
(case-sensitive).<br />
~* Nginx behandelt den folgenden regulären Ausdruck schreibweisenunabhängig<br />
(case-insensitive).<br />
^<br />
Die URI muss mit dem folgenden Muster beginnen. Sobald ein<br />
Treffer gelandet wurde, hört Nginx auf, nach weiteren Mustern<br />
zu suchen.<br />
@<br />
Ein benannter Location-Block, der intern von Nginx aufgerufen<br />
wird, aber für Clients nicht erreichbar ist.<br />
in GET-Anfragen ($arg_PARAMETER),<br />
den HTTP-User-Agent ($http_<br />
user_agent) oder den Referer<br />
($http_referer). Durch Auswerten<br />
des HTTP-User-Agents biegen Sie<br />
unter anderem Anfragen von<br />
Smartphones auf mobile Seiten<br />
um (siehe Listing 5 auf der folgenden<br />
Seite).<br />
Pimp my Nginx<br />
Nginx ist von Natur aus schon<br />
sehr leistungsstark. Möchten Sie<br />
dem Server zu noch mehr Geschwindigkeit<br />
verhelfen, erledigen<br />
Sie das mit zusätzlichen<br />
Werkzeugen wie Memcached [8].<br />
Dabei handelt es sich um ein skalierbares,<br />
verteiltes Memory-Object-Caching-System<br />
für dynamische<br />
<strong>Web</strong>seiten, das nach dem<br />
Key-Value-Prinzip arbeitet. Der<br />
Vorteil von Memcached: Es hält<br />
dynamisch erzeugte <strong>Web</strong>seiten<br />
im Hauptspeicher vor. Statt bei<br />
einer Anfrage erneut eine Seite zu<br />
generieren, greift Nginx auf die<br />
gepufferte Page zurück und liefert<br />
die Seite so um ein Vielfaches<br />
schneller aus. Auf den meisten<br />
Systemen müssen Sie Memcached<br />
server {<br />
listen 80;<br />
server_name meine_domain.de;<br />
root /var/www/meine_domain.de/;<br />
index index.php;<br />
location / {<br />
if !‐e $request_filename) {<br />
rewrite ^ /index.php last;<br />
}<br />
}<br />
location ~* \.php$ {<br />
fastcgi_pass unix:/tmp/php.socket;<br />
fastcgi_param SCRIPT_FILENAME /var/www/meine_<br />
domain$fastcgi_script_name;<br />
fastcgi_param PATH_INFO $fastcgi_script_name;<br />
include fastcgi_params;<br />
}<br />
# Caching<br />
location ~* (css|js|png|jpe?g|gif|ico)$ {<br />
expires max;<br />
}<br />
location ~ /include/* {<br />
deny all;<br />
return 404;<br />
}<br />
}<br />
Listing 4<br />
www.linux-user.de<br />
08 | 12 41
schwerpunkt<br />
Nginx<br />
tipp<br />
erst noch aus dem Repository der<br />
Distribution installieren oder aus<br />
den Quellen übersetzen. Anschließend<br />
ergänzen Sie den<br />
Block location ~* \.php$ des zu<br />
puffernden V-Hosts um die Zeilen<br />
aus Listing 6. Sie legen fest,<br />
dass die angefragte URI als Memcached-Key<br />
dient. Generiert der<br />
Server die Seiten auf Basis von<br />
GET-Parametern, ersetzen Sie<br />
$uri durch $request_uri. Die Direktive<br />
memcached_pass gibt an, wo der<br />
Memcached-Server zu finden ist.<br />
Wie schon bei PHP-FPM kommt<br />
auch hier wieder ein Unix-Socket<br />
zum Einsatz. Das hat den Vorteil,<br />
dass kein TCP-Overhead anfällt<br />
und kein Server-Port geöffnet<br />
wird. Der Nachteil: Memcached<br />
muss dazu auf demselben Rechner<br />
laufen.<br />
Ordentlich Dampf<br />
Da Memcached Key-Value-basiert<br />
arbeitet und nicht weiß, welche<br />
Art Value es ausliefert, dient hier<br />
text/html als Default-Typ. Behalten<br />
Sie stattdessen den von Nginx<br />
als Standard voreingestellten<br />
Wert application/octet‐stream bei,<br />
werden die von Memcached gelieferten<br />
Daten wie ein Download<br />
behandelt – was meist nicht im<br />
Sinne des <strong>Web</strong>masters sein dürfte.<br />
Hat Memcached einen Eintrag<br />
mit passenden Schlüssel gespeichert<br />
und den zugehörigen Wert<br />
ausgeliefert, gibt es einen Statuscode<br />
200 (OK) an Nginx weiter.<br />
Existiert kein Key-Value-Paar, resultiert<br />
daraus der Statuscode<br />
404 (Not Found). In dem Fall soll<br />
Nginx in den Block location @not_<br />
cached springen, der die im ursprünglichen<br />
Block ~* \.php$ vorhandenen<br />
Anweisungen für den<br />
Um zu prüfen, ob Memcached Nginx tatsächlich Feuer unter dem<br />
Hintern macht, nehmen Sie am besten ein Lasttest-Werkzeug zuhilfe.<br />
Zu den geeigneten Kandidaten zählen etwa Apache JMeter,<br />
Open<strong>Web</strong>Load, Http_load oder Httperf. Letzteres ist ein kleines,<br />
einfach zu bedienendes Kommandozeilenwerkzeug aus den HP<br />
Research Labs, das für einen schnellen Test meist reicht [12].<br />
Möchten Sie Ihre Installation mit aufwendigeren Testszenarien<br />
konfrontieren, greifen Sie stattdessen zu Apache JMeter [13].<br />
FastCGI-PHP-Handler enthält.<br />
Für einen separaten Memcached-<br />
Server müssen Sie den Unix-Socket<br />
durch die entsprechende<br />
Server:Port-Kombination ersetzen.<br />
Sind gar mehrere Server verfügbar,<br />
leistet das Upstream-Modul<br />
[9] wertvolle Dienste wie etwa<br />
ein Load-Balancing (Listing 7).<br />
Falls Sie von der Option Gebrauch<br />
machen möchten, tragen Sie hinter<br />
memcached_pass einfach den Namen<br />
der Upstream-Konfiguration<br />
ein.<br />
Das standardmäßig in Nginx<br />
enthaltene Memcached-Modul<br />
hat den Nachteil, dass es keine<br />
Key-Value-Paare an Memcached<br />
übergeben kann und so darauf<br />
angewiesen ist, dass die Anwendungen<br />
oder ein Skript den Cache<br />
füllen. Steht weder das eine noch<br />
das andere bereit, lohnt sich ein<br />
Blick auf das NginxHttpMemc-<br />
Module [10] oder das Enhanced<br />
Nginx Memcached Module [11].<br />
Listing 5<br />
location / {<br />
if ($http_user_agent ~*<br />
'(Android|iPhone|BlackBerry)') {<br />
set $mob_request '1';<br />
}<br />
if ($mob_request = '1') {<br />
rewrite ^.+ http://mobil.<br />
meine_domain.de/$uri;<br />
}<br />
}<br />
Listing 6<br />
set $memcached_key $uri;<br />
memcached_pass unix:/tmp/<br />
memcached.socket;<br />
default_type text/html;<br />
error_page 404 = @not_cached<br />
#127.0.0.1:11211;<br />
Listing 7<br />
upstream memcached_cluster {<br />
server ip_memcached_1:11211;<br />
server ip_memcached_2:11211;<br />
server ip_memcached_3:11211;<br />
}<br />
Fazit<br />
Nginx lässt sich dank seines modularen<br />
Aufbaus für viele Einsatzszenarien<br />
optimieren. Die Konfiguration<br />
gestaltet sich einfach<br />
und übersichtlich. Eine gute Dokumentation<br />
und ein umfangreiches<br />
Wiki kompensieren den<br />
Mangel an Fachbüchern zu dem<br />
russischen <strong>Web</strong>server. Um das<br />
Maximale aus Nginx herauszuholen,<br />
sollten Sie mit den Optionen<br />
experimentieren. Sollen dynamische<br />
Skriptsprachen zum Einsatz<br />
kommen, müssen Sie diese in die<br />
Experimente miteinbeziehen.<br />
Mit Nginx macht dem Apache<br />
ein leistungsfähiger <strong>Web</strong>server<br />
Konkurrenz, der sich zu Recht<br />
immer größerer Beliebtheit erfreut.<br />
Als eventbasierter Server<br />
kommt er mit wenigen Prozessen<br />
aus und verbraucht aus diesem<br />
Grund kaum System-Ressourcen,<br />
was ihn ebenfalls zu einem Kandidaten<br />
für betagte oder weniger<br />
gut ausgebaute Rechner macht.<br />
Er lässt sich einerseits dazu nutzen,<br />
um auf dem Server liegende<br />
Seiten direkt auszuliefern, andererseits<br />
kann er auch als Reverse-<br />
Proxy für bereits existierende<br />
<strong>Web</strong>server wie beispielsweise<br />
Apache Httpd, Tomcat oder Tornado<br />
fungieren. (jlu) n<br />
info<br />
[1] Nginx: http:// www. nginx. org<br />
[2] Netcraft <strong>Web</strong> Server Survey:<br />
http:// news. netcraft. com/ archives/ 2012/<br />
06/ 06/ june‐2012‐web‐server‐survey. html<br />
[3] Nginx-Download:<br />
http:// www. nginx. org/ en/ download. html<br />
[4] Module von Drittanbietern:<br />
http:// wiki. nginx. org/ 3rdPartyModules<br />
[5] Nginx-Init-Skript: http:// www. linux‐user. de/<br />
Downloads/ 2012/ 08/<br />
[6] PHP-FPM: http:// php‐fpm. org<br />
[7] Nginx-Variablen: http:// wiki. nginx. org/<br />
HttpCoreModule# Variables<br />
[8] Memcached: http:// memcached. org<br />
[9] HttpUpstreamModule:<br />
http:// wiki. nginx. org/ HttpUpstreamModule<br />
[10] NginxHttpMemcModule: http:// wiki. nginx.<br />
org/ NginxHttpMemcModule<br />
[11] Enhanced Nginx Memached Module:<br />
https:// github. com/ bpaquet/ ngx_http_enhanced_memcached_module<br />
[12] Httperf: http:// www. hpl. hp. com/ research/<br />
linux/ httperf/<br />
[13] Apache JMeter: http:// jmeter. apache. org/<br />
42 08 | 12<br />
www.linux-user.de
Admin-MAGAZIN<br />
im Jahres-Abo<br />
Jede Ausgabe des Admin-Magazins bietet praktisch anwendbares Wissen<br />
von ausgewiesenen Experten und ausführliche Hintergrundberichte für alle<br />
Systemverwalter von Linux, Unix und Windows. Die Schwerpunkte reichen von<br />
Storage und Backup bis hin zu Netzwerk-Themen und Security.<br />
Ein Sonderteil hilft Admins heterogener Welten.<br />
15 % sparen<br />
Jetzt bestellen unter:<br />
www.admin-magazin.de/abo<br />
sichern Sie Sich Ihr<br />
gratis ADMIN T-Shirt!<br />
• Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@admin-magazin.de<br />
Mit dem Jahres-Abo erhalten Sie 6 Ausgaben des Admin-Magazins zum Vorzugspreis von E 49,90 * statt E 58,80 *<br />
(Lieferung frei Haus).<br />
* Preise gelten für Deutschland. Schweiz: SFr 82,32; Österreich: E 54,90; anderes Europa: E 59,90
schwerpunkt<br />
Hiawatha<br />
Schlanker, sicherer <strong>Web</strong>server Hiawatha<br />
Wachsamer<br />
Häuptling<br />
© Francisco Javier Quintana Galvàn, 123 RF<br />
Der freie <strong>Web</strong>server Hiawatha legt den Fokus auf Sicherheit und geringen Ressourcenverbrauch. Damit eignet er<br />
sich besonders für kleinere <strong>Web</strong>-Projekte, für die Apache zu schwerfällig und komplex erscheint. Thomas Drilling<br />
README<br />
Hiawatha 8.4<br />
LU/hiwatha/<br />
Seit 2002 entwickeln<br />
Developer den <strong>Web</strong>server<br />
Hiawatha kontinuierlich<br />
weiter. Sein Fokus<br />
liegt auf Sicherheit. Dieser<br />
Workshop konzentriert<br />
sich auf die Konfiguration<br />
und geht insbesondere<br />
auf die gebotenen<br />
Sicherheitsfunktionen<br />
ein.<br />
Der Entwickler von Hiawatha,<br />
Hugo Leising, begann 2002 mit<br />
der Programmierung eines eigenen<br />
<strong>Web</strong>servers [1], weil es seinerzeit<br />
keinen Vertreter dieser<br />
Gattung gab, der seinen Vorstellungen<br />
von Sicherheit, Einfachheit<br />
und dem Umgang mit Ressourcen<br />
gerecht wurde. Leisings<br />
Bonmot, Apache sei eine fette<br />
Kuh mit einer ziemlich hässlichen<br />
Konfigurationsdatei, trifft im<br />
Jahr 2012 zwar nicht mehr in allen<br />
Punkten zu. Dennoch gibt es<br />
nach wie vor einen Bedarf an<br />
kompakten, einfach zu konfigurierenden<br />
<strong>Web</strong>servern – unter anderem<br />
deshalb, viele <strong>Web</strong>-Anwendungen<br />
dann damit punkten können,<br />
„out-of-the-box“ zu funktionieren,<br />
indem sie den <strong>Web</strong>server<br />
einfach vorkonfiguriert mitliefern.<br />
Auch Hiawatha eignet sich<br />
mit seiner kompakten Größe von<br />
620 KByte hervorragend als „Beipack-Lösung“.<br />
Der komplett monolithisch aufgebaute<br />
Hiawatha sieht ein Laden<br />
von Modulen beim Programmstart<br />
nicht vor. Seine hohe Geschwindigkeit<br />
verdankt Hiawatha<br />
der Tatsache, dass der Server ausschließlich<br />
Threads verwendet.<br />
Hiawatha enthält zudem Funktionen<br />
im Standardumfang, die Sie<br />
bei anderen <strong>Web</strong>servern nachrüsten<br />
oder aufwendig konfigurieren<br />
müssen, wie etwa Support für<br />
IPv6, CGI und FastCGI, XSLT,<br />
VirtualHosts oder Basic/Digest-<br />
HTTP-Authentifizierung.<br />
Herausragend sind aber vor allem<br />
die Sicherheitsfunktionen<br />
von Hiawatha, wie der Schutz vor<br />
Cross-Site-Scripting (CSS), Cross-<br />
Site Request Forgery (CSRF),<br />
SQL-Injection-Angriffen und Denial-of-Service-Attacken.<br />
Ferner<br />
kann der <strong>Web</strong>server Clients auf<br />
IP-Ebene anhand ihrer Adresse<br />
blockieren („Banning“) und lässt<br />
sich über einen separaten Port<br />
kontrollieren („Command<br />
Channel“). Hiawatha unterstützt<br />
außerdem auch URL-Rewriting<br />
anhand regulärer Ausdrücke.<br />
Allerdings heißt die Funktion bei<br />
Hiawatha UrlToolkit. Eine<br />
komplette Feature-Liste steht auf<br />
der <strong>Web</strong>seite [2] zur Verfügung.<br />
In Betrieb nehmen<br />
Hiawatha installieren Sie am besten<br />
aus den Quellen. Dazu benötigen<br />
Sie an Voraussetzungen neben<br />
einem C-Compiler und den<br />
Entwicklerversionen der Libc5,<br />
Glib2 und Libxslt noch eine aktuelle<br />
Cmake-Version. Daneben<br />
sollten Sie auch darauf achten,<br />
dass OpenSSL installiert ist. Nach<br />
dem Herunterladen des Quell-<br />
Listing 1<br />
$ mkdir build<br />
$ cd build<br />
$ sudo cmake ..<br />
$ sudo make install/strip<br />
44 08 | 12<br />
www.linux-user.de
Hiawatha<br />
schwerpunkt<br />
code-Archivs entpacken Sie es mit<br />
tar ‐xfzv hiawatha‐8.4.tar.gz,<br />
wechseln in das neu entstandene<br />
Verzeichnis und starten die Installation<br />
mit den Befehlen, die Sie<br />
in Listing 1 finden.<br />
Bei dieser Minimalversion erhalten<br />
Sie zwar elementare Dinge<br />
wie SSL-Unterstützung, das Url-<br />
Toolkit und XSLT-Support, verzichten<br />
aber auf ein paar ausgefeiltere<br />
Features, wie etwa den<br />
Chroot-Support, den Command-<br />
Channel oder den Hiawatha-Monitor.<br />
Diese binden Sie bei Bedarf<br />
beim Aufruf von Cmake über entsprechende<br />
Optionen ein (siehe<br />
Tabelle Cmake-Optionen).<br />
Um Hiawatha mit Chroot-Support<br />
zu übersetzen, verwenden<br />
Sie statt cmake .. beispielsweise<br />
cmake ‐DENABLE_CHROOT=on ... Vergessen<br />
Sie aber beim Cmake-Aufruf<br />
auf keinen Fall die beiden<br />
Punkte, die das Programm anweisen,<br />
im darüber liegenden Verzeichnis<br />
zu arbeiten.<br />
Hiawatha konfigurieren<br />
Der Hauptvorteil von Hiawatha<br />
besteht in seiner einfachen und<br />
übersichtlichen Konfiguration.<br />
Diese erfolgt in einer einzigen,<br />
kompakten Konfigurationsdatei<br />
namens hiawatha.conf, die per<br />
Default im Verzeichnis /usr/local/<br />
etc/hiawatha/ liegt.<br />
Abzüglich der auskommentierten<br />
Zeilen und der Pfadangaben<br />
zu den Log-Files setzt sich die<br />
mitgelieferte Datei aus lediglich<br />
sieben Einträgen zusammen. Für<br />
erste Tests sollten Sie die Default-<br />
Konfiguration sichern und entweder<br />
eine komplett neue Konfigurationsdatei<br />
anlegen oder mit den<br />
in der Default-Konfiguration auskommentierten<br />
Parametern experimentieren.<br />
Eine Minimalkonfiguration<br />
zeigt Listing 2, folgende Seite; im<br />
Normalfall steht in jeder Zeile genau<br />
eine Definition. Eine sogenannte<br />
Sektion in geschweiften<br />
Klammern ist außerdem schon<br />
das komplexeste Strukturmerkmal<br />
der Konfigurationsdatei.<br />
Mit der Binding-Definition (eingeschlossenen<br />
in geschweifte Klammern)<br />
legen Sie fest, auf welchem<br />
Interface und auf welchem Port<br />
der <strong>Web</strong>server Verbindungen entgegennimmt.<br />
Soll der <strong>Web</strong>server<br />
auf allen vorhandenen Netzwerkschnittstellen<br />
auf Verbindungen<br />
warten, lassen Sie die Interface-<br />
Angabe ganz einfach weg. Selbstverständlich<br />
können Sie außerdem<br />
mehrere Binding-Sektionen<br />
einbauen, etwa eine eigene für<br />
den SSL-Port 443.<br />
Das bei Apache als DocumentRoot<br />
bezeichnete <strong>Web</strong>server-Verzeichnis<br />
heißt bei Hiawatha schlicht<br />
<strong>Web</strong>siteRoot. Sie können hierfür<br />
zwar jeden beliebigen Ordner auf<br />
der Festplatte angeben, unter /<br />
usr/local/var/www/hiawatha liegt<br />
aber bereits eine vorbereitete Beispielseite<br />
index.html.<br />
Außerdem müssen Sie noch einen<br />
Namen oder eine IP-Adresse<br />
angeben, unter der sich die <strong>Web</strong>seite<br />
erreichen lässt. Dazu kommt<br />
wie bei Apache der Parameter<br />
Hostname zum Einsatz. Da Hiawatha<br />
wie eingangs erwähnt von<br />
Haus aus mit IPv6-Adressen zurechtkommt,<br />
stellt es kein Problem<br />
dar, eine solche einfach zu<br />
verwenden – sogar das Mischen<br />
ist erlaubt.<br />
Indianer rennt<br />
Für einen Schnellstart genügt es,<br />
den Server mit administrativen<br />
Rechten direkt auf der Kommandozeile<br />
mit hiawatha anzuwerfen.<br />
Im Unterverzeichnis extras/ findet<br />
sich jedoch das vorbereitete<br />
Start/Stop-Skript hiawatha, das Sie<br />
mit etwas Erfahrung an Ihre Bedürfnisse<br />
anpassen und in den<br />
Init-Prozess Ihrer Distribution<br />
einbauen.<br />
Listing 2<br />
Binding {<br />
Port = 8080<br />
Interface = 192.168.0.45<br />
}<br />
<strong>Web</strong>siteRoot = /usr/local/var/<br />
www/hiawatha<br />
Hostname = localhost<br />
Sollten Sie die Fehlermeldung<br />
Warning: can’t write PID file /usr/<br />
local/var/run/hiawatha.pid erhalten,<br />
hat Hiawatha keine ausreichenden<br />
Zugriffsrechte für das<br />
Verzeichnis /usr/local/var/run.<br />
Den Pfad zur PID-Datei mit der<br />
Prozess-ID des Servers passen Sie<br />
bei Bedarf in der dokumentierten<br />
Konfigurationsdatei leicht an.<br />
Hat alles funktioniert, steht die<br />
mitgelieferte Testseite nach dem<br />
Start des Servers unter<br />
http://IP‐oder‐Servername:Port<br />
zur Verfügung (Abbildung A). Im<br />
Beispiel aus Listing 2 verwenden<br />
wir Port 8080, um einem laufenden<br />
Apache nicht in die Quere zu<br />
kommen. Ohne Start/Stop-Skripte<br />
können Sie Hiawatha vorerst<br />
nur via sudo killall hiawatha wieder<br />
beenden.<br />
CGI<br />
Ohne den Einsatz Skripten geht<br />
im <strong>Web</strong>-2.0-Zeitalter nicht mehr<br />
viel. Um CGI zum aktivieren, erweitern<br />
Sie die Hiawatha-Konfigurationsdatei<br />
einfach um die<br />
Zeile ExecuteCGI = yes (Listing 3,<br />
Zeile 2, folgende Seite) und legen<br />
mit dem Parameter CGIextension<br />
fest, welche Dateiendung die CGI-<br />
Programme haben sollen (Zeile<br />
3). Möchten Sie PHP- oder Python-Anwendungen<br />
erlauben,<br />
müssen Sie Hiawatha noch Namen<br />
und Pfad zum zuständigen<br />
Interpreter mitteilen (Zeile 4).<br />
Option Vorgabe Funktion<br />
‐DENABLE_CACHE=on|off on Cache-Unterstützung<br />
‐DENABLE_CHROOT=on|off on Chroot-Support<br />
Tipp<br />
Möchten Sie Hiawatha<br />
speziell für<br />
Debian, Mac OS X<br />
oder Windows (via<br />
Cygwin) übersetzen,<br />
finden Sie im Unterverzeichnis<br />
extras<br />
spezielle Build-<br />
Skripte für die genannten<br />
Plattformen,<br />
wie etwa make_<br />
debian_ package.<br />
Cmake-Optionen<br />
‐DENABLE_COMMAND=on|off off Command-Channel aktivieren<br />
‐DENABLE_DEBUG=on|off off Debug-Information ausgeben<br />
‐DENABLE_IPV6=on|off on Unterstützung für IPv6<br />
‐DENABLE_MONITOR=on|off off Hiawatha-Monitor aktivieren<br />
‐DENABLE_RPROXY=on|off on Reverse-Proxy-Support<br />
‐DENABLE_SSL=on|off on SSL ermöglichen<br />
‐DENABLE_TOOLKIT=on|off on UrlToolkit nutzen<br />
‐DENABLE_XSLT=on|off on XSLT-Support<br />
www.linux-user.de<br />
08 | 12 45
schwerpunkt<br />
Hiawatha<br />
A Geschafft: Hiawatha<br />
läuft und grüßt mit seiner<br />
Willkommensseite.<br />
Listing 4<br />
Analog funktioniert das auch mit<br />
Perl oder Python (Zeilen 5 und 6).<br />
Sollen fehlerhafte oder bösartige<br />
CGI-Programme nicht gleich den<br />
ganzen <strong>Web</strong>server übernehmen<br />
können, empfiehlt es sich zudem,<br />
die jeweilige Lebensdauer der<br />
Skripte (in Sekunden) zu begrenzen<br />
(Zeile 7).<br />
Wie bereits erwähnt, zeichnet<br />
sich Hiawatha nicht zuletzt durch<br />
seine Sicherheitsfunktionen aus.<br />
Listing 3<br />
01 ...<br />
02 ExecuteCGI = yes<br />
03 CGIextension = cgi<br />
04 CGIhandler = /usr/bin/<br />
php5‐cgi:php,php5<br />
05 CGIhandler = /usr/bin/perl:pl<br />
06 CGIhandler = /usr/bin/<br />
python:py<br />
07 TimeForCGI = 10<br />
SystemLogfile = /usr/local/var/log/hiawatha/system.log<br />
AccessLogfile = /usr/local/var/log/hiawatha/access.log<br />
ErrorLogfile = /usr/local/var/log/hiawatha/error.log<br />
Listing 5<br />
$ openssl genrsa ‐out serverkey.pem 2048<br />
$ openssl req ‐new ‐x509 ‐days 365 ‐key serverkey.pem<br />
‐out server.crt<br />
$ echo "" >> serverkey.pem<br />
$ cat server.crt >> serverkey.pem<br />
$ echo "" >> serverkey.pem<br />
$ rm ‐f server.crt<br />
Diese Features gilt es ebenfalls<br />
explizit über die Konfigurationsdatei<br />
zu aktivieren.<br />
Dazu gehört unter anderen, von<br />
den gebotenen Logging-Möglichkeiten<br />
Gebrauch zu machen und<br />
Hiawatha anzuweisen, entsprechende<br />
Logfiles anzulegen und<br />
mit Inhalt zu füttern (Listing 4).<br />
Das SystemLogfile enthält die<br />
allgemeinen Meldungen des Daemons,<br />
während das AccessLogfile<br />
Zugriffe protokolliert und das<br />
ErrorLogfile Fehler aufzeichnet.<br />
Hiawatha läuft nur beim Start<br />
mit Root-Rechten, damit er sich<br />
an den angegebenen Port binden<br />
Listing 6<br />
...<br />
Binding {<br />
Port = 443<br />
Interface = 192.168.0.45<br />
UseSSL = yes<br />
ServerKey = /usr/local/etc/<br />
hiawatha/serverkey.pem<br />
}<br />
Listing 7<br />
...<br />
UrlToolkit {<br />
ToolkitID = rewrite<br />
RequestURI exists Return<br />
Match ^/images Return<br />
Match ^/data DenyAccess<br />
Match /(.*) Rewrite /index.<br />
php?page=$1<br />
}<br />
kann, und wechselt danach<br />
automatisch in den Kontext<br />
des Nutzers nobody.<br />
Sie dürfen aber über die<br />
ServerId auch ein anderes<br />
Benutzerkonto dazu vorgeben,<br />
etwa ServerId =<br />
www‐data.<br />
Die beiden ersten Zeilen<br />
der mitgelieferten Konfigurationsdatei<br />
widmen<br />
sich übrigens möglichen<br />
Denial-of-Service-Angriffen.<br />
Um die Anfälligkeit<br />
für solche Attacken zu verringern,<br />
reduzieren Sie am<br />
besten die Anzahl der<br />
gleichzeitig von Hiawatha<br />
akzeptierten Verbindungen<br />
insgesamt (ConnectionsTotal<br />
= 150 ) sowie pro IP-Adresse<br />
(ConnectionsPerIP = 10).<br />
Soll der Server zusätzlich oder<br />
ausschließlich SSL-Verbindungen<br />
akzeptieren, brauchen Sie neben<br />
dem dazu erforderlichen Binding<br />
zunächst ein X.509-SSL-Zertifikat.<br />
Wer das nicht käuflich bei einer<br />
Certificate Authority (CA) erwerben<br />
will, erzeugt es mittels<br />
OpenSSL selbst (Listing 5) und<br />
kopiert den damit erzeugten<br />
Schlüssel serverkey.pem ins Konfigurationsverzeichnis<br />
/usr/local/<br />
etc/hiawatha.<br />
Jetzt müssen Sie Hiawatha noch<br />
in der Binding-Sektion für HTT-<br />
PS (Port 443) den Pfad zum eben<br />
erzeugten Server-Key mitteilen<br />
und das Verwenden von SSL mit<br />
UseSSL einschalten (Listing 6). Ab<br />
sofort reagiert der <strong>Web</strong>server in<br />
unserem Beispiel auch auf Anfragen<br />
unter https://192.168.0.45:443.<br />
UrlToolkit<br />
Hiawatha kennt auch eine mit<br />
Apaches Mod_rewrite vergleichbare<br />
Funktion. Sie heißt hier Url-<br />
Toolkit und sorgt dafür, dass der<br />
<strong>Web</strong>server jede an ihn gerichtete<br />
URL mit einem vorgegebenen<br />
Muster abgleicht und nur bei<br />
Übereinstimmung die festgelegte<br />
Aktion ausführt (Listing 7).<br />
Das Beispiel sorgt dafür, dass<br />
Hiawatha URLs, die Dateien im<br />
46 08 | 12<br />
www.linux-user.de
Hiawatha<br />
schwerpunkt<br />
Verzeichnis images/ adressieren,<br />
nicht umschreibt. Dagegen weist<br />
er URLs, die auf Dateien unter<br />
data/ verweisen, zurück und<br />
schreibt alle übrigen URLs so um,<br />
dass sie auf die Startseite des<br />
<strong>Web</strong>servers (index.php) zeigen.<br />
Eine Übersicht der kompletten<br />
Syntax nebst aller Funktionen<br />
finden Sie unter [3].<br />
Virtuelle Hosts<br />
Auf diesem Weg kann Hiawatha<br />
auch mit virtuellen Hosts umgehen,<br />
also mehrere voneinander<br />
unabhängige virtuelle <strong>Web</strong>auftritte<br />
ausliefern – ganz so, als liefen<br />
auf der Maschine mehrere parallele<br />
<strong>Web</strong>server.<br />
Dazu ist es erforderlich, dass der<br />
physische Server anhand der<br />
übermittelten URL erkennt, welche<br />
<strong>Web</strong>seite er ausliefern muss.<br />
Möchten Sie mit Hiawatha virtuelle<br />
Hosts aufsetzen, legen Sie<br />
dazu ganz einfach für jeden davon<br />
in der hiawatha.conf eine eigene<br />
Sektion an (Listing 8)<br />
info<br />
[1] Hiawatha <strong>Web</strong>server:<br />
http:// www. hiawatha‐webserver. org<br />
[2] Features: http:// www. hiawatha‐webserver.<br />
org/ features<br />
[3] UrlTookit: http:// www. hiawatha‐webserver.<br />
org/ howto/ url_toolkit<br />
Innerhalb der Sektion dürfen Sie<br />
beliebig viele Konfigurationseinstellungen<br />
vornehmen. Es gibt allerdings<br />
einige Optionen, die Sie<br />
ausschließlich in Virtual-Host-<br />
Sektionen verwenden können.<br />
Dazu zählen vier interessante<br />
Schutzmechanismen.<br />
So verhindern Sie beispielsweise<br />
mit PreventCSRF = yes Cross-Site-<br />
Request-Forgery-Attacken<br />
(CSRF), weil der so ergänzte virtuelle<br />
Host dann alle von einem<br />
Browser gesendeten Cookies ignoriert,<br />
sofern die Anfrage über<br />
einen externen Link zustande<br />
kam. Mit PreventXSS = yes verhindern<br />
Sie Cross-Site-Skripting<br />
(XSS): Der virtuelle Host ersetzt<br />
sämtliche Kleiner- und Größerals-Zeichen<br />
sowie Hochkommas<br />
und Anführungsstriche in der<br />
URL durch Unterstriche.<br />
In ähnlicher Weise verhindert<br />
PreventCMDI = yes Command-Injection-Angriffe.<br />
Hiawatha ersetzt<br />
hier vorsorglich Backslashes,<br />
Strichpunkte und Pipe-Symbole<br />
in der URL durch einen Unterstrich,<br />
was allerdings hochgeladene<br />
Binärdateien zerstören kann.<br />
Ferner wirkt PreventSQLi = yes<br />
SQL-Injections entgegen, indem<br />
der virtuelle Host mit dieser Option<br />
einen Schrägstrich vor jedes<br />
Hochkomma in der URL stellt.<br />
Mit seinem runden Funktionsumfang<br />
und insbesondere den<br />
ausgefeilten Sicherheitsfunktionen<br />
kann Hiawatha in vielen Fällen<br />
einen Apache-<strong>Web</strong>server ersetzen<br />
– und lässt sich obendrein<br />
wesentlich einfacher konfigurieren.<br />
Darüber hinaus bietet Hiawatha<br />
noch weitere nützliche<br />
Funktionen. Fordert ein Client<br />
beispielsweise eine XML-Datei<br />
an, führt der <strong>Web</strong>server auf<br />
Wunsch eine automatische XSL-<br />
Transformation durch, sofern<br />
eine passende XSLT-Datei auf<br />
dem Rechner vorhanden ist.<br />
Wie bei Apache lässt sich die<br />
Ausführungsgeschwindigkeit von<br />
CGI-Skripten durch Einschalten<br />
von FastCGI steigern. Als „eierlegende<br />
Wollmilchsau“ für das <strong>Web</strong><br />
bleibt Apache allerdings aufgrund<br />
der unzähligen APIs, Schnittstellen,<br />
Addons und Zusatzprodukte<br />
erste Wahl. Für alles andere gibt<br />
es dann den schlanken Server<br />
Hiawatha. (jlu) n<br />
Listing 8<br />
...<br />
VirtualHost {<br />
<strong>Web</strong>siteRoot = /var/www/weitere‐webseite/wwwroot<br />
Hostname = www.weitere‐webseite.de<br />
... Parameter und Funktionen für den virtuellen<br />
Host ...<br />
}<br />
AKTION:<br />
NUR 7 EURO<br />
Holen Sie sich den kompletten Jahrgang<br />
2011 auf einer DVD-10!<br />
• Alle Artikel der Ausgaben<br />
01/2011 bis 12/2011 als<br />
HTML<br />
• Schnelle Volltextsuche für<br />
gängige <strong>Web</strong>browser<br />
• Bootfähiger Datenträger -<br />
auch für die Daten- und<br />
Systemrettung einsetzbar<br />
OpenSuse 12.1<br />
Install-DVD (32 Bit)<br />
www.linux-user.de<br />
Jetzt gleich bestellen!<br />
www.linux-user.de/DVD2011 oder<br />
08 | 12 47<br />
089 - 99 34 11 - 00
praxis<br />
Gramps<br />
Ahnenforschung mit der Genealogie-Software Gramps<br />
Stück für Stück<br />
Ahnenforschung erweist sich oft als Puzzle-Spiel mit unzähligen Teilen.<br />
Mit der Genealogie-Software Gramps fügen Sie alle Informationen<br />
zu einem spannenden Gesamtbild zusammen. Vincze-Aron Szabo<br />
© Riyono, sxc.hu<br />
Gramps 3.4.0<br />
LU/gramps<br />
Woher kommen wir, und wohin<br />
gehen wir? Diese Fragen haben<br />
die Menschen in vielfacher Form<br />
seit jeher beschäftigt. Auf die Frage<br />
nach dem Woher gibt es in Bezug<br />
auf die Ahnen in vielen Fällen<br />
eine konkrete Antwort. Damit<br />
nicht jede Generation aufs Neue<br />
die Antworten zu suchen braucht,<br />
lohnt sich der Einsatz einer Genealogie-Software<br />
wie Gramps.<br />
Die Ahnendatenbank Gramps<br />
unterstützt Sie dabei, Ihren<br />
Stammbaum mithilfe eines Computers<br />
zu pflegen und die Daten<br />
schrittweise zu ergänzen [1]. Dabei<br />
nimmt die Software weit<br />
mehr Informationen auf, als die<br />
Antwort auf die Frage, wer wessen<br />
Nachkomme ist. Sie haben<br />
die Möglichkeit, umfangreiche Informationen<br />
aus dem Leben einzelner<br />
Personen zu ergänzen,<br />
Orte des Geschehens zu dokumentieren,<br />
Recherchematerial zu<br />
verwalten und umfangreiche Berichte<br />
zu generieren.<br />
Wie Sie Gramps installieren,<br />
zeigt der Kasten Installation. Anschließend<br />
steht das Programm<br />
über das Startmenü unter Büro<br />
bereit. Mit der Eingabe von gramps<br />
starten Sie die Applikation aus einem<br />
Terminal.<br />
Das umfangreiche Programm<br />
enthält bereits alle Funktionen,<br />
die Sie für das produktive Arbeiten<br />
benötigen. Davon unberührt<br />
können Sie in dem beim ersten<br />
Start erscheinenden Dialog Verfügbare<br />
Gramps Aktualisierungen<br />
für Erweiterungen zusätzliche<br />
Funktionen in Form von kleinen<br />
Plugins von den Gramps-Servern<br />
herunterladen.<br />
Installation<br />
README<br />
Mit Gramps betreiben<br />
Sie professionelle Ahnenforschung,<br />
erfassen<br />
alle Informationen über<br />
Ihre Vorfahren sowie<br />
die Nachkommen und<br />
generieren auf Knopfdruck<br />
Berichte.<br />
Gramps liegt derzeit in der Version 3.4.0 vor. Um die Software<br />
zu installieren, suchen Sie im Paketmanager der Distribution<br />
einfach nach dem Stichwort gramps und installieren<br />
das entsprechende Archiv.<br />
Sofern die von Ihnen verwendete Distribution noch eine ältere<br />
Version als die 3.4.0 bereitstellt, laden Sie sich aus<br />
dem <strong>Web</strong> [2] die aktuelle Version als Paket herunter. Falls<br />
Sie auf ein offizielles Update Ihrer Distribution warten<br />
möchten und mit der Vorgängerversion loslegen, empfiehlt<br />
es sich, vor dem späteren Update einen Export aus Gramps<br />
heraus zu machen, um die Daten zu sichern.<br />
Das erledigen Sie einfach über das Menü Stammbäume |<br />
Export. Ein Assistent führt Sie durch den Vorgang. Wählen<br />
Sie als Format lediglich Gramps-XML Paket (Stammbaum<br />
und Medien) aus. An den restlichen Einstellungen müssen<br />
Sie nichts ändern. Nach dem Export können Sie auf die<br />
neue Version wechseln. Allerdings empfiehlt das Gramps-<br />
Projekt ganz klar die vorherige Deinstallation der alten Version<br />
und eine komplette Neuinstallation.<br />
Sollte Gramps nicht im Repository der verwendeten Distribution<br />
bereitstehen, schlagen Sie ebenfalls im <strong>Web</strong> [2]<br />
nach, ob ein passendes Paket existiert. Darüber hinaus<br />
empfiehlt es sich, einige Pakete nachzuinstallieren.<br />
Die sind zwar nicht zwingend nötig, erleichtern das Arbeiten<br />
mit Gramps aber in der Regel. Zu diesen Plugins gehören<br />
etwa python-gtkspell, python-enchant und desktop-file-utils.<br />
Dann steht für die Arbeit in Gramps eine Rechtschreibhilfe<br />
bereit, und Sie können Bilder mit einem Rechtsklick öffnen.<br />
50 08 | 12<br />
www.linux-user.de
Gramps<br />
praxis<br />
Über Gewählte Erweiterungen installieren<br />
starten Sie den Download<br />
der Module, woraufhin sich<br />
ein entsprechender Dialog öffnet.<br />
Falls Sie später Erweiterungen<br />
einrichten oder aktualisieren<br />
möchten, erledigen Sie das dagegen<br />
über den Menüeintrag Hilfe |<br />
Plug-in Manager.<br />
Sofern alle Vorbereitungen abgeschlossen<br />
sind, öffnet sich<br />
Gramps mit dem Dialog Stammbäume.<br />
Hier legen Sie einen neuen<br />
Stammbaum an und geben<br />
diesem gleich einen Namen.<br />
Ansichten und „Gramplets“<br />
Bei Bedarf passen Sie die Benutzeroberfläche<br />
an die eigenen Bedürfnisse<br />
an. Über die Leiste auf<br />
der linken Seite (Abbildung A)<br />
springen Sie in alle wichtigen<br />
Ansichten. Innerhalb der Ansicht<br />
legen Sie Personen an, setzen diese<br />
zueinander in Beziehung und<br />
bauen so die Datenbank der<br />
Ahnen Schritt für Schritt auf.<br />
Zusätzlich haben Sie die Möglichkeit,<br />
zu jedem Ort, an dem<br />
wichtige Ereignisse (wie zum Beispiel<br />
Geburten und Hochzeiten)<br />
stattfanden, umfassende Angaben<br />
zu machen – bis hin zur genauen<br />
Angabe der geografischen<br />
Koordinaten. Sogar Ihre Informationsquellen<br />
wie zum Beispiel<br />
Geburtsurkunden oder Zeugnisse<br />
können Sie bei Bedarf innerhalb<br />
von Gramps verwalten. Die Tabelle<br />
Ansichten zeigt, wozu die einzelnen<br />
Ansichten dienen.<br />
B Die zahlreichen Eigenschaften zu einem Eintrag für eine Person verwalten<br />
Sie in der Regel über den Dialog Neue Person.<br />
Sie haben die Möglichkeit, diese<br />
Ansichten anzupassen, indem Sie<br />
sogenannte Gramplets hinzufügen.<br />
Dahinter verbergen sich kleine<br />
Widgets, die spezielle Informationen<br />
bieten. In der Ansicht<br />
Gramplets sehen Sie übergeordnete<br />
Informationen, wie zum Beispiel<br />
Was sind die häufigsten Familiennamen<br />
in meiner Datenbank?<br />
oder eine Übersicht über die letzten<br />
Änderungen.<br />
Sie fügen ein Gramplet hinzu,<br />
indem Sie mit der rechten Maustaste<br />
an eine freie Stelle oder zwischen<br />
zwei vorhandenen Gramplets<br />
klicken und im Kontextmenü<br />
über Ein Gramplet hinzufügen ein<br />
solches aus der Liste auswählen.<br />
Wie Sie anhand der umfangreichen<br />
Liste erkennen, steht ein<br />
riesiges Portfolio bereit. Der Einsatz<br />
einiger Addons ergibt aber<br />
erst dann Sinn, wenn Sie die Datenbank<br />
gut gefüllt haben. Das<br />
gilt zum Beispiel für das Gramplet<br />
Vornamenwolke.<br />
Gramplets stehen für alle Ansichten<br />
bereit. Dies ermöglicht es<br />
zum Beispiel, in der Ansicht Personen<br />
über diese Widgets zusätzliche<br />
Informationen zu einzelnen<br />
Einträgen in der Liste anzuzeigen,<br />
ohne den ganzen Datensatz<br />
zu öffnen. Mit dem Gramplet Angehörige<br />
sehen Sie zum Beispiel<br />
auf einen Blick, wer Kinder, Part-<br />
Ansicht<br />
Gramplets<br />
Personen<br />
Beziehungen<br />
Familien<br />
Vorfahren<br />
Ereignisse<br />
Orte<br />
Geografie<br />
Quellen<br />
Aufbewahrungsorte<br />
Medien<br />
Notizen<br />
Beschreibung<br />
A In der Ansicht Personen<br />
füllen Sie die<br />
Datenbank mit allen<br />
Informationen zu Ihren<br />
Vorfahren und Nachkommen.<br />
Widgets zum Erweitern der Funktionalität<br />
Liste aller eingetragenen Personen<br />
Darstellen der Beziehungen zwischen Personen<br />
Partner und Art der Beziehung<br />
Stammbäume einer ausgewählten Person<br />
Dokumentiert Ereignisse<br />
Ansichten<br />
Anzeige aller in der Datenbank vorkommenden Orte<br />
Ansicht aller Orte, die im Leben einer Person, innerhalb<br />
einer Familie oder im Rahmen eines bestimmten<br />
Ereignisses eine Rolle spielen, oder die Anzeige<br />
aller gespeicherten Orte<br />
Übersicht über alle Quellenangaben<br />
Aufbewahrungsorte für Informationsquellen<br />
Übersicht über alle Medien in der Datenbank<br />
Liste eigener Notizen<br />
www.linux-user.de<br />
08 | 12 51
praxis<br />
Gramps<br />
C Natürlich arbeitet<br />
Gramps die erfassten<br />
Informationen auf<br />
Wunsch als klassische<br />
Ahnentafel auf.<br />
D Alternativ zur klassischen<br />
Ahnentafel<br />
zeigt die Fächergrafik<br />
die Ahnen einer Person<br />
kompakter kreisförmig<br />
angeordnet an.<br />
ner und Eltern der Person sind<br />
(Abbildung A, vorherige Seite).<br />
Daten erfassen<br />
Am Anfang der Arbeit empfiehlt<br />
es sich, erst mit einer Person zu<br />
starten, um sich so in Ruhe mit<br />
dem Programm vertraut zu machen.<br />
Neben personenbezogenen<br />
Daten haben Sie die Möglichkeit,<br />
Informationen zu Orten und Ereignissen<br />
abzulegen und all das<br />
zueinander in Beziehung zu setzen.<br />
Daher sollten Sie am Anfang<br />
die ersten Daten in der Hauptansicht<br />
Personen eingeben.<br />
Zum Hinzufügen einer neuen<br />
Person wechseln Sie in die Ansicht<br />
Personen und klicken auf das<br />
grüne Pluszeichen in der Symbolleiste<br />
oder drücken die Tastenkombination<br />
[Strg]+[Einfg].<br />
Es öffnet sich<br />
ein Dialog Neue<br />
Person (Abbildung<br />
B), vorherige<br />
Seite).<br />
Zunächst geben<br />
Sie den bevorzugten<br />
Namen<br />
der Person<br />
ein und legen<br />
das Geschlecht<br />
fest.<br />
Wichtig ist<br />
hierbei auch<br />
der Namenstyp,<br />
den Sie<br />
über die Auswahlliste<br />
Typ festlegen, weil eine<br />
Person im Laufe ihres Lebens ihren<br />
Namen auch mal ändert. So<br />
legen Sie fest, ob es sich um einen<br />
Geburtsnamen oder den Namen<br />
nach einer Hochzeit handelt.<br />
Neben der Auswahl für das Geschlecht<br />
der Person findet sich<br />
ein Eingabefeld mit der Beschriftung<br />
ID:. Dies zeigt bei einem<br />
vorhandenen Datensatz die interne<br />
Identifikationsnummer an.<br />
Gramps vergibt diese automatisch,<br />
falls Sie hier beim Anlegen<br />
des Datensatzes nichts eingeben.<br />
Die weiteren Informationen zu<br />
der Person geben Sie über die einzelnen<br />
Reiter im unteren Teil des<br />
Dialogs ein. Falls Sie sich gefragt<br />
haben, wie Sie das Geburtsdatum<br />
eintragen: Bei der Geburt handelt<br />
es sich um ein<br />
Ereignis im Leben<br />
einer Person,<br />
und dieses<br />
geben Sie folglich<br />
über den<br />
entsprechenden<br />
Reiter ein. Klicken<br />
Sie in diesem<br />
auf das<br />
kleine Symbol<br />
mit dem grünen<br />
Pluszeichen.<br />
Sofort öffnet<br />
sich der<br />
Ereignisreferenzeditor.<br />
Er dient zur Eingabe aller personenbezogenen<br />
Geschehnisse, die<br />
sich im Laufe des Lebens eines<br />
Menschen ereignen. Angefangen<br />
bei der Geburt über Taufe, Hochzeit<br />
bis hin zum Tod wählen Sie<br />
hier die Art des Ereignisses aus.<br />
Das Datum geben Sie direkt ein<br />
oder bearbeiten es, falls Sie besondere<br />
Kalender berücksichtigen<br />
müssen, über den passenden Editor<br />
im gleichen Dialog.<br />
Haben Sie die Daten für mehrere<br />
Personen eingegeben, können<br />
Sie diese Personen über die Ansicht<br />
Familien zueinander in Beziehung<br />
setzen. Dort fügen Sie<br />
über das Plus-Symbol in der Symbolleiste<br />
oder die Tastenkombination<br />
[Strg]+[Einfg] ein entsprechendes<br />
Objekt hinzu.<br />
Es öffnet sich der Dialog Neue<br />
Familie, in dem Sie aus der bestehenden<br />
Liste Mitglieder der Familie<br />
suchen und miteinander<br />
verknüpfen. Fehlt eine Person, legen<br />
Sie diese über das Symbol mit<br />
dem Pluszeichen an der entsprechenden<br />
Stelle direkt an; Sie<br />
brauchen dazu nicht erst wieder<br />
in die Ansicht Personen wechseln.<br />
So bauen Sie zu jedem Elternpaar<br />
eine Familie zusammen. Der<br />
Stammbaum wächst also kontinuierlich.<br />
Sobald ein paar Generationen<br />
zusammenkommen, lohnt<br />
es sich, einen Blick in die Ansicht<br />
Vorfahren zu werfen. Hier sehen<br />
Sie dann den Stammbaum für die<br />
aktuell markierte Person (Abbildung<br />
C). Dabei unterstützt die<br />
Software drei verschiedene Ansichten<br />
der Ahnentafel, die Sie<br />
über das Menü Ansicht aufrufen,<br />
wenn Sie sich in der Ansicht Vorfahren<br />
befinden.<br />
Die Ahnentafelansicht gibt Ihnen<br />
eine klassische Stammbaumübersicht<br />
über die Vorfahren einer bestimmten<br />
Person (Abbildung C).<br />
Über die Pfeile links und rechts<br />
springen Sie in die nächsten Generationen.<br />
Die aktive Person<br />
stellt Gramps übersichtlich in einer<br />
Detailansicht vor. Einen ganz<br />
anderen Blickwinkel auf die Ahnen<br />
bietet die Fächergrafik-An-<br />
52 08 | 12<br />
www.linux-user.de
Gramps<br />
praxis<br />
E Haben Sie Koordinaten zu den Orten in der Datenbank hinterlegt,<br />
zeigt Gramps deren Lage auf einer Karte an.<br />
F Gramps unterstützt verschiedene Quellen für die Karten, wie zum<br />
Beispiel Google Maps oder OpenStreetmap.<br />
sicht: Hier steht die aktive Person<br />
im Mittelpunkt eines Kreises (Abbildung<br />
D) aus ihren Vorfahren.<br />
Orte und Geographie<br />
Zu jedem Ereignis zu einer Person,<br />
wie Geburt oder Hochzeit,<br />
gehört neben einem Datum auch<br />
eine Ortsangabe. Sie haben die<br />
Möglichkeit, Orte direkt am Ereignis<br />
festzumachen oder vorab<br />
über die Ansicht Orte zu definieren<br />
und diese dann hier nachträglich<br />
anzupassen.<br />
Wie umfangreich die Informationen<br />
zum Eintrag für einen Ort<br />
ausfallen, bleibt Ihnen überlassen.<br />
Es genügt im Prinzip, dem<br />
Ort einen Namen zu geben. Allerdings<br />
kommen Sie so nicht in den<br />
Genuss, einige andere Funktio-<br />
3 AusgAben für nur 5,90 E<br />
Jetzt bestellen: 3 Hefte zum Preis von einem. Sie sparen 66 %!<br />
Neu!<br />
Jetzt bestellen unter:<br />
www.android–user.de/miniabo<br />
www.linux-user.de<br />
Kennenlernangebot:<br />
3 AusgAben<br />
für nur 5,90 E<br />
08 | 12 53<br />
Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@android-user.de
praxis<br />
Gramps<br />
G Gramps erlaubt es,<br />
bei Berichten über die<br />
gespeicherten Daten<br />
umfassende Einstellungen<br />
vorzunehmen.<br />
Glossar<br />
GEDCOM: Genealogical<br />
Data Communication,<br />
gilt als internationaler<br />
De-facto-Standard für<br />
den Austausch von Ahnendaten.<br />
Das textbasierte<br />
Format wurde<br />
von den Mormonen entwickelt,<br />
bei denen Familienforschung<br />
aus religiösen<br />
Gründen eine<br />
wichtige Rolle spielt.<br />
nen von Gramps zu nutzen beziehungsweise<br />
diese entsprechend<br />
richtig auszureizen.<br />
Es empfiehlt sich daher, neben<br />
dem Namen des Ortes mindestens<br />
noch dessen Koordinaten in<br />
Form von Breiten- und Längengrad<br />
anzugeben. Dadurch erhalten<br />
Sie später in der Ansicht Geografie<br />
eine Übersicht, wo sich diese<br />
Orte auf einer Karte befinden.<br />
Die genauen geografischen Informationen<br />
erhalten Sie zum Beispiel<br />
über Beschreibungen der<br />
Orte in der Wikipedia oder über<br />
die <strong>Web</strong>site Mapcoordinates [3],<br />
wenn Sie mit genauen Adressen<br />
arbeiten. Zusätzlich haben Sie die<br />
Möglichkeit, zu einem Eintrag sogar<br />
alternative Angaben sowie<br />
Links und Bilder zu hinterlegen.<br />
In der Ansicht Geografie sehen<br />
Sie in einer Karte die Lage der<br />
Orte und deren Koordinaten (Abbildung<br />
E, Abbildung F, vorherige<br />
Seite). Über die rechte Maustaste<br />
zoomen Sie mit Alle Orte anzeigen<br />
in einem Schritt die Karte<br />
so zurecht, dass alle eingetragenen<br />
Orte übersichtlich im Kartenausschnitt<br />
liegen. Ebenfalls<br />
über die rechte Maustaste<br />
wechseln Sie zwischen<br />
verschiedenen Karten.<br />
Neben OpenStreetmap<br />
und Google Maps steht<br />
Kartenmaterial von Virtual<br />
Maps und Yahoo bereit.<br />
Berichterstattung<br />
Zur Bereicherung des eigenen<br />
Archivs oder zum<br />
Vorzeigen beim nächsten<br />
Familienfest enthält<br />
Gramps einige Funktionen<br />
zum automatischen<br />
Generieren von Berichten. Für<br />
solche Anlässe lohnt es sich zum<br />
Beispiel, einen Buchbericht zu generieren,<br />
der aus den Informationen<br />
und Grafiken der Datenbank<br />
eine umfassende Dokumentation<br />
der Familie erstellt.<br />
Darüber hinaus unterstützt<br />
Gramps zahlreiche grafische Berichte,<br />
wie einen Ahnenbaum<br />
oder einen Kalender mit allen Geburtstagen.<br />
Alle Berichtsformen<br />
erreichen Sie über das gleichnamige<br />
Menü. Außerdem können<br />
Sie für jeden Bericht umfangreiche<br />
Einstellungen vornehmen.<br />
Entscheiden Sie sich für einen<br />
Buchbericht, erstellt Gramps<br />
nach Ihren Vorgaben ein Dokument<br />
mit den Inhalten, die Sie bei<br />
der Konfiguration festlegen. Um<br />
einen solchen Bericht zu erstellen,<br />
klicken Sie auf Berichte | Bücher<br />
| Buchbericht…. Daraufhin<br />
öffnet sich der passende Dialog,<br />
in dem Sie alle Einstellungen vornehmen<br />
(Abbildung G).<br />
Nachdem Sie im Feld Buchname<br />
einen Namen angegeben haben,<br />
fügen Sie unter Verfügbare Artikel<br />
diesem mittels Doppelklick verschiedene<br />
Artikel hinzu. Die Artikel<br />
erscheinen in der Folge unter<br />
Aktuelles Buch.<br />
Diese einzelnen Artikel dürfen<br />
Sie wiederum individuell anpassen.<br />
Wählen Sie zum Beispiel den<br />
Artikel Titelseite aus, öffnen Sie<br />
über einen Doppelklick auf den<br />
Eintrag einen Dialog, der es ermöglicht,<br />
einen Buchnamen und<br />
einen Untertitel einzugeben. Sie<br />
haben hier auch die Möglichkeit,<br />
ein Bild einzutragen. In diesem<br />
Dialog definieren Sie unter Stileditor<br />
sogar Schriftformate.<br />
Klicken Sie auf OK, so öffnet<br />
sich ein Dialog, in dem Sie Optionen<br />
sowie Namen und Format<br />
(PDF oder ODF) der Datei festlegen.<br />
Diese liegt anschließend am<br />
angegebenen Speicherort.<br />
Im Menü Berichte finden Sie<br />
noch viele weitere Typen (Abbildung<br />
H). Vom Prinzip her funktioniert<br />
das Erstellen stets gleich:<br />
Sie wählen aus den Einträgen einen<br />
Bericht aus und nehmen in<br />
dem erscheinenden Dialog alle<br />
notwendigen Einstellungen vor.<br />
Eventuell schränken Sie abschließend<br />
noch ein, welche Daten das<br />
Programm auswertet.<br />
Fazit<br />
Durch die vielen Möglichkeiten<br />
zum Aufbereiten der Daten eröffnet<br />
Gramps eine nicht enden wollende<br />
Spielwiese. Dass Sie mit<br />
Gramps nicht nur Daten erfassen,<br />
sondern mit diesen allerhand anstellen<br />
können, zeichnet die Anwendung<br />
aus. Weder Import und<br />
Export von Daten stellen ein<br />
Prob lem dar: Gramps unterstützt<br />
das weitverbreitete GEDCOM-<br />
Format, das speziell für den Austausch<br />
von Ahnendaten entwickelt<br />
wurde [4]. (agr) n<br />
info<br />
[1] Gramps: http:// gramps‐project. org<br />
[2] Download: http:// sourceforge. net/ projects/<br />
gramps/ files/ Stable/<br />
H Gramps generiert<br />
[3] Google Maps-Koordinaten finden:<br />
auf Wunsch aus der<br />
http:// www. mapcoordinates. net<br />
Ahnendatenbank viele<br />
[4] Wikipedia GEDCOM:<br />
verschiedene Berichte.<br />
http:// de. wikipedia. org/ wiki/ GEDCOM<br />
54 08 | 12<br />
www.linux-user.de
MyPaint<br />
praxis<br />
Freies Zeichnen mit dem Malprogramm MyPaint<br />
Digitale Kleckse<br />
Einfaches Zeichnen fast wie mit Pinsel und Stift verspricht<br />
© Ba1969, sxc.hu<br />
MyPaint. In Kombination mit einem Grafiktablett sind den künstlerischen<br />
Ambitionen kaum Grenzen gesetzt.<br />
MyPaint [1] gehört zur Kategorie<br />
der Malprogramme, die sich vom<br />
Konzept her von einer Bildbearbeitung<br />
wie etwa Gimp unterscheiden.<br />
Die Software spezialisiert<br />
sich auf das Zusammenspiel<br />
mit einem elektronischen Pinsel<br />
und bleibt in weiten Teilen darauf<br />
beschränkt. Viele der von Gimp<br />
her bekannten Funktionen fehlen<br />
in dieser Software daher. Selbst<br />
einfache Aktionen wie beispielsweise<br />
das freie Drehen oder Zuschneiden<br />
eines Bildes unterstützt<br />
MyPaint nicht. Dafür offeriert<br />
es aber eine große Anzahl<br />
spezieller Pinsel und Stifte.<br />
Während Gimp hauptsächlich<br />
beim Bearbeiten von Fotos und<br />
Grafiken zum Einsatz kommt,<br />
dient MyPaint zum Malen von<br />
Bildern. Eine Online-Galerie [2]<br />
zeigt, was begabte Künstler mit<br />
dem Programm schaffen. Das erfordert<br />
zwar nicht zwingend ein<br />
Grafiktablett, aber dessen Einsatz<br />
erscheint in vielen Szenarien<br />
sinnvoll. Die Werkzeuge sind direkt<br />
für diese Eingabegeräte ausgelegt<br />
und nutzen insbesondere<br />
die Informationen über den<br />
Druck der Stifte auf die Fläche,<br />
um die Striche zu modifizieren.<br />
Als Standardformat setzt<br />
MyPaint auf ORA (siehe Kasten<br />
OpenRaster). Auch Gimp unterstützt<br />
dieses Format, sowohl<br />
beim Laden als auch beim Speichern.<br />
Daher lassen sich mit<br />
MyPaint erstellte Bilder problemlos<br />
in Gimp laden, um die von<br />
MyPaint nicht bereitgestellten<br />
Funktionen zu nutzen und bei<br />
Bedarf im Anschluss mit MyPaint<br />
weiterzubearbeiten. MyPaint exportiert<br />
neben ORA als weitere<br />
Formate noch PNG und JPEG.<br />
Los geht’s<br />
Bisher findet sich die aktuelle<br />
Version MyPaint 1.0 noch nicht<br />
in den Repositories der gängigen<br />
Distributionen. Bei Ubuntu haben<br />
Sie allerdings die Möglichkeit,<br />
mit dem Y-PPA-Manager [3]<br />
eine Quelle zu finden. Die <strong>Web</strong>site<br />
führt weitere Quellen auf [4].<br />
MyPaint<br />
LU/mypaint/<br />
Das OpenRaster-Format ORA (Dateierweiterung: .ora)<br />
wurde als offenes Austauschformat für Bitmap-Grafiken entwickelt<br />
und steht damit quasi in Konkurrenz zum proprietären<br />
PSD-Format von Photoshop. Dabei bietet es einige interessante<br />
Möglichkeiten, die sich in Adobes proprietären<br />
Grafikformat dagegen nicht finden.<br />
So existiert beispielsweise eine vollständige, freie Dokumentation<br />
des Formats. Metadaten speichert ORA als<br />
XMP-, IPTC- oder EXIF-Tags, bei Bedarf für einzelne Ebenen<br />
OpenRaster<br />
getrennt. Es unterstützt außerdem Ebenen und Ebenengruppen,<br />
Ebenenmodi (das Verrechnen der Pixel zweier Ebenen)<br />
sowie Effekte bei Ebenen. Pfadinformationen, Paletten und<br />
Fonts lassen sich ebenso in der Datei ablegen wie Undo-<br />
Informationen.<br />
Programme, die ORA nutzen wollen, müssen nicht alle Features<br />
implementieren. Bisher unterstützen aber nur relativ<br />
wenige Applikationen das Format. Zu den bekanntesten<br />
zählt neben MyPaint und Gimp das KDE-Programm Krita.<br />
README<br />
MyPaint ist ein intuitiv<br />
einsetzbares Malprogramm.<br />
Speziell für den<br />
Einsatz mit Grafiktabletts<br />
konzipiert, verspricht<br />
die Software ein<br />
Zeichnen wie mit einem<br />
Stift oder Pinsel.<br />
www.linux-user.de<br />
08 | 12 55
praxis<br />
MyPaint<br />
1 Bei Bedarf docken<br />
Sie Dialoge am rechten<br />
Fensterrand an oder<br />
nutzen diese als eigenständige<br />
Fenster.<br />
Nach dem Start zeigt sich die<br />
Software spartanisch: Neben dem<br />
klassischen Menü gibt es nur<br />
noch eine Werkzeugleiste mit wenigen<br />
Buttons. Eine große Schaltfläche<br />
mit der Aufschrift MyPaint<br />
öffnet ein Menü, wie Sie es bei<br />
den meisten anderen Applikationen<br />
in einer Leiste finden. Darauf<br />
folgen die Schaltflächen für Undo<br />
beziehungsweise Redo. Weitere<br />
Buttons erlauben das direkte Ändern<br />
der Zeichenfarbe, des Pinseltyps<br />
sowie der Pinselspitze.<br />
Über die Schaltfläche mit dem<br />
Zahnrad rufen Sie einen Dialog<br />
auf, indem Sie die Parameter für<br />
das aktuelle Werkzeug bei Bedarf<br />
anpassen. Fast alle Aktionen<br />
steuern Sie bei MyPaint über den<br />
eingesetzten Pinsel und dessen<br />
Parameter. Diese hängen dabei im<br />
Wesentlichen vom Drucksensor<br />
im Stift des Grafiktabletts ab.<br />
Die Buttons im rechten Teil der<br />
Werkzeugleiste bieten ähnliche<br />
Funktionen, ein Klick ruft sie in<br />
einem eigenen Fenster auf. Die<br />
dort vorhandenen Dialoge verfügen<br />
über eine gestrichelte „Abreißkante“.<br />
Klicken Sie mit der<br />
Maus darauf, dockt die Software<br />
den entsprechenden Dialog am<br />
rechten Rand des Fensters an<br />
(Abbildung 1).<br />
Um mit dem Zeichnen zu beginnen,<br />
wählen Sie als Erstes einen<br />
Pinsel aus. Zunächst gilt es dabei,<br />
die unterschiedlichen Pinselvarianten<br />
kennenzulernen. Voreingestellt<br />
gibt es 35 klassische, mehr<br />
als 20 experimentelle und viele<br />
weitere, zu sogenannten „Sets“<br />
zusammengefasste Pinsel (Abbildung<br />
2). Darüber hinaus haben<br />
Sie die Möglichkeit, neue Pinsel<br />
selbst zu erzeugen [5] oder aus<br />
dem Internet zu laden [6].<br />
Nahezu alle Pinselmodi reagieren<br />
druckempfindlich. Meist<br />
steuert der Druck die Deckkraft<br />
der Striche, manchmal deren<br />
Breite, Form oder Farbe. Durch<br />
wiederholtes Übermalen erhöhen<br />
Sie die Deckkraft der Striche. Einige<br />
der experimentellen Pinsel,<br />
wie etwa DNA-brush oder particules_eraser,<br />
erzeugen Striche, die<br />
sich je nach Stiftbewegung ändern.<br />
Teilweise wertet die Software<br />
dazu neben der Geschwindigkeit<br />
noch die Richtung der Bewegung<br />
des Eingabegerätes aus.<br />
Wie es sich für ein interaktives<br />
Programm gehört, verfügt<br />
MyPaint über eine Undo- und<br />
Redo-Funktion. Über [Z] oder<br />
[Strg]+[Z] nehmen Sie die letzten<br />
Aktionen schrittweise zurück.<br />
Daher bietet es sich an, beim<br />
Zeichnen am besten einzelne,<br />
kurze Striche zu<br />
verwenden. Über [Y]<br />
heben Sie die letzte<br />
Undo-Aktion ganz einfach<br />
wieder auf.<br />
Farben wählen Sie<br />
entweder über den entsprechenden<br />
Dialog aus<br />
oder nehmen diese mit der Pipette<br />
aus dem Bild auf. Letzteres er-<br />
2 Der Brush List<br />
Editor enthält eine um-<br />
3 Die weitergehenden Einstellungen<br />
für Pinsel legen Sie im Brush<br />
Settings Editor fest.<br />
fangreiche Anzahl von<br />
Pinseln.<br />
56 08 | 12<br />
www.linux-user.de
MyPaint<br />
praxis<br />
weist sich in der Praxis als besonders<br />
interessant, da es schnell<br />
und einfach funktioniert. Über<br />
[R] aktivieren Sie die Pipette.<br />
Einstellungen<br />
Im Menü Bearbeiten unter Einstellungen<br />
konfigurieren Sie MyPaint.<br />
Besonders interessant sind dabei<br />
jene Dialoge, über die Sie den Tasten<br />
des Grafiktabletts und dessen<br />
Stift Funktionen zuweisen. Geübte<br />
Zeichner dürften das Umsetzen<br />
des Druckpunktes des Stiftes<br />
besonders interessant finden. Die<br />
Feineinstellungen für die Pinsel<br />
umfassen nahezu alle relevanten<br />
Aspekte (Abbildung 3). Für die<br />
einzelnen Parameter zeigt My-<br />
Paint eine Kurzhilfe, sobald Sie<br />
den Mauszeiger über einem Regler<br />
platzieren.<br />
[1] MyPaint: http:// mypaint. intilinux. com<br />
[2] Beispiele für Arbeiten mit MyPaint:<br />
info<br />
http:// mypaint. intilinux. com/ ? page_id=519<br />
[3] Y-PPA-Manager: Karsten Günther „Aus den<br />
Quellen“, LU 02/2012, S. 68,<br />
http:// www. linux‐community. de/ 25220<br />
[4] MyPaint-Repositories: http:// wiki. mypaint.<br />
info/ index. php? title=Packaging<br />
[5] Pinsel selbst erstellen:<br />
http:// mypaint. intilinux. com/ ? page_id=173<br />
[6] Pinsel laden: http:// wiki. mypaint. info/<br />
Documentation/ Manual# Brush_Packs<br />
MyPaint unterstützt übrigens<br />
eine dynamische Tastenbindung.<br />
Das ermöglicht es, Menüpunkte<br />
über ein frei wählbares Tastenkürzel<br />
aufzurufen. Platzieren Sie<br />
dazu den Mauszeiger über dem<br />
entsprechenden Menüpunkt,<br />
ohne diesen anzuklicken, und<br />
drücken Sie die gewünschte Tastenkombination.<br />
Wer sein künstlerisches Talent<br />
nicht gleich auf die harte Probe<br />
stellen möchte, dem bietet die<br />
Software die Möglichkeit, zunächst<br />
einmal ein Bild abzuzeichnen.<br />
Dazu laden Sie eine Bitmap-<br />
Grafik und fügen darüber Ebenen<br />
ein: Das erlaubt ein Durchpausen.<br />
Im Ebenendock erzeugen Sie<br />
dazu durch Anklicken der Schaltfläche<br />
mit dem Pluszeichen eine<br />
neue Ebene (Abbildung 4).<br />
Fazit<br />
Dank des guten Supports für Grafiktabletts<br />
macht es Spaß, mit<br />
dem Programm herumzuspielen.<br />
Mit einer Maus als einzigem Eingabegerät<br />
bereitet MyPaint auf<br />
Dauer allerdings wenig Freude.<br />
Bei den Funktionen zum Malen<br />
bietet MyPaint einen anderen, intuitiveren<br />
Zugriff als Krita oder<br />
Gimp. Das ist zwar gewöhnungsbedürftig,<br />
bereitet aber keine großen<br />
Schwierigkeiten. (agr) n<br />
4 Über die Schaltfläche<br />
mit dem Pluszeichen<br />
unter dem Ebenendock<br />
erzeugen Sie<br />
eine neue Ebene.<br />
Einfach auf LinuX umstEigEn!<br />
DigiSub-Mini * : 2 digitale Ausgaben EasyLinux!<br />
5€<br />
ihRE VoRtEiLE<br />
❱<br />
FÜR 2 AUSGABEN<br />
EasyLinuX ist idEaL füR WindoWs-umstEigER<br />
❱ mit schRitt-füR-schRitt-anLEitungEn Zum ERfoLg<br />
❱<br />
2X tEstEn ohnE Risiko, das digisuB-mini<br />
ist JEdERZEit kündBaR!<br />
❱ nutZBaR auf notEBook und Pc,<br />
taBLEt odER smaRtPhonE!<br />
JEtZt gLEich BEstELLEn!<br />
n tel.: 07131 / 2707 274 n fax: 07131 / 2707 78 www.linux-user.de 601 n uRL: www.easylinux.de/abo 08 | 12 n E-mail: abo@easylinux.de 57<br />
*geht ohne Kündigung in ein digitales Jahresabo mit 4 Ausgaben pro Jahr über und ist jederzeit kündbar!
praxis<br />
Autokey<br />
Textbausteine einfügen und Aktionen automatisieren mit Autokey<br />
Wie von Geisterhand<br />
Autokey setzt wiederkehrende<br />
Phrasen automatisch in Texte ein<br />
und automatisiert obendrein auch beliebige<br />
andere Aufgaben, unabhängig von der gerade<br />
genutzten Anwendung. Tim Schürmann<br />
© Danil Chepko, 123RF<br />
README<br />
Autokey 0.90<br />
LU/autokey/<br />
Autokey ersetzt Textkürzel<br />
automatisch gegen<br />
vorgegebene Textbausteine<br />
und startet<br />
Python-Skripte schnell<br />
über selbst definierte<br />
Tastenkombinationen.<br />
Sie kennen sicher die praktische<br />
Autokorrekur von LibreOffice<br />
Writer: Es genügt, mfg einzutippen,<br />
und schon macht die Textverarbeitung<br />
daraus „Mit freundlichen<br />
Grüßen“. Dummerweise<br />
lassen sich diese Kürzel nur innerhalb<br />
der Office-Programme<br />
nutzen – das E-Mail-Programm<br />
weiß davon genauso wenig wie<br />
der Texteditor oder das Instant-<br />
Messaging-Programm.<br />
Universeller Helfer<br />
Hier springt das kleine Werkzeug<br />
Autokey [1] in die Bresche. Es beobachtet<br />
penibel alle Tastatureingaben.<br />
Kommt dabei ein Kürzel<br />
vor, das Autokey kennt, ersetzt es<br />
dieses automatisch gegen einen<br />
zuvor hinterlegten Textbaustein.<br />
Alternativ fügt eine frei wählbare<br />
Tastenkombination den Textbaustein<br />
ein. Das spart nicht nur<br />
Briefeschreibern Arbeit, sondern<br />
beispielsweise auch Programmierern,<br />
die sich so schnell ganze<br />
Codeblöcke in ihren Editor zaubern.<br />
Damit diese Automatik Sie<br />
auf Twitter oder in einem Terminalfenster<br />
nicht in den Wahnsinn<br />
treibt, beschränken Sie den Einsatz<br />
einfach auf eine bestimmte<br />
Anzahl an Programmen.<br />
Darüber hinaus bringt Autokey<br />
eine Art Makrorekorder mit, der<br />
auf Wunsch alle vorgenommenen<br />
Aktionen aufzeichnet. Autokey<br />
wiederholt sie dann später bei einem<br />
Druck auf Tastenkombination<br />
oder nach Eingabe eines speziellen<br />
Stichwortes. Auf diese Weise<br />
automatisieren Sie Abläufe.<br />
Noch komplexer<br />
Wem das immer noch nicht genügt,<br />
der kann sogar beliebige<br />
Python-Skripte einbinden. Die<br />
fügen beispielsweise das aktuelle<br />
Datum ein, stellen Datenbankanfragen<br />
oder füllen komplette Formulare<br />
aus. Das Aufsetzen solcher<br />
Skripte erfordert allerdings<br />
gute Python-Kenntnisse.<br />
Autokey selbst steht unter der<br />
GPLv3-Lizenz und besitzt eine<br />
komfortable Benutzeroberfläche,<br />
die das Anlegen von Skripten und<br />
Textbausteinen leicht macht.<br />
Mittlerweile hat Autokey den<br />
Weg in die Repository zumindest<br />
einiger der gängigen Distributionen<br />
gefunden – allerdings durchweg<br />
nur in veralteten Versionen.<br />
Zu Redaktionsschluss brachte<br />
Ubuntu 12.04 nur Autokey 0.71<br />
mit, während auf der Autokey-<br />
Homepage die Version 0.90 bereitstand.<br />
Immerhin gibt es ein<br />
Autokey-PPA für Ubuntu (siehe<br />
Kasten Autokey für Ubuntu).<br />
Autokey für Ubuntu<br />
Für Ubuntu gibt es immerhin ein eigenes<br />
Autokey-PPA. Dieses fügen<br />
Sie den Paketquellen in einem Terminalfenster<br />
durch folgende zwei<br />
Befehle hinzu:<br />
$ sudo add‐apt‐repository<br />
ppa:cdekter/ppa<br />
$ sudo apt‐get update<br />
Anschließend installieren Sie komfortabel<br />
über das Ubuntu Software-<br />
Center das Paket AutoKey (GTK).<br />
58 08 | 12<br />
www.linux-user.de
Autokey<br />
praxis<br />
In aller Regel gilt es jedoch, Autokey<br />
aus den Quellen selbst einzurichten.<br />
Dazu stellen Sie zunächst<br />
über den Paketmanager der verwendeten<br />
Distribution sicher,<br />
dass Python installiert ist. Hinzu<br />
kommen die Python-Module Xlib,<br />
Pyinotify, Qsci und – je nach Benutzeroberfläche<br />
– noch Python-<br />
Qt oder Python-GTK. Unter<br />
OpenSuse 12.1 steckt das Gesuchte<br />
in den Paketen python-gtk<br />
(beziehungsweise python-qt),<br />
python-xlib, python-pyinotify und<br />
python-qscintilla.<br />
Anschließend angeln Sie sich<br />
das aktuelle Autokey-Archiv von<br />
der Homepage, entpacken es auf<br />
der Festplatte, öffnen ein Terminalfenster,<br />
wechseln darin ins Autokey-Verzeichnis<br />
und rufen als<br />
Benutzer root den Befehl python<br />
setup.py install auf. Auf GTK-Systemen,<br />
wie unter Gnome oder<br />
Unity, startet Autokey dann via<br />
autokey‐gtk &, unter KDE hingegen<br />
mit autokey‐qt &<br />
Nun sollten Sie einen Blick an<br />
den oberen beziehungsweise unteren<br />
Bildschirmrand werfen:<br />
Dort verankert sich Autokey mit<br />
einem kleinen Symbol im Panel.<br />
Je nach Desktop-Umgebung<br />
reicht es eventuell schon aus, dieses<br />
Icon einmal anzuklicken.<br />
Klappt dann hingegen ein Menü<br />
aus, wählen Sie dort Show Main<br />
Window. Damit erscheint dann in<br />
jedem Fall das Autokey-Hauptfenster<br />
(Abbildung A).<br />
Anlageberatung<br />
Eine Liste am linken Rand des<br />
Autokey-Fensters führt alle vorhandenen<br />
Textbausteine und<br />
Skripte auf. Um auch bei sehr vielen<br />
Einträgen den Überblick zu<br />
wahren, gruppiert Autokey sie in<br />
Ordnern. In My Phrases stecken<br />
beispielsweise ein paar mitgebrachte<br />
Textbausteine, unter<br />
Sample Scripts eine Handvoll Beispiel-Skripte.<br />
Analog könnten Sie<br />
beispielsweise alle in Briefen verwendeten<br />
Textbausteine in einem<br />
neuen Ordner sammeln. Um einen<br />
solchen anzulegen, klicken<br />
Sie auf Neu<br />
beziehungsweise<br />
New in<br />
der Symbolleiste<br />
und<br />
wählen dann<br />
Folder.<br />
Da die Ordner<br />
für die<br />
Textbausteine<br />
tatsächlich<br />
den Inhalt<br />
echter Verzeichnisse<br />
auf der Festplatte widerspiegeln,<br />
müssen Sie daher jetzt für den<br />
neuen Ordner irgendwo in Ihrem<br />
Heimatverzeichnis ein passendes<br />
Plätzchen finden. Unter Umständen<br />
offeriert Autokey, den neuen<br />
Ordner in seinem Standardverzeichnis<br />
anzulegen. Das wiederum<br />
finden Sie unter ~/.config/autokey/data/.<br />
Lehnen Sie das Angebot<br />
mit Create Elsewhere ab, können<br />
Sie den Ordner an beliebiger<br />
Stelle selbst anlegen.<br />
Es empfiehlt sich dabei, alle Autokey-Ordner<br />
in einem gemeinsamen<br />
Verzeichnis zu sammeln:<br />
Das erleichtert zum einen die<br />
Übersicht, zum anderen das spätere<br />
Backup. Textbausteine für<br />
Briefe könnten Sie beispielsweise<br />
in ~/Dokumente/Briefe/ ablegen.<br />
Dazu steuern Sie in der GTK-Fassung<br />
von Autokey das Verzeichnis<br />
Dokumente an, tippen unter Name<br />
die Briefe ein und klicken auf OK.<br />
Unter KDE legen Sie in Dokumente<br />
über die rechte Maustaste das<br />
Verzeichnis Briefe an, stellen sicher,<br />
dass dessen kompletter Pfad<br />
im Eingabefeld ganz unten steht,<br />
und klicken auf OK.<br />
Ablageorte<br />
Im Hauptfenster finden Sie jetzt<br />
auf der linken Seite den neuen<br />
Ordner. Wo auf der Festplatte er<br />
liegt, prüfen Sie gegebenenfalls<br />
durch Anzeigen der Folder Settings.<br />
Stimmt die Verknüpfung<br />
nicht, wählen Sie den Ordner in<br />
der Liste auf der linken Seite an<br />
und klicken in der Symbolleiste<br />
auf Delete (oder wählen Edit | Delete<br />
Item). Doch Vorsicht: Autokey<br />
löscht dann das komplette Unterverzeichnis<br />
auf der Festplatte<br />
samt aller Inhalte.<br />
Um im Ordner Briefe jetzt einen<br />
neuen Textbaustein anzulegen,<br />
stellen Sie sicher, dass der Ordner<br />
links in der Liste markiert ist, klicken<br />
Sie auf Neu beziehungsweise<br />
New in der Symbolleiste und entscheiden<br />
Sie sich für die Phrase.<br />
B Autokey speichert jeden Textbaustein und jedes Skript in einer ganz normalen<br />
Textdatei. Wie die heißt, und wo sie liegt, verrät der Link rechts oberhalb<br />
des großen Eingabefeldes.<br />
A Das Hauptfenster<br />
von Autokey in der<br />
GTK-Variante (hier unter<br />
Unity) unterscheidet<br />
sich von der Qt-Variante<br />
nur in Details.<br />
www.linux-user.de<br />
08 | 12 59
praxis<br />
Autokey<br />
C Hier wurde die<br />
Tastenkombination<br />
[Strg]+[Alt]+[U] gewählt.<br />
Sie sollten sich<br />
möglichst für Tastenkombinationen<br />
entscheiden,<br />
die nicht anderweitig<br />
vom System<br />
belegt sind.<br />
D Hier wird gerade<br />
einem komplexeren<br />
Textbaustein das Kürzel<br />
mfg zugewiesen.<br />
Dem neuen Textbaustein geben<br />
Sie nun einen Namen, wie etwa<br />
Gruß. In der GTK-Version erscheint<br />
zu diesem Zweck ein neues<br />
Fenster, unter KDE tippen Sie<br />
einfach direkt drauflos.<br />
In jedem Fall taucht der neue<br />
Textbaustein links in der Liste<br />
unterhalb des Ordners Briefe auf.<br />
Vergewissern Sie sich, dass dort<br />
wie in Abbildung B, vorherige<br />
Seite, angewählt ist. Ins große<br />
Eingabefeld auf der rechten Seite<br />
tippen Sie den gewünschten Text<br />
ein – im Beispiel also etwa Mit<br />
freundlichen Grüßen,. Dabei überschreiben<br />
Sie einfach das vorgegebene<br />
Enter Phrase Content.<br />
Falls Sie Always prompt before<br />
pasting this phrase abhaken, fragt<br />
Autokey später immer noch einmal<br />
kurz nach, bevor es den Text<br />
tatsächlich einsetzt. Da das wiederum<br />
den Arbeitsfluss hemmt,<br />
sollten Sie die Funktion nur bei<br />
selten verwendeten Textbausteinen<br />
aktivieren.<br />
Am Drücker<br />
Wenn Sie den Gruß zukünftig mit<br />
einer Tastenkombination einfügen<br />
wollen, klicken Sie auf Set neben<br />
Hotkey. Es erscheint jetzt das<br />
kleine Fenster aus Abbildung C.<br />
dort aktivieren Sie Press to Set<br />
und drücken dann die gewünschte<br />
Tastenkombination. Nach einem<br />
Klick auf OK erscheint sie<br />
auch noch einmal rechts unten im<br />
Hauptfenster. Dort können Sie<br />
sie mit der danebenstehenden<br />
Schaltfläche<br />
Clear beziehungsweise<br />
Leeren jederzeit<br />
wieder aufheben.<br />
Speichern Sie jetzt<br />
alle Änderungen über<br />
Save, öffnen Sie einen Texteditor<br />
und drücken Sie probeweise die<br />
Tastenkombination. Die Grußformel<br />
sollte nun direkt an der Einfügemarke<br />
erscheinen. Passiert<br />
nichts, weisen Sie die Tastenkombination<br />
noch einmal neu zu –<br />
insbesondere unter KDE klemmt<br />
manchmal die Übernahme.<br />
Soll Autokey ein eingetipptes<br />
Kürzel automatisch durch den<br />
Gruß ersetzen, klicken Sie auf das<br />
Set neben Abbreviations. Es erscheint<br />
jetzt das Fenster aus Abbildung<br />
D. Wie die Liste linkerhand<br />
schon erahnen lässt, dürfen<br />
Sie für einen Textbaustein gleich<br />
mehrere Kürzel hinterlegen. Um<br />
ein neues anzumelden, klicken<br />
Sie auf Hinzufügen beziehungsweise<br />
das grüne Pluszeichen. Tippen<br />
Sie jetzt das entsprechende<br />
Kürzel ein, wie etwa mfg, und<br />
drücken Sie die Eingabetaste.<br />
Auf der rechten Seite können<br />
Sie noch festlegen, wie und in<br />
welchen Situationen Autokey das<br />
Kürzel ersetzen soll. Der Haken<br />
vor Removed typed abbreviation<br />
sorgt dafür, dass Autokey das eingegebene<br />
mfg entfernt und an seiner<br />
Stelle den Textbaustein einsetzt<br />
– also genau das Richtige für<br />
den Gruß. Interessant ist auch<br />
noch Ignore case of typed abbreviation:<br />
Aktiviert sorgt es dafür, dass<br />
die Groß- und Kleinschreibung<br />
des Kürzels keine Rolle spielt, Sie<br />
also sowohl mFG, als auch Mfg eintippen<br />
können. Wenn Sie einen<br />
Haken vor Match phrase case to typed<br />
abbreviation setzen, überträgt<br />
Autokey die Groß- und Kleinschreibung<br />
des Kürzels auf den<br />
Textbaustein. Aus einem mfg wird<br />
dann ein „mit freundlichen grüßen“,<br />
aus einem MfG hingegen<br />
„Mit freundlichen Grüßen“.<br />
Bei einem Haken vor Show in notification<br />
menu stellt Autokey den<br />
Textbaustein zusätzlich in dem<br />
kleinen Panelmenü bereit (siehe<br />
Abschnitt „Gut versteckt“). Dort<br />
genügt dann ein Mausklick auf<br />
den entsprechenden Eintrag, um<br />
den Textbaustein an der aktuellen<br />
Stelle im Text einzufügen.<br />
Für das Beispiel belassen Sie die<br />
Einstellungen wie in Abbildung D<br />
gezeigt und bestätigen mit OK.<br />
Dann speichern Sie die Änderungen<br />
via Save, wechseln zum Texteditor<br />
und tippen dort mfg ein, gefolgt<br />
von einem Leerzeichen. Autokey<br />
sollte das Kürzel jetzt umgehend<br />
durch den Gruß ersetzen.<br />
Ignorant<br />
Die Ersetzungsautomatik greift<br />
grundsätzlich in allen Fenstern.<br />
Wenn Sie etwa jetzt in einem Terminal<br />
mfg eintippen, dann ersetzt<br />
Autokey es auch dort sofort gegen<br />
„Mit freundlichen Grüßen“.<br />
Um das zu verhindern, klicken Sie<br />
im Autokey-Hauptfenster auf Set<br />
rechts neben Windows Filter. Im<br />
neuen Fenster geben Sie jetzt einen<br />
sogenannten regulären Ausdruck<br />
[2] ein, der die Namen aller<br />
zu berücksichtigender Fenstertitel<br />
beschreibt.<br />
Sofern Sie den Textbaustein nur<br />
auf eine einzelne Anwendung beschränken<br />
möchten, wie etwa den<br />
Editor Gedit, können Sie auch auf<br />
Detect Window Properties klicken,<br />
dann per [Strg]+[Tab] zum geöffneten<br />
Editor-Fenster wechseln<br />
und dessen Titelleiste anklicken.<br />
Im neu erscheinenden Fenster<br />
aus Abbildung E achten Sie darauf,<br />
dass es unter Window Class<br />
die korrekte Anwendung aufführt,<br />
und schließen dann alle<br />
noch offenen Fenster mit OK. Die<br />
so festgelegte Einschränkung he-<br />
60 08 | 12<br />
www.linux-user.de
Autokey<br />
praxis<br />
ben Sie später jederzeit<br />
mit Clear beziehungsweise<br />
Leeren<br />
rechts neben Window<br />
Filter wieder auf.<br />
Datum eingeben<br />
Recht häufig muss<br />
man das aktuelle Datum<br />
in einen Text einfügen.<br />
Die starren<br />
Textbausteine helfen<br />
an dieser Stelle allerdings<br />
nicht weiter.<br />
Glücklicherweise kann<br />
Autokey auch beliebige Python-<br />
Skripte ausführen. Ein paar vorgefertigte<br />
Beispiele bringt das<br />
Programm im Ordner Sample<br />
Scripts mit. Wenn Sie diesen mit<br />
einem Klick auf das kleine vorangestellte<br />
Dreieck öffnen, springt<br />
Ihnen auch Insert Date entgegen,<br />
welches das aktuelle Datum ausspuckt.<br />
Wählen Sie es aus, dürften<br />
Ihnen die Einstellungen im<br />
rechten unteren Bereich bekannt<br />
vorkommen: Autokey kann auch<br />
ein Skript mit einer Tastenkombination<br />
oder bei der Eingabe eines<br />
Kürzels starten. Beides legen Sie<br />
genauso fest wie bei den Textbausteinen<br />
(Abbildung F).<br />
Wiederkehrende Aktionen<br />
zeichnet der eingebaute Recorder<br />
auf. Er notiert sich einfach solange<br />
alle Tastatureingaben und<br />
Mausbewegungen, bis Sie die Aufzeichnung<br />
stoppen. Die dabei<br />
protokollierten Aktionen landen<br />
dann in einem Skript. Um den<br />
Recorder aufzurufen, markieren<br />
Sie zunächst einen Ordner, erzeugen<br />
dort über New | Script ein<br />
neues Skript, markieren es und<br />
rufen dann Tools | Record keyboard<br />
/ mouse respektive Tools |<br />
Record script auf.<br />
Im neuen Fenster legen Sie fest,<br />
ob der Recorder sowohl Tastatureingaben<br />
(Record keyboard<br />
events) als auch Mausaktionen<br />
(Record mouse events) aufzeichnen<br />
soll. Nach wie vielen Sekunden er<br />
damit beginnt, bestimmt die Zahl<br />
darunter. Um die Aufnahme zu<br />
stoppen, wählen Sie erneut<br />
Tools | Record keyboard / mouse<br />
beziehungsweise Tools | Record<br />
Script. Sofern Sie sich mit Python<br />
auskennen, können Sie jetzt noch<br />
im großen Eingabefeld rechts<br />
oben die Befehle nachbearbeiten<br />
oder ergänzen.<br />
Gut versteckt<br />
Wenn Sie das Hauptfenster<br />
schließen, verkrümelt sich Autokey<br />
wie bereits eingangs erwähnt<br />
in das Panel beziehungsweise die<br />
Kontrollleiste (Abbildung G). Dabei<br />
bleibt das Programm im Hintergrund<br />
aktiv, die Tastenkombinationen<br />
und Kürzel funktionieren<br />
weiterhin. Um Autokey komplett<br />
zu beenden, müssen Sie sein<br />
Symbol anklicken und dann aus<br />
dem Kontextmenü Beenden beziehungsweise<br />
Quit wählen. Unter<br />
KDE erscheint das Menü nur,<br />
wenn Sie das Symbol mit der<br />
rechten Maustaste anklicken.<br />
einem<br />
unübersichtlichen<br />
und<br />
lückenhaften<br />
Wiki [3].<br />
Zudem hat der Entwickler angekündigt,<br />
keine neuen Funktionen<br />
mehr in Autokey aufzunehmen,<br />
sondern nur noch Fehler in der<br />
Software zu beheben.<br />
Nichtsdestotrotz finden insbesondere<br />
Vielschreiber in Autokey<br />
einen idealen Partner. Das kleine<br />
Programm überträgt das praktische<br />
Prinzip der Autokorrektur<br />
aus LibreOffice in alle anderen<br />
Anwendungen. Darüber hinaus<br />
automatisiert es wiederkehrende<br />
und stupide Abläufe auf dem<br />
Computer auf angenehme Weise.<br />
Der Recorder hilft dabei allerdings<br />
nur eingeschränkt: Um die<br />
komplexeren Aktionen zu automatisieren,<br />
benötigen Sie zwingend<br />
Python-Kenntnisse. Einige<br />
von Benutzern erstellte, aber nur<br />
in Spezialfällen brauchbare Skripte<br />
finden Sie auf der Autokey-<br />
<strong>Web</strong>seite [4]. (jlu) n<br />
[1] Autokey:<br />
http:// code. google. com/ p/ autokey/<br />
[2] Regular Expressions: Frank Hofmann,<br />
„Schnipseljagd“, LU 09/2011, S. 84,<br />
info<br />
F In diesem Fall<br />
startet Autokey beim<br />
Druck auf<br />
[Strg]+[Alt]+[D] das<br />
Skript Insert Date, das<br />
wiederum an der momentanen<br />
Position im<br />
Text das aktuelle Datum<br />
einfügt.<br />
G Nach dem Schließen<br />
erinnert an Autokey<br />
nur noch ein Symbol<br />
im Panel beziehungsweise<br />
der Kontrollleiste,<br />
über das man<br />
ein kleines Kontextmenü<br />
erreicht.<br />
E In diesem Fall würde Autokey die<br />
Ersetzungen ausschließlich im Editor<br />
Gedit anwenden.<br />
Fazit<br />
Ärgerlicherweise ist Autokey äußerst<br />
schlecht dokumentiert, das<br />
Handbuch besteht derzeit nur aus<br />
http:// www. linux‐community. de/ 24091<br />
[3] Dokumentation:<br />
http:// code. google. com/ p/ autokey/ w/ list<br />
[4] Spezielle Skripts: http:// code. google. com/<br />
p/ autokey/ wiki/ ContributedScripts<br />
www.linux-user.de<br />
08 | 12 61
praxis<br />
Byobu<br />
Byobu als Sitzungsmanager für die Konsole<br />
Fensterbauer<br />
Der Sitzungsmanager Byobu erweitert die Shell um zahlreiche nützliche Funktionen: So teilt er auf Wunsch<br />
den Bildschirm, lässt Programme im Hintergrund weiterlaufen oder organisiert sie in Tabs. Florian Effenberger<br />
Byobu 5.18<br />
LU/byobu/<br />
Wer in der Wikipedia nach „Byobu“<br />
sucht, findet einen Artikel zu<br />
japanischen Wandschirmen. Das<br />
gleichnamige Linux-Tool [1] ist<br />
zwar nicht so dekorativ, aber<br />
doch ähnlich vielseitig und praktisch<br />
wie das Pendant aus dem<br />
fernen Osten. Es versteht sich als<br />
Erweiterung von Screen und findet<br />
sich in den Repositories der<br />
meisten Distributionen. Auf unserem<br />
Testsystem unter Linux<br />
Mint 12 genügte ein sudo apt‐get<br />
install byobu, um das Paket zu<br />
installieren.<br />
Je nach Distribution<br />
startet Byobu<br />
fortan automatisch<br />
für jeden Benutzer<br />
oder nur<br />
auf Wunsch – Letzteres<br />
auch bei Linux Mint. Möchten<br />
Sie das Tool erst einmal ausprobieren,<br />
rufen Sie es in der<br />
Bash per byobu auf. Gefällt die<br />
neue Umgebung, dann bearbeiten<br />
Sie über den entsprechenden Eintrag<br />
in byobu‐config – beziehungsweise<br />
über das Konfigurationsmenü<br />
([F9]) – die Datei .profile<br />
im Homeverzeichnis, sodass Byobu<br />
künftig bei jedem Login automatisch<br />
startet.<br />
Um Byobu zum Standard für<br />
alle Benutzer zu machen, nutzen<br />
Sie auf Debian-basierten Systemen<br />
die Konfiguration unter<br />
sudo dpkg‐reconfigure<br />
byobu. Falls sich einzelne<br />
Anwender nicht mit dem<br />
Programm anfreunden<br />
können, deaktivieren diese<br />
es dann individuell durch Anlegen<br />
einer leeren Datei mittels<br />
touch<br />
~/.byobu/<br />
disable‐autolaunch beziehungsweise<br />
im schon erwähnten Konfigurationsmenü.<br />
Alternativ stehen<br />
auch die beiden Tools byobu‐enable<br />
und byobu‐disable zur Verfügung.<br />
Guter Ausblick<br />
Doch egal, wie Sie Byobu letztendlich<br />
starten, es blendet am<br />
unteren Bildschirmrand zwei Zeilen<br />
ein, in denen es die wichtigsten<br />
Systeminformationen zusammenfasst<br />
(Abbildung A). In der<br />
ersten Zeile links listet es die Sitzungen<br />
auf, ähnlich den Tabs im<br />
Browser, wobei es anfangs nur<br />
eine einzige Instanz mit dem Namen<br />
der aktuellen Shell startet.<br />
Mit einem Druck auf [F2] öffnen<br />
Sie ein neues Fenster und navigieren<br />
mittels [F3] und [F4]<br />
nach links beziehungsweise<br />
rechts durch die verfügbaren Einträge.<br />
Diese sind aufsteigend<br />
nummeriert und lassen sich der<br />
README<br />
X11-Anwender haben die Wahl zwischen<br />
verschiedenen Sitzungs- und Fenstermanagern,<br />
die Konsole dagegen ist eher<br />
spartanisch ausgestattet. Byobu ergänzt<br />
die Kommandozeile um zahlreiche<br />
Funktionen, insbesondere SSH-Benutzer<br />
lernen es schnell zu schätzen.<br />
© Sergey Ilin, 123RF<br />
62<br />
08 | 12<br />
www.linux-user.de
Byobu<br />
praxis<br />
Übersicht halber durch einen<br />
Druck auf [F8] beliebig umbenennen.<br />
In Abbildung A stehen die<br />
Bezeichnungen Shell, htop, iotop<br />
und lynx für die dort gestarteten<br />
Programme – wer viel mit SSH-<br />
Verbindungen zu entfernten Servern<br />
arbeitet, trägt praktischerweise<br />
deren Namen dort ein.<br />
In der rechten Hälfte erscheinen<br />
der aktuelle Benutzername (floeff),<br />
der Name des Systems (floeffbook)<br />
sowie dessen IP-Adresse<br />
(192.168.0.11). Am Schluss folgt<br />
ein Hinweis auf<br />
das Konfigurationsmenü,<br />
das Sie<br />
mit [F9] öffnen –<br />
doch dazu später mehr. In der<br />
zweiten Zeile blendet Byobu die<br />
aktuelle Linux-Distribution ein,<br />
mit stilisiertem Logo voran. Während<br />
Byobu allerdings unter<br />
Ubuntu auch die genaue Version<br />
(11.04 in Abbildung B) anzeigt,<br />
fehlt dieser Hinweis bei Linux<br />
Mint gänzlich. Zudem erscheinen<br />
die Informationen bei jedem<br />
Logon. Interessanter ist da die Information<br />
zum aktuellen Datentransfer<br />
(^552kbps v496kbps in<br />
Abbildung B), die freilich nur<br />
dann erscheint, wenn der Rechner<br />
gerade größere Datenmengen<br />
überträgt. Gleiches gilt für die<br />
Hinweise auf notwendige Reboots<br />
mittels (R) und zur Anzahl<br />
verfügbarer Paket-Updates mit<br />
11!. Ebenso nützlich ist die Anzahl<br />
der aktuell angemeldeten Benutzer<br />
(#1), die Uptime des Systems<br />
(113d22h in Abbildung B),<br />
sofern vorhanden der Status der<br />
Batterie (|=| steht für geladen,<br />
eine Prozentanzeige gibt Auskunft<br />
über den Ladestand) sowie<br />
die Geschwindigkeit und Qualität<br />
der entsprechenden WLAN-Verbindung<br />
(54Mbps,91%). Schlussendlich<br />
macht Byobu noch Angaben<br />
zur aktuellen Systemlast<br />
(0.24, der Zahl der CPU-Kerne sowie<br />
deren aktueller Geschwindigkeit<br />
(16x1.6GHz) und liefert Details<br />
zum verfügbaren RAM und<br />
dessen Ausnutzung (2.0GB,18%).<br />
Das aktuelle Datum nebst Uhrzeit<br />
rundet die zweite Statuszeile ab.<br />
In der Regel aktualisieren sich alle<br />
Angaben automatisch, ein manuelles<br />
Nachladen erzwingt ein<br />
Druck auf [F5].<br />
Anpassungsfähig<br />
Was Byobu in der Statusleiste anzeigt,<br />
passen Sie bei Bedarf über<br />
das eingangs schon erwähnte<br />
Konfigurationsmenü (Abbildung<br />
C) an, das Sie entweder<br />
durch einen Druck auf [F9] oder<br />
das separate Programm byobu‐config<br />
aufrufen. Neben dem Farbschema<br />
für die Statuszeile definieren<br />
Sie dort auch deren Inhalt<br />
(Abbildung D, folgende Seite).<br />
Wer beispielsweise weiß, welche<br />
Distribution er einsetzt, und ohnehin<br />
stets die Uhr im Blick hat,<br />
der wird sich über den gewonnenen<br />
Platz freuen und nutzt ihn<br />
beispielsweise für die Anzeige der<br />
CPU-Temperatur und Festplattengeschwindigkeit.<br />
Die genaue<br />
Anzeigeposition der einzelnen<br />
Elemente können Sie zwar nicht<br />
verändern, aber Byobu achtet von<br />
sich aus darauf, den zur Verfügung<br />
stehenden Platz optimal<br />
auszunutzen. Finden Sie die Statusanzeige<br />
in der zweiten Zeile<br />
generell überflüssig, dann deaktivieren<br />
Sie diese einfach mit<br />
byobu‐quiet. Um die Informationen<br />
später wieder hervorzuholen,<br />
rufen Sie byobu‐quiet ‐‐undo auf.<br />
Fühlen Sie sich gar von allen Byobu-Anzeigen<br />
genervt, schalten Sie<br />
sie mit byobu‐silent ab. Auch hier<br />
funktioniert ein späteres byobu‐silent<br />
‐‐undo. Auf manchen<br />
Systemen funktionieren die Tastenkombinationen<br />
nicht ganz im<br />
Sinne des Erfinders: Unter Mac<br />
OS X beispielsweise ruft [F8] die<br />
betriebssystem eigene Exposé-<br />
Funktion auf. Daher bietet das<br />
Konfigurationsmenü auch die<br />
Möglichkeit, Byobu auf die Nutzung<br />
von Escape-Folgen umzustellen.<br />
Diese rufen Sie standardmäßig<br />
mit [Strg]+[A] auf, was<br />
sich bei Bedarf jedoch ebenfalls<br />
per Menü ändern lässt.<br />
Praktisch ist zudem die Möglichkeit,<br />
neue Sitzungen zu erstellen<br />
und diese zu den sogenannten<br />
Standardfenstern zu nehmen. Rufen<br />
Sie bei jedem Login mutt für<br />
die Mailbearbeitung und htop zur<br />
Anzeige der Systemlast auf, fügen<br />
Sie die beiden einfach dort hinzu.<br />
Fortan öffnet Byobu das Duo bei<br />
jedem Start automatisch.<br />
A Byobu zeigt standardmäßig<br />
verschiedene<br />
Statusmeldungen<br />
an, hier per SSH vom<br />
Mac aus.<br />
B Je nach System und<br />
dessen Zustand blendet<br />
Byobu nur bestimmte<br />
Felder ein.<br />
C Das Aussehen<br />
und das Verhalten von<br />
Byobu passen Sie ganz<br />
an die eigenen Bedürfnisse<br />
an.<br />
www.linux-user.de<br />
08 | 12 63
praxis<br />
Byobu<br />
D Zur Wahl stehen<br />
Der Autor<br />
zahlreiche Statusanzeigen,<br />
die<br />
Informationen zum<br />
System geben.<br />
Florian Effenberger<br />
engagiert sich seit<br />
vielen Jahren ehrenamtlich<br />
für freie<br />
Software. Er ist<br />
Chairman of the<br />
Board der Document<br />
Foundation<br />
und war zuvor fast<br />
sieben Jahre im<br />
Projekt OpenOffice.<br />
org aktiv. Nebenbei<br />
schreibt er regelmäßig<br />
für Fachpublikationen.<br />
Benötigen Sie<br />
mehr Informationen<br />
auf einen<br />
Blick, erweist sich<br />
Byobu ebenfalls<br />
als Mittel der<br />
Wahl: Statt die<br />
Fenster artig nebeneinander<br />
in<br />
Tabs anzuzeigen,<br />
beherrscht es<br />
auch den sogenannten<br />
Split-<br />
Screen, also das horizontale oder<br />
vertikale Teilen des Bildschirms.<br />
Die Split-Screen-Funktion eignet<br />
sich hervorragend, um Htop und<br />
Iotop nebeneinander anzuzeigen<br />
– oder auch, um zwei Editorfenster<br />
parallel zu öffnen.<br />
Öffnen Sie dazu zwei Sitzungen<br />
und drücken Sie [Umschalt]+[F2],<br />
um diese horizontal nebeneinander<br />
anzuzeigen, respektive [Strg]+<br />
[F2], um sie vertikal anzuordnen<br />
(Abbildung E). Zwischen den so<br />
geteilten Fenstern springen Sie<br />
mit [Umschalt]+[F4] und [Umschalt]+[F3]<br />
vor beziehungsweise<br />
zurück. Um die Inhalte wieder in<br />
eigene Tabs zu verfrachten, genügt<br />
ein kurzer Druck auf [Umschalt]+[F5].<br />
Schaufenster<br />
Eine der praktischsten Funktionen<br />
von Byobu stellt die Fähigkeit<br />
dar, Programme im Hintergrund<br />
weiterlaufen zu lassen, wenn Sie<br />
das Terminal schließen – etwa für<br />
via SSH auf einem Remote-Rechner<br />
gestartete Prozesse. Die Sitzung<br />
läuft dann im sogenannten<br />
Detached-Mode weiter, und Sie<br />
können sich jederzeit wieder damit<br />
verbinden. Die beste Variante,<br />
um Byobu kontrolliert in den<br />
Hintergrund zu schieben, stellt<br />
ein Druck auf [F6] dar, aber auch<br />
das bloße Schließen des Terminalfensters<br />
funktioniert. Zwar<br />
ginge das Ganze theoretisch mit<br />
Screen, doch Byobu hat den unschätzbaren<br />
Vorteil, dass es automatisch<br />
startet, während Sie<br />
Screen meist dann vergessen aufzurufen,<br />
wenn Sie es benötigen.<br />
Selbst, wenn die Verbindung<br />
eine Weile verloren geht, müssen<br />
Sie keine Angst haben, wichtige<br />
Meldungen zu übersehen: Byobu<br />
wartet mit einer integrierten Historie<br />
auf. Drücken Sie zu einem<br />
beliebigen Zeitpunkt auf [F7],<br />
friert das Tool den aktuellen Bildschirminhalt<br />
ein, ohne das laufende<br />
Programm dabei zu beenden.<br />
Nun können Sie mit den<br />
Pfeiltasten durch die Anzeigen<br />
navigieren und bei Bedarf sogar<br />
seitenweise per [Bild auf] und<br />
[Bild ab] scrollen.<br />
Um auch bei umfangreichen<br />
Historien den Überblick zu wahren,<br />
gibt es zudem eine Suchfunktion.<br />
Um ab der aktuellen Cursorposition<br />
vorwärts zu suchen, drücken<br />
Sie [Umschalt]+[ 7 ] („/“),<br />
für die Suche rückwärts dagegen<br />
[Umschalt]+[ß] („?“). Zwischen<br />
den einzelnen Treffern navigieren<br />
Sie mittels [N].<br />
Haben Sie die Historie zur Genüge<br />
durchwandert und gesichtet,<br />
kehren Sie mittels [Esc] wieder<br />
zur laufenden Sitzung zurück.<br />
Spiegel-Reflex<br />
Byobu ist dann nützlich, wenn Sie<br />
auf mehreren Geräten gleichzeitig<br />
arbeiten, denn die Sitzung steht<br />
allen Anmeldungen eines Benutzers<br />
zur Verfügung. Damit nehmen<br />
Sie das Editorfenster vom<br />
Desktop aufs Notebook mit – Sie<br />
öffnen es in Byobu und melden<br />
sich dann mit dem Notebook zusätzlich<br />
an. Byobu synchronisiert<br />
die Anzeige auf beiden Systemen,<br />
auch Tastatureingaben sind hier<br />
wie da möglich.<br />
Dieses Verfahren nutzen Teams,<br />
die gemeinsam in einer Sitzung<br />
arbeiten wollen, oder Dozenten<br />
bei Schulungen: Melden sich alle<br />
Anwender mit demselben Benutzerkonto<br />
an, kann jeder Teilnehmer<br />
die Arbeitsschritte auf diesem<br />
Weg „live“ nachvollziehen.<br />
Fazit<br />
Byobu ist ein praktischer Helfer<br />
für alle, die regelmäßig mit der<br />
Konsole arbeiten. Neben den hier<br />
erwähnten Funktionen bietet es<br />
weitere Möglichkeiten: So lassen<br />
sich die Statusanzeigen per Konfigurationsdatei<br />
individuell anpassen,<br />
verschiedene Programm-<br />
Backends auswählen, der Inhalt<br />
der Historie in eine Zwischenablage<br />
kopieren und eigene Statusanzeigen<br />
programmieren. Auch<br />
vorgefertigte Fensterlisten, auf<br />
die Sie direkt zugreifen können,<br />
unterstützt das Tool. Möchten Sie<br />
sich näher damit befassen, empfiehlt<br />
sich neben der Lektüre der<br />
Byobu-Manpage [2] ein Blick in<br />
die Screen-Anleitung [3]. (jlu) n<br />
info<br />
[1] Byobu: https:// launchpad. net/ byobu<br />
[2] Byobu-Manpage:<br />
E Dank der Split-<br />
http:// manpages. ubuntu. com/ manpages/<br />
Screen-Funktion<br />
precise/ en/ man1/ byobu. 1. html<br />
haben Sie auch bei<br />
[3] Screen-Manpage:<br />
mehreren Program-<br />
http:// manpages. ubuntu. com/ manpages/<br />
men alles im Blick.<br />
precise/ en/ man1/ screen. 1. html<br />
64 08 | 12<br />
www.linux-user.de
Android User im Abo<br />
Die Monatszeitschrift für Android-Fans, Smartphone- und Tablet-Nutzer<br />
Neu mit Prämie!<br />
15% sparen beim Print- oder<br />
Digital-Abo und exklusive<br />
Prämie sichern!<br />
SoftMaker Office über Google Play erhältlich, Freischaltung erfolgt per<br />
Gutscheincode. Angebot gilt solange der Vorrat reicht, Tablet und<br />
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 • E-Mail: abo@android-user.de
praxis<br />
ImageMagick<br />
Bildbearbeitung mit ImageMagick<br />
Bilder<br />
im Griff<br />
Wer nicht unzählige Urlaubsbilder von Hand skalieren, normieren,<br />
beschneiden oder mit Wasserzeichen versehen möchte, für den führt kein<br />
Weg an der Werkzeugsammlung ImageMagick vorbei. Thomas Drilling<br />
© Altomedia, 123RF<br />
README<br />
Bildbearbeitung auf der<br />
Kommandozeile – das<br />
klingt umständlich, erweist<br />
sich aber als extrem<br />
leistungsfähig und<br />
zudem alternativlos,<br />
wenn es um Stapelverarbeitung<br />
geht. Die Grafikwerkzeuge<br />
der Image-<br />
Magick-Suite eröffnen<br />
hier im Zusammenspiel<br />
mit der Shell weitreichende<br />
Möglichkeiten.<br />
ImageMagick zählt zu den Dauerbrennern<br />
der Open-Source-Szene:<br />
Der Grafik-Werkzeugkasten<br />
für die Kommandozeile wird seit<br />
1999 kontinuierlich weiterentwickelt<br />
und trägt aktuell die Versionsnummer<br />
6.7.7. An der grundsätzlichen<br />
Handhabung hat sich<br />
über die Jahre kaum etwas geändert,<br />
allerdings kommen von Version<br />
zu Version neu unterstützte<br />
Bildformate, Funktionen oder<br />
Programmierschnittstellen hinzu.<br />
Es besteht nur selten ein Anlass,<br />
die aktuellste Version von der<br />
Projektseite [1] herunterzuladen<br />
und aus den Quellen [2] zu übersetzen,<br />
weil alle wichtigen Distributionen<br />
das Paket bereits mitbringen,<br />
Ubuntu 12.04 etwa in<br />
der Version 6.6.9.7.<br />
Magisches Universum<br />
ImageMagick gibt es nicht nur für<br />
Linux, sondern auch für Windows,<br />
Mac OS X und iOS. Zudem existieren<br />
diverse Programmierschnittstellen,<br />
darunter die C-Core-API<br />
Magick Core [3], ein objektorientiertes<br />
C++-API namens Magick++<br />
sowie das Perl-Interface PerlMagick,<br />
sodass sich Bilder auch dynamisch<br />
generieren lassen. Daher<br />
setzen <strong>Web</strong>-Anwendungen häufig<br />
auf die Tool-Sammlung. Image-<br />
Magick besteht aus einer Reihe<br />
von einzelnen Werkzeugen zur<br />
Bildmanipulation [4], derzeit elf<br />
an der Zahl, von denen convert<br />
das bekannteste und am meisten<br />
benutzte sein dürfte (siehe Tabelle<br />
ImageMagick-Tools). Der gemeinsame<br />
Nenner der Werkzeuge besteht<br />
darin, dass alle auf das gleiche<br />
Fundament an Basis-Bibliotheken<br />
zurückgreifen, die unter<br />
anderem das Lesen und Schreiben<br />
der inzwischen knapp 100 unter-<br />
1 Hier zeigt ImageMagick die Ergebnisse des Bearbeitens im eigenen Viewer.<br />
68 08 | 12<br />
www.linux-user.de
ImageMagick<br />
praxis<br />
stützen Dateiformate<br />
ermöglichen.<br />
Die Basis-<br />
Bibliotheken<br />
zeichnen auch für<br />
zahlreiche andere<br />
grafische Basis-<br />
Operationen verantwortlich.<br />
Die eigentliche<br />
Mächtigkeit der<br />
Tool-Sammlung<br />
liegt – abgesehen<br />
von den erwähnten<br />
Programmierschnittstellen<br />
–<br />
aber vor allem in<br />
der Vielzahl möglicher<br />
Operatoren<br />
begründet. Da alle<br />
ImageMagick-<br />
Tools kommandozeilenorientiert<br />
arbeiten, lassen<br />
sie sich auch in<br />
vielfältiger Weise<br />
verknüpfen.<br />
Das mit Abstand<br />
populärste Tool aus der Image-<br />
Magick-Sammlung heißt Convert.<br />
Viele Nutzer betrachten es irrtümlich<br />
als eigenständiges Werkzeug<br />
oder gar Linux-Bordgepäck,<br />
weil viele Distributionen Image-<br />
Magick bereits vorinstallieren.<br />
Findet sich Convert auf Ihrem<br />
Rechner nicht, installieren Sie<br />
erst einmal via Paketverwaltung<br />
ImageMagick.<br />
Convert kann jedes der unterstützten<br />
Dateiformate ineinander<br />
konvertieren und außerdem jedes<br />
Bild skalieren, beschneiden, beschriften<br />
oder in sonst irgendeiner<br />
Form transformieren: Es ist<br />
also der eigentliche Bildbearbeiter<br />
im Reigen der ImageMagick-<br />
Tools. Der Einsatz von Convert<br />
funktioniert wie bei fast allen<br />
Werkzeugen nach dem Schema<br />
$ Befehl Ursprungsbild [OptionenU<br />
] Ergebnisbild<br />
Dabei erlauben fast alle Image-<br />
Magick-Tools statt der Angabe eines<br />
Ergebnisbildes auch den Parameter<br />
x:, womit das Resultat der<br />
Verarbeitung quasi als Preview<br />
auf der X11-Oberfläche in einem<br />
Viewer erscheint, statt in einer<br />
Datei zu landen (Abbildung A).<br />
Convert<br />
Der einfachste Anwendungsfall<br />
für Convert besteht im Umwandeln<br />
des Eingangsformates in eines<br />
der unterstützten Ausgangsformate<br />
mittels<br />
$ convert bild‐alt.jpg bild‐neu.U<br />
png<br />
Die zu verwendenden Grafikformate<br />
erkennt Convert anhand der<br />
Dateiendung selbstständig. Bei<br />
der Gelegenheit ist es ein Leichtes,<br />
gleich die Größe des Zielbildes zu<br />
verändern. Dazu dient der Parameter<br />
‐resize. Er akzeptiert sowohl<br />
absolute Größenangaben in<br />
Pixeln (‐resize 320x240) als auch<br />
relative Größenangaben in Prozent<br />
(‐resize 20%). Beachten Sie,<br />
dass Sie auf diesem Weg zwar eine<br />
Zielgröße angeben dürfen, Convert<br />
aber ohne weitere Anweisungen<br />
stets das Seitenverhältnis des<br />
Ursprungsbildes beibehält. Versuchen<br />
Sie etwa, einen Screenshot<br />
von WXGA+ (1440x900) auf XGA<br />
(1024x768) herunterzurechnen,<br />
so führt der entsprechende Befehl<br />
$ convert wxga.jpg ‐resize 1024xU<br />
768 xga.jpg<br />
Name<br />
animate<br />
convert<br />
Funktion<br />
B Das Beschneiden<br />
von Bildern gehört zu<br />
den leichtesten Übungen<br />
von Convert.<br />
C Jeder Ausschnitt<br />
lässt sich durch Angabe<br />
von Offsets an einer<br />
beliebigen Stelle<br />
im Bild platzieren.<br />
ImageMagick-Tools<br />
spielt eine Serie von Bildern schnell hintereinander ab<br />
Bilder einlesen, bearbeiten und speichern<br />
compare vergleicht zwei Bilder und schreibt die Unterschiede in<br />
eine Bilddatei<br />
composite fügt mehrere Bilder zu einem Bild zusammen<br />
conjure führt Skripte in der Skriptsprache von ImageMagick<br />
aus<br />
display stellt ein Bild auf einem X11-Server dar<br />
identify zeigt Dateiformat, Bildgröße und weitere Bildparameter<br />
an<br />
import erzeugt Bildschirmfotos<br />
montage fügt mehrere Bilder zusammen<br />
mogrify funktioniert wie Convert, ersetzt aber das Ursprungsbild<br />
durch das Ergebnis<br />
stream liest Teile aus Bilddateien aus, um sie etwa als Rohdaten<br />
auszugeben<br />
www.linux-user.de<br />
08 | 12 69
praxis<br />
ImageMagick<br />
D Mit ‐crop zerlegen<br />
Sie ein Bild bei Bedarf<br />
in mehrere Teile.<br />
E Mit der Option<br />
‐gravity verschieben<br />
Sie den Ursprung für<br />
einen Bildausschnitt.<br />
dazu, dass xga.jpg keineswegs das<br />
angegebene Zielformat aufweist,<br />
sondern vielmehr eine Größe von<br />
1024 mal 640 Pixeln – im selben<br />
Seitenverhältnis wie das Ausgangsbild.<br />
Sie können ‐resize<br />
allerdings durch Angabe eines<br />
Ausrufezeichens hinter der Größenangabe<br />
(‐resize 320x240!) auch<br />
zwingen, die angegebene Skalierung<br />
vorzunehmen. Daraus resultieren<br />
je nach Formfaktor des Ursprungsbildes<br />
mehr oder minder<br />
starke Verzerrungen im Ergebnis.<br />
Beschneiden mit Convert<br />
Zum Beschneiden von Bildern<br />
verwendet Convert den Parameter<br />
‐crop, gefolgt von einer Größenangabe,<br />
die sich aus der Ausschnittsgröße<br />
und der Startposition<br />
zusammensetzt:<br />
$ convert bilU<br />
d‐alt.jpg ‐crU<br />
op 500x300+0+U<br />
0 bild‐neu.jpg<br />
Dies führt<br />
dazu, dass Convert<br />
aus dem<br />
Ursprungsbild<br />
eine Auswahl<br />
von 500 Punkten<br />
nach rechts<br />
und 300 Punkten<br />
nach unten<br />
ausschneidet<br />
und an der Position<br />
0/0 beginnt,<br />
was der<br />
linken oberen Ecke des Bildes entspricht<br />
(Abbildung B, vorige Seite).<br />
Dagegen schneidet der Befehl:<br />
$ convert bild‐alt.jpg ‐crop 500U<br />
x300+300+100 bild‐neu.jpg<br />
erst 300 Bildpunkte rechts und<br />
100 Bildpunkte unterhalb der linken<br />
oberen Bildecke eine Auswahl<br />
von 500 mal 300 Punkten aus<br />
(Abbildung C, vorige Seite).<br />
Der Parameter ‐crop weist noch<br />
einige Besonderheiten auf. Lassen<br />
Sie beispielsweise die Positionsangabe<br />
weg, erzeugt er so viele<br />
durchnummerierte Ergebnisbilder,<br />
wie mit dem vorgegebenen<br />
Ausschnitt in X- und Y-Richtung<br />
ins Originalbild passen (Abbildung<br />
D). Die Option ‐gravity erlaubt,<br />
den Ursprung zur Berechnung<br />
des Offsets zu verschieben.<br />
Als Vorgabe fungiert dabei 0/0<br />
(oben links), daneben gibt es die<br />
Angaben NorthWest, North, North‐<br />
East, West, Center, East, SouthWest,<br />
South sowie SouthEast. Der Befehl:<br />
$ convert bild‐alt.jpg ‐gravity U<br />
Center ‐crop 50%+0+0 bild‐neu.jpg<br />
ließe sich beispielsweise dazu einsetzen,<br />
das Resultat aus Abbildung<br />
E zu erzielen.<br />
Der Vollständigkeit halber sei<br />
noch die Option +repage erwähnt,<br />
die Sie korrekterweise noch anfügen<br />
müssen, weil sonst beim Beschneiden<br />
mit ‐crop die Werte für<br />
canvas und offset im Header des<br />
Bildes falsch erhalten bleiben.<br />
Sie können die oben gezeigte<br />
Formatumwandlung sowie das<br />
Skalieren und Beschneiden – wie<br />
alle Convert-Optionen – auch in<br />
einem Befehl kombinieren.<br />
Stapelverarbeitung<br />
Möchten Sie die genannten Operationen<br />
auf 100 oder mehr Fotos<br />
anwenden, kommen die Fähigkeiten<br />
der Shell ins Spiel. Im folgenden<br />
Beispiel schreiben wir die<br />
verkleinerten Ausgangsbilder in<br />
einen zuvor angelegten separaten<br />
Ordner (fotos‐small/), damit die<br />
Originalbilder erhalten bleiben<br />
$ for i in .jpg; do convert $i -U<br />
resize 1280x960 ‐gravity SouthWeU<br />
st ‐crop 1024x768+0+0 +repage foU<br />
tos‐small/$i; done<br />
Das Kombinieren von ‐resize,<br />
‐crop und ‐gravity bietet sich insbesondere<br />
dann an, wenn Sie eine<br />
große Anzahl von Bildern etwa<br />
für einen <strong>Web</strong>-Katalog normieren<br />
müssen. In einem Szenario aus<br />
dem Bereich Produktmanagement<br />
sah sich der Autor beispielsweise<br />
mit der Situation konfrontiert,<br />
Produktbilder eines Fahrradherstellers<br />
für einen Online-<br />
Katalog in ein einheitliches Format<br />
zu bringen, wobei die vom<br />
Hersteller gelieferten Bilder nicht<br />
durchgängig das gleiche Format<br />
70 08 | 12<br />
www.linux-user.de
ImageMagick<br />
praxis<br />
besaßen. Außerdem wurde<br />
beim Fotografieren nicht<br />
immer der gleiche Ausschnitt<br />
und die gleiche Perspektive<br />
gewählt. Die Ausgangsbilder<br />
sollten am<br />
Ende ausnahmslos über einen<br />
Rand verfügen, damit<br />
sie sich optisch gut in das<br />
Layout des Katalogs einfügten.<br />
Als Lösung wurden die<br />
Bilder zunächst mit ‐resize<br />
in ein einheitliches Format<br />
gebracht, das geringfügig<br />
größer als das Zielformat<br />
ausfiel. Nach Festlegen eines<br />
neuen Koordinatenursprungs<br />
(links unten) mit<br />
‐gravity entstand durch Anwenden<br />
von ‐crop eine Auswahl,<br />
die in X- und Y-Richtung<br />
10 Pixel unter dem<br />
Zielformat lag. Anschließend<br />
erhielten alle Bilder<br />
mit convert ‐bordercolor<br />
white ‐border 5 einen weißen<br />
Rand von 5 Pixeln.<br />
F Das Drehen eines<br />
Bildes gehört zu den<br />
leichteren Übungen für<br />
das Tool Convert.<br />
G Das Spiegeln gehört<br />
ebenfalls zu den eher<br />
trivialen Operationen.<br />
Drehen und Spiegeln<br />
Selbstverständlich kann<br />
Convert Bilder auch in vielfältiger<br />
Weise transformieren.<br />
Zum Drehen eines Bildes kommt<br />
beispielsweise ‐rotate n zum Einsatz,<br />
wobei n den Drehwinkel in<br />
Grad angibt (Abbildung F, vorherige<br />
Seite). Geben Sie einen negativen<br />
Wert vor, rotiert Convert<br />
das Bild gegen den Uhrzeigersinn.<br />
Als nützlich erweisen sich in diesem<br />
Zusammenhang die Operatoren<br />
< und >, die häufig in Skripten<br />
Verwendung finden. Stellen Sie<br />
der Winkelangabe ein < voran,<br />
dreht Convert das Bild nur dann,<br />
wenn es in einem Hochformat<br />
vorliegt; bei > nur, falls es ursprünglich<br />
querformatig ist.<br />
Convert kann Bilder auch problemlos<br />
spiegeln (Abbildung G,<br />
vorherige Seite) und bietet dazu<br />
die vier Varianten waagerecht<br />
(‐flip), senkrecht (-flop), diagonal<br />
links oben/rechts unten (‐transpose)<br />
und diagonal rechts oben/<br />
links unten (‐transverse) an.<br />
Weitere Optionen<br />
Neben den bereits vorgestellten,<br />
wohl am häufigsten eingesetzten<br />
Optionen kennt ImageMagick<br />
noch Hunderte weitere [5]. Ein<br />
paar Beispiele sollen im Folgenden<br />
die mögliche Bandbreite des<br />
Werkzeugkastens aufzeigen.<br />
So streckt etwa die Option ‐normalize<br />
das Histogramm des Bildes<br />
mit dem Ergebnis, dass Weiß die<br />
hellste und Schwarz die dunkelste<br />
Farbe ist, was in vielen Fällen zu<br />
einer Verbesserung führt. Mit<br />
dem Befehl:<br />
$ convert bild‐ein.jpg ‐fx u*(1+U<br />
j/h)*0.85 x:<br />
betonen Sie beispielsweise die<br />
helleren Bildteile (Abbildung 8,<br />
nächste Seite). Das Bild verliert<br />
dabei zwar etwas an Kontrast,<br />
das lässt sich aber mit ‐normalize<br />
umgehend wieder korrigieren.<br />
Sie ahnen sicher bereits, dass der<br />
Operator ‐fx nicht für das Aufhellen<br />
oder Abdunkeln eines Bildes<br />
steht. Vielmehr handelt es sich<br />
um den Special-Effects-Operator<br />
von ImageMagick. Er erwartet als<br />
Argument einen mehr oder weniger<br />
komplexen mathematischen<br />
Ausdruck. Mithilfe von ‐fx können<br />
Sie beispielsweise auch Gradienten<br />
erzeugen, Farbwerte zwischen<br />
Bild und Farbkanälen austauschen,<br />
Farben in komplexer<br />
Weise mischen und vieles mehr.<br />
Zum Generieren eines passenden<br />
Ausdrucks stehen an die hundert<br />
Operatoren der Fx Expression<br />
Language zur Verfügung [6]. Im<br />
Netz finden sich Beispiele zum direkten<br />
Verwenden, das Verständnis<br />
der Wirkungsweise komplexer<br />
Formeln zur Bildmanipulation erfordert<br />
allerdings mathematisches<br />
Grundlagenwissen zur elektronischen<br />
Bildbearbeitung.<br />
www.linux-user.de<br />
08 | 12 71
praxis<br />
ImageMagick<br />
H Convert erlaubt<br />
das Anwenden von<br />
komplexen Filtern, die<br />
ihre mathematische<br />
Natur in ImageMagick<br />
schonungsloser offenbaren<br />
als in Gimp.<br />
hend von der linken oberen<br />
Bildecke) auszugeben<br />
(Abbildung J).<br />
Convert komprimiert<br />
die Bilder auf Wunsch außerdem<br />
mit ‐compress Typ<br />
für verschiedene Anwendungszwecke.<br />
Zur Verfügung<br />
stehen die Kompressionstypen<br />
None, BZip,<br />
Fax Group4, JPEG, JPEG2000,<br />
Lossless, LZW, RLE und Zip.<br />
I Mit Convert lassen<br />
sich auch Gamma-Korrekturen<br />
vornehmen.<br />
J Dank Convert<br />
versehen Sie mit<br />
wenigen Handgriffen<br />
ein Bild mit einem<br />
Wasserzeichen.<br />
Convert kann darüber hinaus<br />
auch Gamma-Werte manipulieren:<br />
Mit dem Befehl convert ‐gamma<br />
1.10,1.05,1.0 verstärken Sie<br />
beispielsweise den Rot- und den<br />
und Grün-Anteil und machen ein<br />
Bild damit wärmer (Abbildung I).<br />
Wasserzeichen<br />
Um mit Convert Bildern mit wenigen<br />
Handgriffen ein Wasserzeichen<br />
hinzuzufügen, benötigen Sie<br />
lediglich die Optionen ‐font, ‐fill<br />
und ‐draw. Schriftart sowie Größe<br />
und Farbe des Textes legen Sie<br />
nach Belieben fest:<br />
$ convert bild‐ein.jpg ‐font UbuU<br />
ntu ‐pointsize 30 ‐fill gray ‐drU<br />
aw "text 200,100 'Copyright by DU<br />
rilling'" bild‐aus.png<br />
Dabei weist "text 200,100 'Copyright<br />
by Drilling'" den Operator<br />
‐draw an, den angegebenen Text<br />
an der Position 200,100 (ausge-<br />
Filter einsetzen<br />
ImageMagick kennt zahlreiche<br />
Filter, mit deren<br />
Hilfe Sie mehr oder weniger<br />
nützliche Effekte auf<br />
die Bilder anwenden.<br />
Eine Liste dieser Filter<br />
inklusive Syntax finden<br />
Sie in der bereits erwähnten<br />
Operatoren- und Parameter-Liste<br />
[5] auf der<br />
ImageMagick-<strong>Web</strong>site.<br />
Zu den Standard-Effekten<br />
zählt ‐sharpen zum<br />
Schärfen eines Bildes, der als Argument<br />
wahlweise eine einfache<br />
Radius-Funktion akzeptiert oder<br />
einen komplexen Gaußschen<br />
Operator. Ähnlich funktioniert<br />
der Blur-Effekt, der die Schärfe<br />
aus einen Bild herausnimmt, indem<br />
er den Hintergrund verwischt<br />
(Abbildung K). Möchten<br />
Sie den Kontrast erhöhen, dann<br />
erledigen Sie das wahlweise für<br />
die einzelnen Kanäle Rot, Grün,<br />
Blau und Alpha getrennt oder in<br />
einem Rutsch für alle vier<br />
Kanäle über den Operator<br />
‐contrast‐stretch (Abbildung<br />
L).<br />
Wer bin ich?<br />
Convert ist nur eines von<br />
elf Werkzeugen des<br />
ImageMagick-Paketes –<br />
wenn auch mit Abstand<br />
das wichtigste, was die eigentliche<br />
Bildbearbeitung<br />
angeht. Als besonders<br />
nützlich erweist sich aber<br />
immer wieder auch das<br />
Tool Identify, mit dessen<br />
Hilfe Sie ohne großen<br />
72 08 | 12<br />
www.linux-user.de
ImageMagick<br />
praxis<br />
K Die Wirkungsweise<br />
des Blur-Effektes lässt<br />
sich am besten mit<br />
„Verwischen“ umschreiben.<br />
Aufwand jedem Bild wichtige Parameter<br />
entlocken.<br />
So liefert beispielsweise der Aufruf<br />
indentify *.jpg Informationen<br />
zu Breite, Höhe, Farbtiefe und<br />
Dateigröße jedes JPEG-Bildes im<br />
aktuellen Verzeichnis. Jede Zeile<br />
der Ausgabe beschreibt bei dieser<br />
Kurzform genau ein Bild. Die<br />
Auskunftsfreudigkeit von identify<br />
lässt sich aber über den Parameter<br />
‐verbose erhöhen und entlockt<br />
dem Bild dann unter anderem<br />
auch Exif-Werte.<br />
Fazit<br />
ImageMagick zählt zweifelsohne<br />
zu den nützlichsten Tool-Paketen<br />
unter Linux überhaupt. Die Leistungsfähigkeit<br />
der einzelnen<br />
Funktionen braucht sich hinter<br />
jener von Werkzeugen wie Gimp<br />
nicht zu verstecken.<br />
Die elf Komponenten der Suite<br />
basieren alle auf den gleichen Bibliotheken,<br />
verwenden dasselbe<br />
Syntax-Schema und lassen sich<br />
nahtlos miteinander kombinieren.<br />
Dazu gibt es Hunderte von<br />
Operatoren und eine eigene Formelsprache.<br />
Dabei beschränkt<br />
sich ImageMagick nicht nur auf<br />
einfache Filter, sondern kann beispielsweise<br />
auch Morph-Effekte<br />
auf Bildserien anwenden.<br />
Allerdings erfordern zahlreiche<br />
Funktionen, insbesondere Filter<br />
und Effekte, fundiertes Grundlagenwissen<br />
der Mathematik zur<br />
Bildbearbeitung, um beim Anwenden<br />
von Effekten nicht auf<br />
bloßes Herumprobieren angewiesen<br />
zu sein. Das gilt aber ebenso<br />
für grafische Programme des Ka-<br />
libers von Adobe Photoshop oder<br />
Gimp, obwohl sie die Funktionen<br />
in eine hübsche GUI verpacken.<br />
Die meisten Anwender nutzen<br />
ImageMagick aber ohnehin eher<br />
für einfache Dinge, wie Normierungen<br />
oder Formatumwandlungen,<br />
denn hierbei ermöglicht die<br />
Kommandoschnittstelle ein automatisiertes<br />
Verarbeiten. <strong>Web</strong>-<br />
Dienstleister nutzen oft die Tools<br />
– etwa, wenn sie eine Upload-<br />
Funktion für Bilder anbieten.<br />
Hinsichtlich der ungeheuren Flexibilität<br />
der Suite gibt es nichts,<br />
was hier mit ImageMagick mithalten<br />
könnte. (jlu) n<br />
L Das Erhöhen des<br />
Kontrastes gelingt<br />
wahlweise für alle<br />
oder jeden einzelnen<br />
Farbkanal.<br />
info<br />
[1] ImageMagick:http:// imagemagick. org<br />
[2] ImageMagick-Quellen: http:// imagemagick.<br />
org/ script/ install‐source. php# unix<br />
[3] ImageMagick Core API: http:// image-<br />
magick. org/ script/ magick‐core. php<br />
[4] ImageMagick-Tools: http:// imagemagick.<br />
org/ script/ command‐line‐tools. php<br />
[5] ImageMagick-Optionen:<br />
http:// imagemagick. org/ script/<br />
command‐line‐options. php<br />
[6] FX-Expressions:<br />
http:// www. imagemagick. org/ script/ fx. php<br />
www.linux-user.de<br />
08 | 12 73
netz&system<br />
Netcat & Co.<br />
Einfache Datenübertragung zwischen Hosts mit Netcat<br />
Netzwerker<br />
Die Unix-Bordmittel erweisen sich in Sachen Netzwerkkommunikation<br />
als recht flexibel. Bei Bedarf setzen Sie mit einfachen Mitteln<br />
sogar einen kleinen Server auf. Falko Benthin<br />
© Colin Broug, sxc.hu<br />
README<br />
Ncat 5.51 (RPM)<br />
LU/ncat/<br />
Cryptcat 1.2.1<br />
(Quellen)<br />
LU/cryptcat/<br />
Schnell Dateien zwischen<br />
zwei Rechnern<br />
austauschen, Ports und<br />
dahinterlaufende Anwendungen<br />
abklopfen,<br />
eine Bind Shell oder einen<br />
einfachen Server<br />
einrichten – eigentlich<br />
Aufgaben, die verschiedene<br />
Programme erfordern.<br />
Oder nur eines,<br />
wenn es sich dabei um<br />
das 1996 entwickelte<br />
Netcat oder dessen<br />
Nachfolger Ncat oder<br />
Cryptcat handelt.<br />
Als Schweizer Taschenmesser<br />
unter den Netzwerk-Tools gilt<br />
schon seit 1996 Netcat [1]. Es ist<br />
etwas in die Jahre gekommen<br />
und lässt daher inzwischen einige<br />
Funktionen vermissen, wie etwa<br />
das verschlüsselte Übertragen<br />
von Daten oder das immer populärer<br />
werdende IPv6.<br />
So existieren inzwischen etliche<br />
neue Implementationen, wie<br />
Ncat [2] oder Cryptcat [3], die einen<br />
beträchtlich erweiterten Umfang<br />
an Funktionen mitbringen.<br />
Ncat, das Netcat für das 21. Jahrhundert,<br />
kommt von den Machern<br />
des populären Netzwerk-<br />
Scanners Nmap. Cryptcat stammt<br />
aus der Schmiede mehrerer Entwickler<br />
rund um Farm9.<br />
Suchen und Finden<br />
Wie bereits oben erwähnt, eignen<br />
sich die in diesem Beitrag vorgestellten<br />
Werkzeuge für ein breites<br />
Spektrum an Aufgaben. Netcat<br />
dient beispielsweise als Werkzeug<br />
zur Diagnose, wenn sich ein<br />
Rechner im Netz anders verhält<br />
als erwartet. Mit dem Befehl nc<br />
‐vz Host 1‐1024 klopfen Sie alle<br />
Ports bis 1024 ab. Auf diesen laufen<br />
die meisten bekannten Dienste,<br />
wie Mail, FTP oder SSH.<br />
Findet das Programm einen offenen<br />
Port, quittiert es dies mit<br />
einer entsprechenden Nachricht.<br />
Die Portnummer dient dann als<br />
Grundlage für weitere Analysen.<br />
Verbindet sich Netcat direkt mit<br />
einem offenen Port, plaudern viele<br />
der dahinterlaufenden Anwendungen<br />
Name und Versionsnummer<br />
aus.<br />
Mit Netcat haben Sie nicht nur<br />
die Möglichkeit, zu prüfen, welche<br />
Dienste hinter einem Port<br />
laufen, sondern zusätzlich, ob sie<br />
korrekt funktionieren. Angenommen,<br />
ein Mailclient verweigert<br />
seinen Dienst und konfrontiert<br />
den Nutzer mit Nachrichten wie<br />
Der SMTP-Server hat keine korrekte<br />
Begrüßung gesendet. Ein Überprüfen<br />
des Ports zeigt zunächst,<br />
dass dieser offensteht. Dann wäre<br />
der nächste Schritt, den Mailserver<br />
direkt zu kontaktieren und<br />
die Begrüßung manuell vorzunehmen<br />
(Abbildung 1).<br />
Dabei zeigt sich dann, ob der<br />
Datenaustausch mit dem Server<br />
reibungslos funktioniert oder<br />
eine zu scharf eingestellte<br />
Firewall, eine falsche Konfiguration<br />
oder eine fehlerhafte Implementation<br />
des SMTP-Handshakes<br />
im Mail-Client als Ursache infrage<br />
kommt.<br />
Allrounder<br />
Möchten Sie Daten von einem<br />
Rechner auf einen anderen übertragen<br />
oder mit einem anderen<br />
Anwender via Kommandozeile<br />
plaudern, hilft Netcat ebenfalls<br />
weiter. Der Befehl nc ‐l ‐p 11111<br />
veranlasst Netcat, in den Server-<br />
Modus zu gehen und auf Port<br />
11111 zu lauschen.<br />
Verbindet sich jetzt ein Client<br />
via nc Host> 11111 von einem anderen<br />
Rechner mit dem fraglichen<br />
Port, erscheinen die Einga-<br />
Installation<br />
Sowohl Netcat (oft auch nc) als<br />
auch Ncat und Cryptcat finden sich<br />
in den Repositories der meisten<br />
Distributionen. Bei Bedarf spielen<br />
Sie die Tools also mithilfe des Paketmanagers<br />
ein. Einige Distributionen<br />
installieren zumindest Netcat<br />
sogar standardmäßig. Ncat gehört<br />
zu Nmap und findet seinen Weg auf<br />
die Platte, sobald Sie diesen Portscanner<br />
installieren.<br />
74 08 | 12<br />
www.linux-user.de
Netcat & Co.<br />
netz&system<br />
ben auf dem einen Rechner als<br />
Ausgabe auf dem anderen, und<br />
zwar so lange, bis eine der beiden<br />
Netcat-Instanzen endet. Um auf<br />
einem Port kleiner oder gleich<br />
1024 zu lauschen, müssen Sie<br />
Netcat mit Root-Rechten starten.<br />
Auf diesem Weg können Sie<br />
auch Dateien mithilfe von Netcat<br />
übers Netzwerk kopieren: Dazu<br />
gilt es lediglich, jeweils die Standardeingabe<br />
und die Standardausgabe<br />
umzubiegen. Um das zu<br />
bewerkstelligen, erweitern Sie<br />
den Befehl auf dem Server um ><br />
Ausgabedatei, während Sie auf dem<br />
Client < Eingabedatei anhängen.<br />
Mit einigen Hilfsmitteln wie<br />
etwa Tar und Pipes kopieren Sie<br />
auf diesem Weg sogar ganze Verzeichnisse.<br />
Vertauschen Sie die<br />
Ein- und Ausgabe, sorgen Sie auf<br />
diese Weise für einen Transfer<br />
der Daten vom Server zum Client.<br />
Das ermöglicht es, mit wenig Aufwand<br />
blitzschnell einfache Server<br />
einzurichten.<br />
Netcat stellt so beispielsweise<br />
<strong>Web</strong>seiten bereit oder verschickt<br />
Audio- und Video-Dateien. Dabei<br />
stört es jedoch, dass sich Netcat<br />
beendet, sobald das Übertragen<br />
der Daten abgeschlossen ist. Dem<br />
schieben Sie einen Riegel vor, indem<br />
Sie Netcat in ein kleines<br />
Skript verpacken, das sofort eine<br />
neue Instanz startet, sobald eine<br />
sich beendet (Listing 1).<br />
rameter ‐e, gefolgt<br />
von der favorisierten<br />
Shell. Mit nc ‐l ‐e<br />
/ bin/bash ‐p 11111<br />
wartet Netcat am<br />
Port 11111 und bietet<br />
jedem Vorbeikommenden<br />
ohne weitere<br />
Authentifizierung<br />
eine Bash mit den<br />
Rechten desjenigen<br />
Nutzers an, der Netcat<br />
gestartet hat (Abbildung<br />
B).<br />
Ebenso lässt sich eine Reverse<br />
Shell ins Leben rufen. Dazu starten<br />
Sie auf dem Rechner mit physischen<br />
Zugriff Netcat als Server.<br />
Dem Client übergeben Sie dann<br />
mit ‐e die gewünschte Shell. Sobald<br />
dieser sich mit dem Server<br />
verbunden hat, können Sie diesen<br />
von dort kontrollieren.<br />
Verschlüsselter Transfer<br />
Während es im heimischen Netzwerk<br />
nicht ganz so tragisch erscheint,<br />
wenn Daten unverschlüsselt<br />
von einem Rechner zum anderen<br />
rauschen, sieht das im Firmennetz<br />
oder Internet schon<br />
ganz anders aus: Hier leistet<br />
Cryptcat gute Dienste, eine Kombination<br />
aus Netcat und einer<br />
Funktion zum Verschlüsseln. Dabei<br />
kommt der Twofish-Algorithmus<br />
[4] zum Einsatz.<br />
Der Einsatz von Cryptcat gleicht<br />
dem von Netcat. Cryptcat bringt<br />
jedoch den zusätzlichen Parameter<br />
‐k Passwort mit, mit dem Sie<br />
das Passwort für die Verschlüsselung<br />
festlegen. Geben Sie kein<br />
Passwort an, dann greift Cryptcat<br />
auf das fest implementierte Passwort<br />
metallica zurück.<br />
Cryptcat überträgt die Daten<br />
also in jedem Fall verschlüsselt.<br />
Setzen Sie also an einem Ende der<br />
A Netcat bei der Fehlerdiagnose.<br />
Zum Angriff<br />
Netcat eignet sich für viel Gutes,<br />
hat aber ebenso Potenzial für einen<br />
Angriff. Neben Lauschen und<br />
Daten austauschen vermag es zusätzliche<br />
Anwendungen zu starten.<br />
Das eröffnet die Möglichkeit,<br />
in einem Netzwerk eine Backdoor-Shell<br />
zu öffnen, die Verbindungen<br />
von außen zulässt. Um<br />
Netcat für derart finstere Szenarien<br />
einzusetzen, genügt der Pa-<br />
B Kleiner Befehl,<br />
große Wirkung: Selbst<br />
eine primitive Backdoor<br />
mit Netcat liefert zahlreiche<br />
Informationen<br />
über einen Rechner.<br />
Listing 1<br />
#! /bin/bash<br />
while true ; do<br />
nc ‐l ‐p 11111 < Ausgabedatei<br />
done<br />
C Cryptcat versendet<br />
verschlüsselt mit<br />
passwortgeschütztem<br />
Twofish-Algorithmus.<br />
www.linux-user.de<br />
08 | 12 75
netz&system<br />
Netcat & Co.<br />
D Die Broker-Funktion<br />
von Ncat erlaubt den<br />
Datenaustausch zwischen<br />
Clients.<br />
E Ncat arbeitet bei<br />
Bedarf als einfacher<br />
Glossar<br />
Chat-Server.<br />
SCTP: Stream Control<br />
Transmission Protocol<br />
(RFC 4960). Zuverlässiges,<br />
verbindungsorientiertes<br />
Transportprotokoll,<br />
das auf einem potenziell<br />
unzuverlässigen<br />
verbindungslosen Paketdienst<br />
aufsetzt. Ursprünglich<br />
entwickelt,<br />
um Signalisierungsdaten<br />
von Telefonnetzen<br />
auch über IP-Netzwerke<br />
übertragen zu<br />
können.<br />
Ncat: Zertifikate einbinden<br />
Ort<br />
Auf dem Server<br />
Auf dem Client<br />
Zusatzoptionen<br />
Kommunikation auf Netcat, dann<br />
sendet Cryptcat an dieses chiffrierte<br />
Daten oder versucht, den<br />
im Klartext übermittelten Datenstrom<br />
zu entschlüsseln. Beides<br />
führt unweigerlich zu Unsinn<br />
(Abbildung C, vorherige Seite).<br />
Ncat<br />
Obwohl das traditionelle, aber betagte<br />
Netcat noch gute Dienste<br />
leistet, hat sich das Rad der Zeit<br />
weitergedreht und zahlreiche<br />
neue Anforderungen hervorgebracht.<br />
Diese bewegten die<br />
Nmap-Entwickler 2005 dazu, die<br />
Software neu zu implementieren.<br />
Die neue Variante Ncat verfügt<br />
(bis auf das Portscanning) über<br />
alle Funktionen, die Netcat mitbringt,<br />
und verwendet sogar<br />
weitgehend dieselben Parameter.<br />
Darüber hinaus erweiterten die<br />
Entwickler die Software im Vergleich<br />
zum Original erheblich.<br />
Ncat versteht sich auf die gängigen<br />
Transportprotokolle TCP und<br />
SCTP sowie neben IPv4 auch auf<br />
IPv6. Bei Bedarf verwaltet die<br />
‐‐ssl ‐‐ssl‐cert Zertifikatsdatei ‐‐ssl‐key<br />
Schlüsseldatei<br />
‐‐ssl‐verify ‐‐ssl‐trustfile Schlüsseldatei<br />
Software mehrere parallele Verbindungen<br />
und kontrolliert, ob<br />
anfragende Clients eine Verbindung<br />
herstellen dürfen.<br />
Wer Ncat bereits kennt, dem<br />
fällt der Umstieg auf Ncat nicht<br />
schwer. Mit ncat ‐l versetzen Sie<br />
die Software in den Server-Modus,<br />
der Parameter ‐p entfällt. Die<br />
Angaben für Host und Port sind<br />
optional: Geben Sie sie nicht mit,<br />
lauscht Ncat an allen Netzwerkschnittstellen<br />
auf Port 31337.<br />
Mit der einfachen Eingabe des<br />
Befehls bauen Sie eine Verbindung<br />
zu einem anderen Rechner<br />
auf. Standardmäßig akzeptiert<br />
Ncat bis zu 100 gleichzeitige Verbindungen<br />
– ein Wert, den Sie<br />
mit der Option ‐m gefolgt von einem<br />
Zahlenwert anpassen.<br />
Sobald sich einer der Clients beendet,<br />
verabschiedet sich auch<br />
der Server. War bei Netcat noch<br />
ein kleines Skript nötig, das den<br />
Server nach dem Beenden sofort<br />
wieder startete, verhindert bei<br />
Ncat die Option ‐k (‐‐keep‐open),<br />
dass sich der Server zeitgleich mit<br />
einem Client davonmacht.<br />
Gut gesichert<br />
Dank SSL kommunizieren Ncat-<br />
Instanzen miteinander, ohne dass<br />
Dritte die Datenströme im Klartext<br />
abgreifen können. Dazu erstellt<br />
der Ncat-Server mit dem<br />
zusätzlichen Schalter ‐‐ssl temporäre<br />
SSL-Zertifikate und<br />
‐Schlüssel. Diese chiffrieren zwar<br />
die Kommunikation, schützen<br />
aber nicht vor Man-in-the-<br />
Middle- Angriffen. Ist das erforderlich,<br />
schicken Sie mithilfe der<br />
Optionen aus der Tabelle Ncat:<br />
Zertifikate einbinden vorhandene<br />
(und eventuell signierte) Zertifikate<br />
und Schlüssel ins Rennen.<br />
In der Regel wissen die bei einem<br />
Ncat-Server angemeldeten<br />
Clients nichts voneinander. Damit<br />
sich das ändert, schlüpft die<br />
moderne Netzkatze in die Rolle<br />
des Vermittlers: Die Option<br />
‐‐broker sorgt dafür, dass der<br />
Ncat-Server zentral die Kommunikation<br />
zwischen den Clients abwickelt.<br />
Der Server kann eigene<br />
Nachrichten absetzen, aber er<br />
zeigt keine Mitteilungen an, die<br />
er an die anderen Clients weiterleitet<br />
(Abbildung D).<br />
Auf diese Weise verteilen Sie<br />
beispielsweise Datenströme aus<br />
der Standardeingabe über einen<br />
Broker an mehrere Hosts. Haben<br />
Sie erst einmal den Server mit<br />
ncat ‐l ‐‐broker gestartet, besteht<br />
auch die Möglichkeit, die empfangenden<br />
Clients zum Leben zu erwecken.<br />
Dazu geben Sie dort beispielsweise<br />
folgenden Befehl ein:<br />
$ ncat Server > Ausgabedatei<br />
Er leitet alle empfangenen Bits<br />
und Bytes in die Ausgabedatei<br />
um, genauso wie beim originalen<br />
Ne tc at .<br />
Da Ncat nichts puffert, darf der<br />
sendende Client erst starten,<br />
wenn der Empfänger bereits<br />
läuft. Dann schicken Sie mit dem<br />
folgenden Befehl die Datei auf<br />
den Weg:<br />
$ ncat Server < Eingabedatei<br />
Einen empfangenden Client<br />
müssen Sie manuell mit<br />
[Strg]+[C] herunterfahren. Mit<br />
‐‐recv‐only und ‐‐send‐only ver-<br />
76 08 | 12<br />
www.linux-user.de
Netcat & Co.<br />
netz&system<br />
fügt Ncat über zwei Optionen,<br />
um die Daten entweder nur zu<br />
senden oder nur zu empfangen.<br />
Wie Netcat unterstützt Ncat<br />
den direkten Dialog im Netzwerk.<br />
Dabei erhöht sich die Anzahl der<br />
möglichen Gesprächsteilnehmer<br />
dank der multiplen Verbindungen<br />
deutlich. Sobald allerdings mehr<br />
als zwei Anwender miteinander<br />
ins Gespräch kommen, fällt es<br />
schwer, Geschriebenes einer Person<br />
zuzuordnen.<br />
Dennoch tauschen die Nmap-<br />
Entwickler offenbar des Öfteren<br />
Informationen auf diesem Weg<br />
aus – anders ist die Option ‐‐chat<br />
nicht zu erklären. Geben Sie diese<br />
beim Start des Servers an, verwandelt<br />
sich Ncat in einen einfachen<br />
Chat-Server (Abbildung E).<br />
Dieser ordnet die Nutzer: Alle<br />
Ausgaben erhalten ein Präfix der<br />
Form . Meldet sich ein<br />
Anwender ab, passiert es unter<br />
Umständen, dass er später unter<br />
einem völlig anderen Namen wieder<br />
im Chat auftaucht.<br />
Während andere Netcat-Implementierungen<br />
in vielen Features<br />
mit Ncat zusammenspielen, ist<br />
beim Chat Schluss: Anwender mit<br />
dem traditionellen Netcat dürfen<br />
sich anmelden, bleiben jedoch<br />
vom Gespräch ausgeschlossen.<br />
Privilegierter Kreis<br />
Schon bei Netcat zeigte sich die<br />
Gefahr, dass jeder beliebige Host<br />
sich mit dem Programm verbinden<br />
kann, sofern Sie keine<br />
Schutzmaßnahmen ergreifen.<br />
Ncat bringt zwar einige einfache<br />
Schutzmaßnahmen mit, ein Angreifer<br />
könnte diese jedoch im<br />
Zweifel schnell überwinden.<br />
Mit den Anweisungen ‐‐allow<br />
beziehungsweise ‐‐deny bauen Sie<br />
eine einfache Zugriffskontrolle<br />
[1] Netcat: http:// nc110. sourceforge. net<br />
[2] Ncat: http:// nmap. org/ ncat/<br />
info<br />
[3] Cryptcat:<br />
http:// sourceforge. net/ projects/ cryptcat/<br />
[4] Twofish:<br />
http:// de. wikipedia. org/ wiki/ Twofish<br />
auf, die einzelne IP-<br />
Adressen, Subnetze<br />
oder Hostnamen umfasst<br />
(Abbildung F).<br />
Ncat akzeptiert mehrere<br />
Hosts, die Sie<br />
durch Kommata getrennt<br />
auflisten.<br />
Starten Sie Ncat oft<br />
mit der Allow/Deny-<br />
Option, lohnt es sich, die betroffenen<br />
Hosts in einer Textdatei<br />
aufzulisten, um sie nicht immer<br />
neu eingeben zu müssen. Die entsprechende<br />
Datei geben Sie Ncat<br />
beim Start über die Parametern<br />
‐‐allowfile Datei oder ‐‐denyfile<br />
Datei mit auf den Weg.<br />
Protokoll<br />
Ncat bietet die Möglichkeit, die<br />
komplette Kommunikation in einer<br />
Datei mitzuschneiden, ein sogenanntes<br />
Dump-File. Dazu leiten<br />
Sie die Daten mit der Option<br />
‐o Datei um, und schon findet<br />
sich der gesamte Datenaustausch<br />
in dieser Datei wieder.<br />
Verwenden Sie die Option ‐x anstelle<br />
von ‐o, wandert der Verkehr<br />
in Hexadezimal-Ausgabe in die<br />
Option<br />
Einsatzzweck<br />
Datei. Wollen Sie die Ausgabe an<br />
eine bestehende Datei anhängen,<br />
verwenden Sie die Option ‐‐appendoutput.<br />
Netcat kennt daneben die<br />
Option ‐o, schreibt aber direkt im<br />
Hexadezimalformat mit.<br />
Ncat und Netcat plotten zwar<br />
den Verkehr mit, die durchaus<br />
ebenfalls interessanten Ereignisse<br />
– etwa, welcher Host sich mit der<br />
jeweiligen Software verbunden<br />
hat – tauchen jedoch nicht auf.<br />
Fazit<br />
Es lohnt sich auf jeden Fall, die<br />
einzelnen Varianten zu vergleichen.<br />
Netcat und Konsorten sind<br />
keinesfalls die besten Werkzeuge<br />
für jede Aufgabe, erweisen sich<br />
aber in kundigen Händen als flexible<br />
Werkzeuge. (agr) n<br />
F Hosts mit falscher<br />
Adresse weist Ncat auf<br />
Wunsch ab.<br />
Optionen für Netcat und Ncat<br />
‐l Port, ‐‐listen Port Server-Modus, lauscht auf dem angegebenen Port nach eingehenden Verbindungen<br />
‐p Port, ‐‐source‐port Port legt den zu verwendenden Ausgangsport fest (in manchen Implementationen<br />
nicht in Kombination mit ‐l erlaubt)<br />
‐u, ‐‐udp<br />
UDP anstelle von TCP verwenden<br />
‐w Zahl, ‐‐wait Zahl Timeout auf Zahl Sekunden setzen<br />
‐v, ‐‐verbose<br />
ausführliche Ausgabe (wiederholte Angabe erhöht den Umfang der Ausgabe)<br />
‐e Befehl, ‐‐exec Befehl nach Aufbau der Verbindung Befehl ausführen<br />
‐c Befehl, ‐‐sh‐exec Befehl nach Aufbau der Verbindung Befehl in Shell /bin/sh ausführen<br />
‐o, ‐‐output Datei<br />
Ausgabe in Datei umleiten<br />
‐4, ‐6 ausschließlich IPv4 beziehungsweise IPv6 erlauben<br />
‐n, ‐‐nodns<br />
IP-Adressen nicht zu Hostnamen auflösen<br />
nur Netcat<br />
‐z kein Datenaustausch beim Scannen von Ports<br />
nur Ncat<br />
‐k, ‐‐keep‐open<br />
Server läuft weiter, wenn sich der Client beendet<br />
‐m Zahl, ‐‐max‐conns Zahl Anzahl simultaner Verbindungen (voreingestellt: 100)<br />
‐‐send‐only, ‐‐recv‐only nur Daten senden, beziehungsweise empfangen<br />
‐‐allow, ‐‐deny<br />
Kontakt mit angegebenen Hosts erlauben, beziehungsweise verbieten<br />
‐‐broker<br />
Kommunikation zwischen per Ncat-Server verbundenen Hosts erlauben<br />
‐‐chat<br />
einfacher Chat-Server<br />
‐‐ssl<br />
Daten SSL-verschlüsselt übertragen<br />
www.linux-user.de<br />
08 | 12 77
hardware<br />
Samsung CLX-6220FX<br />
Multifunktionsgerät CLX-6220FX von Samsung<br />
Multitalent<br />
Multifunktionsgeräte lösen im Home-Office zunehmend den<br />
Maschinenpark aus Drucker, Kopierer, Faxgerät und Scanner ab.<br />
Samsung will mit seinen Profi-Geräten dabei auch bei<br />
Linux-Anwendern punkten. Erik Bärwaldt<br />
README<br />
Leistungsfähige Multifunktionsgeräte<br />
gelten<br />
aufgrund mangelnder<br />
Betriebssystem-Unterstützung<br />
durch die Hersteller<br />
unter Linux immer<br />
noch als schlecht<br />
einsetzbar. Wir testen,<br />
was ein professionelles<br />
Gerät von Samsung unter<br />
Linux leistet.<br />
A Ein einziges<br />
Tool fasst beim CLX-<br />
6220FX alle wichtigen<br />
Einstelloptionen<br />
zusammen.<br />
Sogenannte Multifunktionsgeräte,<br />
die Drucker, Scanner, Kopierer<br />
und oft noch ein Faxgerät in<br />
einem Gehäuse vereinen, haben<br />
sich in den letzten Jahren fest am<br />
Markt etabliert. Doch die Hersteller<br />
liefern oft keine passenden Linux-Treiber<br />
oder bestenfalls einen<br />
simplen Druckertreiber mit,<br />
sodass man die anderen Komponenten<br />
entweder gar nicht oder<br />
erst nach einer gewissen Wartezeit<br />
mit freien Treibern nutzen<br />
kann. Einen völlig anderen Weg<br />
beschreitet der südkoreanische<br />
Mischkonzern Samsung: Hier gehört<br />
Linux in verschiedensten<br />
Derivaten zum festen Bestandteil<br />
der Treiber-Entwicklung für Multifunktionsgeräte.<br />
Als Testgerät erhielten wir einen<br />
Samsung CLX-6220FX [1]. Dabei<br />
handelt es sich um einen Farblaserdrucker<br />
mit eingebautem<br />
Scanner,<br />
Kopierfunktion<br />
und Faxgerät.<br />
Zudem<br />
verfügt der<br />
CLX-6220FX über<br />
eine Ethernet-<br />
Buchse und lässt sich dank eines<br />
integrierten Drucker- und Scanner-Servers<br />
problemlos in ein<br />
Intranet einbinden. Ein USB-Anschluss<br />
ermöglicht zusätzlich den<br />
Betrieb an einem Einzelplatzsystem.<br />
Ab Werk liefert Samsung neben<br />
einer Schnellanleitung, einer<br />
CD-ROM mit diversen Treibern<br />
und einem Handbuch im PDF-<br />
Format einen kompletten Satz an<br />
Druckerkartuschen mit. Diese<br />
eignen sich nach Herstellerangaben<br />
für rund 2000 Seiten.<br />
Die Inbetriebnahme des mit<br />
etwa 36 Kilogramm nicht gerade<br />
leichtgewichtigen<br />
Gerätes<br />
gestaltet sich<br />
denkbar einfach:<br />
Nach<br />
Entfernen diverser<br />
Fixierbänder<br />
und<br />
der Entriegelung<br />
des<br />
Scannerschlittens<br />
gilt<br />
es nur noch<br />
die vier Tonerkartuschen<br />
einzusetzen.<br />
Dazu<br />
öffnen Sie an<br />
der Frontseite des Gerätes eine<br />
gut zugängliche Abdeckklappe<br />
und schieben die vier Kartuschen<br />
anschließend in farblich entsprechend<br />
gekennzeichnete Schächte<br />
ein. Abschließend verbinden Sie<br />
den CLX-6220FX entweder mit<br />
einem Einzelplatzcomputer oder<br />
mit dem Ethernet. Sofern Sie in<br />
Ihrem Netz einen DHCP-Server<br />
betreiben, konfiguriert sich der<br />
CLX-6220FX nach dem ersten<br />
Einschalten automatisch. Um die<br />
Faxeinheit des Geräts zu nutzen,<br />
müssen Sie zusätzlich noch eine<br />
Verbindung zur Telefonbuchse<br />
herstellen, wofür der Hersteller<br />
aber ein ausreichend langes TAE-<br />
N-Kabel mitliefert.<br />
Software<br />
Auf der mitgelieferten CD-ROM<br />
finden sich außer einer Java-Software,<br />
die der Anpassung des Gerätes<br />
an ein Netzwerk mit statischen<br />
IP-Adressen dient, keine<br />
weiteren unter Linux nutzbaren<br />
Programme oder Treiber. Allerdings<br />
lässt sich eine feste IP für<br />
den CLX-6220FX auch am Bedienfeld<br />
des Gerätes definieren.<br />
So gingen wir im Internet auf<br />
die Suche und wurden auf den<br />
Herstellerseiten sofort fündig:<br />
78 08 | 12<br />
www.linux-user.de
Samsung CLX-6220FX<br />
hardware<br />
Samsung liefert auf der <strong>Web</strong>site<br />
des Gerätes [1] im Reiter Support<br />
unter Handbuch, Software, Treiber<br />
und Firmware eine stattliche Anzahl<br />
von Dokumenten und Applikationen<br />
für unterschiedlichste<br />
Betriebssysteme. Im Reiter Treiber<br />
gibt es gleich drei multilinguale<br />
Linux-Pakete für den CLX-<br />
6220FX, wobei die wichtigste<br />
Komponente der Unified Driver<br />
darstellt. Samsung hat für seine<br />
Multifunktionsgeräte den Scanner-<br />
und den Druckertreiber in<br />
dieser Software zusammengefasst,<br />
sodass mit Installation eines<br />
einzigen Treibers das komplette<br />
System einsatzfähig ist.<br />
Möchten Sie, bevor Sie die Applikationen<br />
herunterladen, einen<br />
Blick in die Linux-Kompatibilitätsliste<br />
werfen, so eröffnet sich<br />
Ihnen nach einem Klick auf den<br />
Reiter Technische Daten eine Aufzählung<br />
unterschiedlichster Distributionen.<br />
Hier fehlen zwar aktuelle<br />
Linux-Systeme größtenteils,<br />
doch die vielen aufgeführten<br />
älteren Varianten lassen den<br />
Rückschluss zu, dass die Treiber<br />
auch neuere Derivate unterstützen.<br />
Die für Linux bereitgestellten<br />
Programme und Treiber liegen<br />
als Tarballs vor.<br />
Treiberinstallation<br />
Nach dem Download des Basistreibers<br />
für den CLX-6220FX<br />
(Unified Driver) entpacken Sie diesen<br />
und wechseln in den beim dabei<br />
entstandenen Ordner cdroot/.<br />
Dort starten Sie mit Administratorrechten<br />
die Installation über<br />
den Befehl ./autorun. Die Routine<br />
geleitet Sie in einen grafischen<br />
Assistenten, der zunächst an den<br />
Computer angeschlossene USBund<br />
Parallelport-Drucker abfragt.<br />
Hier gilt es, die LPT-Port-Unterstützung<br />
abzuschalten. Im nächsten<br />
Schritt geben Sie den verwendeten<br />
Druckeranschluss an. Erkennt<br />
der Installer den CLX-<br />
6220FX nicht automatisch, setzen<br />
Sie ein Häkchen vor der Option<br />
Network Printer und lassen<br />
den Drucker im Netz suchen.<br />
Anschließend richtet der Installer<br />
die Treiber für Drucker und Scanner<br />
sowie die entsprechenden<br />
Hilfsprogramme ein. Nach einem<br />
Neustart von CUPS finden Sie auf<br />
dem Desktop einen neuen Starter<br />
mit der Bezeichnung Samsung<br />
Unified Driver Configurator vor.<br />
Dahinter verbirgt sich eine sehr<br />
komfortable grafische Oberfläche<br />
zur Feinjustierung und zum Test<br />
von Drucker- und Scannereinheit<br />
(Abbildung A).<br />
Nach einem Klick auf das Scannersymbol<br />
links oben im Konfigurationsfenster<br />
öffnet sich der<br />
Einstellungsdialog für die Scaneinheit<br />
des CLX-6220FX. Hier<br />
nehmen Sie einige grundlegende<br />
Anpassungen des Scanners vor,<br />
wie beispielsweise Modifikationen<br />
an der Vorlagengröße, der<br />
Farbtiefe, der Auflösung und dem<br />
Vorlagenformat (Abbildung B).<br />
Anschließend lässt sich der<br />
Scanner aus jeder entsprechenden<br />
Anwendung heraus nutzen.<br />
Wir testeten das Gerät sowohl<br />
mit Xscanimage als auch SANE/<br />
Xsane, die beide den Scanner sofort<br />
erkannten und korrekt ansprachen.<br />
Auch die in der Software<br />
vorgesehenen Einstellmöglichkeiten<br />
ließen sich problemlos<br />
nutzen und damit der CLX-<br />
6220FX von mehreren Arbeitsstationen<br />
im Netz aus als Scanner<br />
verwenden (Abbildung C).<br />
Smart Panel<br />
Beim Smart Panel handelt es sich<br />
um ein einfaches Hilfsprogramm<br />
für die Panelleiste des Desktops.<br />
Es zeigt auf einen Blick<br />
den Status des CLX-<br />
6220FX an und erlaubt<br />
Einstellungen. Nach dem<br />
Download des etwa 20<br />
MByte großen Tarballs<br />
entpacken Sie diesen und<br />
wechseln anschließend in<br />
den dabei entstandenen<br />
Ordner cdroot/. Von dort<br />
installieren Sie die Software<br />
durch Aufruf von<br />
./ install.sh mit administrativen<br />
Rechten.<br />
Klicken Sie danach in der Panelleiste<br />
auf das blau-graue Symbol<br />
des Smart Panels, öffnet sich ein<br />
Fenster mit den aktuellen Füllstandsanzeigen<br />
der Tonerkartuschen<br />
des CLX-6220FX (Abbildung<br />
D, folgende Seite). Darüber<br />
hinaus können Sie durch einen<br />
Klick auf die Schaltfläche Printer<br />
Settings den Einstellungsdialog<br />
für den Drucker öffnen und dort<br />
Modifikationen vornehmen.<br />
Ein Klick auf die Schaltfläche<br />
Buy Now bringt Sie dagegen auf<br />
eine <strong>Web</strong>seite, die Verbrauchsmaterialien<br />
anbietet. Vor dem<br />
schnellen Kauf per Smart Panel<br />
sollten Sie jedoch erst einmal die<br />
Preise für Verbrauchsmaterialien<br />
im Internet vergleichen: Die Kartuschen<br />
für den CLX-6220FX gibt<br />
B Im Konfigurator<br />
können Sie auch Vorlagen<br />
einscannen.<br />
C Jedes Linux-Scanprogramm<br />
kommt auf<br />
Anhieb mit dem CLX-<br />
6220FX zurecht.<br />
www.linux-user.de<br />
08 | 12 79
hardware<br />
Samsung CLX-6220FX<br />
D Das Smart<br />
Panel verschafft<br />
einen schnellen Überblick<br />
über den Verbrauch<br />
des Toners.<br />
Samsung CLX-6220FX<br />
Drucker<br />
Auflösung<br />
Sprachen<br />
Speicher<br />
Prozessor<br />
Duplexdruck<br />
Kopierer<br />
Auflösung<br />
Duplex<br />
Einzug<br />
Geschwindigkeit<br />
Scanner<br />
Standards<br />
Auflösung<br />
Formate<br />
Besonderheiten<br />
Geschwindigkeit<br />
Faxgerät<br />
Auflösung<br />
Geschwindigkeit<br />
Speicher<br />
Rufnummernspeicher<br />
Papiermanagement<br />
Zufuhr<br />
Ablage<br />
Gewicht<br />
Sonstiges<br />
Energieverbrauch<br />
Auslastung<br />
Anschlüsse<br />
Bezug<br />
Bezugsquelle<br />
Preis<br />
es bei Drittanbietern preisgünstiger<br />
als im verlinkten Shop.<br />
9600x600 dpi<br />
PCL5c, PCL6, PostScript 3, SPL-C<br />
256 MByte (max. 512 MByte)<br />
Samsung 360 MHz<br />
ja<br />
1200x1200 dpi<br />
ja<br />
1 bis 99 Blatt<br />
max. 20 Seiten/Minute<br />
TWAIN, WIA<br />
4800x4800 dpi<br />
BMP, JPG, PDF, TIFF<br />
Scan to Network, Scan to FTP, Scan to<br />
USB, Scan to SMB<br />
bis zu 3 Bilder/min. bei 300 dpi (Farbe)<br />
max. 300x300 dpi (s/w)<br />
33,6 kbit/s<br />
4 MByte<br />
240 Rufnummern<br />
250 Blatt Papiermagazin (erweiterbar)<br />
170 Blatt<br />
60 bis 220 g/qm<br />
< 550 W in Betrieb, < 11 W im Standby<br />
maximal 65 000 Seiten/Monat<br />
USB 2.0, 10/100-Mbit-Ethernet (RJ45),<br />
RJ11 (Faxgerät)<br />
Testgerät: IP-<strong>Web</strong> GmbH, Schwandorf,<br />
http:// www. ok2. de<br />
empf. VK: 700 Euro, Straßenpreis: unter<br />
400 Euro<br />
SyncThru<br />
Die webbasierte Informationsund<br />
Management-Konsole des<br />
CLX-6220FX firmiert unter der<br />
Bezeichnung SyncThru. Anders<br />
als bei herkömmlichen Printservern<br />
erhalten Sie<br />
hier detaillierte Informationen<br />
nicht<br />
nur zum Drucker,<br />
sondern können<br />
auch Warnmeldungen<br />
abfragen oder<br />
das Telefonbuch des<br />
integrierten Faxgerätes<br />
konsultieren.<br />
Dabei erreichen Sie SyncThru<br />
bequem von jedem Arbeitsplatz<br />
im Netz aus durch Eingabe der<br />
IP-Adresse des CLX-6220FX im<br />
<strong>Web</strong>browser. Die übersichtliche<br />
Oberfläche zeigt im Hauptfenster<br />
wichtige Angaben zum Gerät. Darüber<br />
befindet sich eine Menüleiste<br />
mit den Punkten Information,<br />
Adressbuch und Wartung (Abbildung<br />
E).<br />
Klicken Sie auf eine dieser<br />
Schaltflächen, so teilt sich das<br />
Hauptfenster in ein linkes Segment,<br />
das die einzelnen Untermenüs<br />
hierarchisch anzeigt, und einen<br />
mittigen, größeren Info-Bereich,<br />
der die aktuellen Statusmeldungen<br />
zum Gerät visualisiert.<br />
Als besonderes Schmankerl<br />
zeigt SyncThru über das Untermenü<br />
Information | Verbrauchsmaterial<br />
den genauen Tonerverbrauch<br />
inklusive der Anzahl der<br />
gedruckten Seiten an, aufgeschlüsselt<br />
nach den einzelnen Tonerkartuschen,<br />
sodass Sie einen<br />
detaillierten Überblick über die<br />
tatsächlichen laufenden Kosten<br />
für die Verbrauchsmaterialien erhalten<br />
(Abbildung F).<br />
Diese Informationen lassen sich<br />
durch einen Klick auf den Menüeintrag<br />
Informationen drucken<br />
oder die Schaltfläche Direktdruck<br />
auch auf Papier festhalten. Die<br />
Druck-Option steht dabei in jedem<br />
Informationsmenü zur Verfügung.<br />
Auf die gleiche Art und<br />
Weise durchforsten und drucken<br />
Sie über Adressbuch das Telefonbuch<br />
für das integrierte Faxgerät.<br />
Die Management-Konsole von<br />
SyncThru erreichen Sie ebenfalls<br />
im <strong>Web</strong>browser durch Eingabe<br />
der IP-Adresse des CLX-6220FX.<br />
Um hier Optionen modifizieren<br />
zu können, müssen Sie sich am<br />
Gerät als Administrator authentifizieren.<br />
Dazu klicken Sie rechts<br />
oben im Fenster auf die Schaltfläche<br />
Anmeldung und geben anschließend<br />
in den Eingabefeldern<br />
ID und Passwort die jeweiligen<br />
Zeichenfolgen ein. Voreingestellt<br />
hat Samsung die ID admin und<br />
das Passwort sec00000.<br />
In der Management-Konsole<br />
können Sie sehr detaillierte Einstellungen<br />
treffen, inklusive vieler<br />
Möglichkeiten zum Absichern<br />
des CLX-6220FX gegen unbefug-<br />
E Die Einstiegsseite von SyncThru liefert wichtige Informationen.<br />
80 08 | 12<br />
www.linux-user.de
Samsung CLX-6220FX<br />
hardware<br />
ten Zugriff sowie zusätzlicher<br />
Funktionen vor allem beim Betrieb<br />
des Scanners. Daneben lassen<br />
sich einzelne Benutzer freigeben<br />
oder sperren sowie nicht benötigte<br />
Dienste abschalten (Abbildung<br />
G).<br />
Manuelle Einstellungen<br />
Neben den software- und webbasierten<br />
Einstellmöglichkeiten bietet<br />
der CLX-6220FX auch die Option,<br />
die grundlegende Konfiguration<br />
am Gerät selbst vorzunehmen.<br />
Dazu stehen ein beleuchtetes<br />
mehrzeiliges Display sowie ein<br />
Tastenfeld zur Verfügung, das numerische<br />
Tasten und auch ein<br />
Tastenrad umfasst. Die einzelnen<br />
Gerätemodi erreichen Sie dabei<br />
durch drei rechts neben dem Display<br />
angeordnete Tasten mit einem<br />
Scanner-, einem Faxgeräteund<br />
einem Drucker-Symbol. Das<br />
Bedienfeld dient zusätzlich der<br />
Eingabe von Faxnummern und<br />
der Steuerung des Kopierers.<br />
In der Praxis<br />
Der CLX-6220FX überzeugte im<br />
Praxiseinsatz ohne Einschränkung.<br />
Er lieferte sowohl beim Monochrom-<br />
als auch beim Farbdruck<br />
selbst auf schlechteren Papieren<br />
tadellose Ausdrucke. Weder<br />
Druck- noch Scan-Geschwindigkeit<br />
gaben Anlass zur Kritik.<br />
Das Gerät wacht zudem sehr zügig<br />
aus dem Energiesparmodus<br />
auf, sodass Ausdrucke bereits<br />
nach wenigen Sekunden fertig<br />
vorliegen. Auch die von Samsungs<br />
Multifunktionsgerät erzeugte Geräuschkulisse<br />
hält sich in Grenzen:<br />
Zwar sind im CLX-6220FX<br />
Lüfter eingebaut, aber deren Betriebsgeräusch<br />
wirkt selbst im<br />
Dauereinsatz nicht penetrant.<br />
Die Verarbeitungsqualität des<br />
Gerätes kann sich ebenfalls sehen<br />
lassen. Obwohl der grau-blaue<br />
Kunststoff des Gehäuses auf den<br />
ersten Blick nicht sehr wertig erscheint,<br />
deuten geringe Spaltmaße<br />
auf eine sorgfältige Verarbeitung<br />
hin. Verschlüsse, Scharniere<br />
und die Tastatur des Bedienfeldes<br />
sind solide ausgeführt, und die<br />
Mechanik arbeitet ohne Toleranzen.<br />
Ein weiterer Pluspunkt:<br />
Innerhalb der Garantiezeit gewährt<br />
Samsung Vor-Ort-Service,<br />
der beim Ausfall oder Problemen<br />
schnell für Abhilfe sorgt.<br />
Fazit<br />
Das Gerät weist keine Schwächen<br />
auf und eignet sich aufgrund seiner<br />
soliden Bauweise sowohl für<br />
das anspruchsvolle Home-Office<br />
als auch für eine Firmenabteilung<br />
oder eine mittlere Unternehmensfiliale<br />
mit größerem Druckaufkommen.<br />
Linux-Anwender erhalten<br />
zudem mit dem Gerät eine<br />
sehr gute Software-Unterstützung,<br />
die weit über das bislang<br />
meist übliche Maß hinausgeht.<br />
Erfreulich ist außerdem, dass<br />
der koreanische Hersteller die<br />
laufenden Kosten nicht aus den<br />
Augen verloren hat und dabei<br />
eine genaue Kontrolle durch verschiedene<br />
Software-Tools ermöglicht.<br />
Mit einem Straßenpreis von<br />
deutlich unter 400 Euro ist der<br />
Samsung CLX-6220FX in der Anschaffung<br />
erheblich günstiger als<br />
vier Einzelgeräte und empfiehlt<br />
sich auch funktional als zuverlässig<br />
arbeitende Alternative. (jlu) n<br />
F Das freut jeden Controller:<br />
die Verbrauchsanzeige<br />
im<br />
CLX-6220FX.<br />
G SyncThru erlaubt<br />
auch etwas ungewöhnliche<br />
Einstellungen.<br />
info<br />
[1] Samsung CLX-6220FX:<br />
http:// tinyurl. com/ lu0812‐clx‐6220fx<br />
www.linux-user.de<br />
08 | 12 81
know-how<br />
Mosh/AutoSSH<br />
SSH über unzuverlässige Leitungen<br />
Starke Verbindung<br />
SSH nervt, wenn die WLAN-Verbindung immer wieder abbricht, sich die IP-Adresse ändert,<br />
die Datenpakete über GSM nur tröpfeln und man das Getippte erst nach Sekunden zu Gesicht bekommt.<br />
Glücklicherweise gibt es mit AutoSSH und Mosh einen eleganten Ausweg aus dieser Situation. Axel Beckert<br />
README<br />
AutoSSH 1.4c,<br />
Mosh 1.2.2<br />
LU/autossh/<br />
AutoSSH und Mosh versuchen mit unterschiedlichen<br />
Methoden das Leben des SSH-<br />
Benutzers bei unzuverlässigen Internet-Verbindungen<br />
zu erleichtern. Während AutoSSH als<br />
Wrapper um SSH arbeitet, implementiert<br />
Mosh ein eigenes Protokoll über UDP.<br />
SSH ist für den Linux-Admin das<br />
Programm der Wahl, wenn es darum<br />
geht, sich per Kommandozeile<br />
auf einem entfernten Linuxoder<br />
BSD-Rechner einzuloggen.<br />
Allerdings kann SSH auch Nerven<br />
kosten – etwa, wenn die Verbindung<br />
in einem wackeligen Netz<br />
immer wieder abbricht oder die<br />
Datenpakete über GSM oder<br />
SkyDSL nur tröpfeln. Dasselbe<br />
gilt, wenn man den Laptop mal<br />
kurz schlafen legt oder in ein anderes<br />
Netzwerk wechselt und sich<br />
danach die IP-Adresse geändert<br />
hat. Die beiden Programme<br />
AutoSSH und Mosh gehen diese<br />
Problematik von ganz unterschiedlichen<br />
Seiten her an.<br />
AutoSSH<br />
AutoSSH [1] gibt es bereits seit<br />
über zehn Jahren. Es arbeitet als<br />
Wrapper um das normale<br />
SSH. Bedingt durch<br />
dieses Prinzip<br />
beherrscht<br />
AutoSSH fast alles, was SSH auch<br />
kann, weist aber auch fast alle<br />
Nachteile der SSH auf.<br />
Der Unterschied zwischen einer<br />
normalen SSH-Verbindung und<br />
einer via AutoSSH liegt darin,<br />
dass AutoSSH die Verbindung<br />
überwacht und sie bei einem Abbruch<br />
automatisch mit den gleichen<br />
Parametern neu startet –<br />
also mit den gleichen Tunnel und<br />
demselben auf dem entfernten<br />
Rechner auszuführenden Kommando.<br />
Die Verbindungsüberwachung<br />
von AutoSSH geschieht durch<br />
zwei eigene Port-Weiterleitungen.<br />
AutoSSH richtet diese zusätzlich<br />
zu gegebenenfalls vom Benutzer<br />
gewünschten Port-Weiterleitungen<br />
ein, jeweils eine in Hin- und<br />
eine in Rückrichtung (Abbildung<br />
A). Beide sind auf dem entfernten<br />
Rechner so miteinander<br />
verbunden, dass Daten, die Sie<br />
über die eine Weiterleitung senden,<br />
auf dem entfernten Rechner<br />
direkt wieder in die andere wandern<br />
und auf diesem Weg<br />
wieder bei Ihnen eintreffen.<br />
Bleiben<br />
sie<br />
aus, terminiert AutoSSH die bestehende<br />
Verbindung und versucht,<br />
sie anschließend neu aufzubauen<br />
(Listing 1).<br />
Sofern auf dem entfernten<br />
Rechner GNU Screen installiert<br />
ist, können Sie sich mithilfe des<br />
Kommandos<br />
$ autossh Remote‐Rechner ‐t 'scrU<br />
een ‐RD'<br />
auf dem entfernten Rechner zu<br />
einer existierenden Screen-Session<br />
verbinden, oder – wenn<br />
noch keine existiert – ein neue<br />
starten. Registriert AutoSSH einen<br />
Verbindungsabbruch, dann<br />
ruft es nach dem erneuten erfolgreichen<br />
Aufbau der SSH-<br />
Verbindung automatisch wieder<br />
screen ‐RD auf dem entfernten<br />
Rechner auf. Da dieses Mal eine<br />
Screen-Session existiert, verbindet<br />
es sich zu dieser.<br />
Auf diese Weise arbeiten Sie mit<br />
der Kombination aus AutoSSH<br />
und GNU Screen recht schnell<br />
wieder an der gleichen Stelle weiter,<br />
an der Sie – beispielsweise<br />
durch einen IP-Wechsel – zuvor<br />
unterbrochen wurden.<br />
Bemerken Sie noch vor AutoSSH,<br />
dass die Verbindung unterbrochen<br />
würde, terminieren Sie<br />
diese einfach mithilfe<br />
der SSH-<br />
Escape-<br />
© Oleksly Mark, 123RF<br />
82 08 | 12<br />
www.linux-user.de
Mosh/AutoSSH<br />
know-how<br />
Sequenz Eingabetaste, Tilde,<br />
Punkt – das entspricht [Eingabe],<br />
[Alt]+[+],[Leertaste],[.] beim<br />
deutschen Tastaturlayout mit toter<br />
Tilde-Taste. AutoSSH startet<br />
die Verbindung daraufhin direkt<br />
wieder neu.<br />
Mosh<br />
Bei der „mobilen Shell“ Mosh [2]<br />
handelt es sich um eine Neuentwicklung<br />
aus den vergangenen<br />
zwei Jahren. Sie hat zum Ziel, auf<br />
den heutigen mobilen Endgeräten<br />
das entfernte Arbeiten per Kommandozeile<br />
zu ermöglichen, ohne<br />
dass die von TCP-Verbindungen<br />
her bekannten Probleme auftreten:<br />
TCP- und damit auch SSH-<br />
Verbindungen vertragen keinen<br />
Wechsel der IP-Adresse und werden<br />
bei schlechten Verbindungen<br />
empfindlich langsamer [3].<br />
Eine Mosh-Sitzung bricht im<br />
Gegensatz zu einer SSH-Sitzung<br />
nie endgültig ab. Deswegen<br />
braucht man mit Mosh auch keinen<br />
Wachhund plus künstliches<br />
Terminal mehr, wie das Duo<br />
AutoSSH und GNU Screen. Allerdings<br />
bedient sich Mosh intern<br />
ähnlicher Techniken wie Screen.<br />
Sie melden sich von Ihrem Laptop,<br />
Netbook oder Linux-Smartphone<br />
aus per Mosh auf dem Server<br />
an und bleiben dort angemeldet.<br />
Dabei spielt es keine Rolle,<br />
ob Sie in der Zwischenzeit vom<br />
WLAN auf UMTS gewechselt haben,<br />
die Internetverbindung zwischendurch<br />
einmal verloren ging<br />
oder der Laptop ein, zwei Tage im<br />
Suspend war: Solange auf keinem<br />
der beiden verbundenen Geräte<br />
der Mosh-Prozess beendet wurde,<br />
ist die Verbindung sofort wieder<br />
da, sobald Sie wieder eine Netzwerkverbindung<br />
zwischen den<br />
Rechnern herstellen.<br />
Aber Mosh bietet nicht nur bei<br />
wechselnden, sondern auch bei<br />
langsamen oder unzuverlässigen<br />
Internet-Verbindungen Vorteile,<br />
beispielsweise bei solchen über<br />
Satellit, bei schlechtem Mobilfunk-Empfang<br />
oder einem wackeligen<br />
WLAN.<br />
SSH-Verbindung<br />
Port-Weiterleitung retour<br />
Shell-Verbindung<br />
Port-Weiterleitung hin<br />
Sobald Mosh merkt, dass die Latenz<br />
für interaktives Arbeiten zu<br />
hoch oder die Datenrate zu niedrig<br />
ist, versucht es vorherzusagen,<br />
welche Änderung an der Terminalausgabe<br />
ein gemachter Tastendruck<br />
hervorruft, und zeigt<br />
das interpolierte Ergebnis an, bevor<br />
das tatsächliche Resultat über<br />
die Leitung zurückkommt.<br />
Das erweist sich als angenehm,<br />
wenn Sie auf dem entfernten<br />
Rechner mehr als nur ein paar<br />
Worte tippen – sei es beim Erstellen<br />
einer E-Mail, beim Chatten<br />
via Irssi, bei der Eingabe eines<br />
längeren Kommandos oder beim<br />
Editieren einer Textdatei in Vim.<br />
Obwohl Sie vielleicht blind<br />
schreiben, merken Sie manchmal,<br />
dass Sie sich vertippt haben, wissen<br />
aber oft nicht mehr genau,<br />
bei welchem Zeichen das war.<br />
Dann müssten Sie normalerweise<br />
warten, bis alle bereits getippten<br />
Zeichen im Terminal erscheinen,<br />
und erst das bereits Getippte korrigieren.<br />
Mit Mosh ist das einfacher:<br />
Nach wenigen getippten<br />
Zeichen merkt Mosh, dass es sich<br />
um Text handelt, der wieder angezeigt<br />
wird (etwa im Einfüge-<br />
Modus von Vim) und fängt an,<br />
getippte, aber noch nicht wieder<br />
vom entfernten Rechner zurückgekommene<br />
Zeichen auszugeben.<br />
Falls die getippten Zeichen dann<br />
doch nicht wie erwartet zurückkommen,<br />
etwa bei automatischem<br />
Zeilenumbruch, korrigiert<br />
Mosh die Anzeige. Und damit Sie<br />
wissen, was bereits von der Ge-<br />
user@lokaler.pc$ autossh remote.pc<br />
Willkommen auf remote.pc!<br />
user@remote.pc $<br />
Connection to remote.pc closed.<br />
ssh: connect to host remote.pc port 22: Connection timed out<br />
ssh: connect to host remote.pc port 22: Connection timed out<br />
Willkommen auf remote.pc!<br />
user@remote.pc $ exit<br />
Connection to remote.pc closed.<br />
user@lokaler.pc $<br />
Im Syslog finden sich danach folgende Meldungen:<br />
autossh: starting ssh (count 1)<br />
autossh: ssh child pid is 18851<br />
autossh: ssh exited with error status 255; restarting ssh<br />
autossh: starting ssh (count 2)<br />
autossh: ssh child pid is 19061<br />
autossh: ssh exited with status 0; autossh exiting<br />
Listing 1<br />
A AutoSSH überwacht<br />
die SSH-Verbindung<br />
mittels zweier Port-<br />
Weiterleitungen.<br />
www.linux-user.de<br />
08 | 12 83
know-how<br />
Mosh/AutoSSH<br />
B Mosh bemerkt die<br />
unterbrochene Verbindung,<br />
aber Sie können<br />
trotzdem in aller Ruhe<br />
weitertippen.<br />
Mosh für alle<br />
genstelle zurückkam und was<br />
Mosh bisher nur vorhergesagt<br />
hat, unterstreicht es die vorhergesagten<br />
Zeichen (Abbildung B).<br />
Arbeiten Sie also über eine Verbindung<br />
mit hoher Latenz, zeigen<br />
sich immer die letzten paar getippten<br />
Wörter unterstrichen.<br />
Während die Unterstreichung<br />
rechts den frischen Eingaben<br />
folgt, verkürzt sie sich auf der linken<br />
Seite, sobald nach und nach<br />
die Zeichen vom entfernten Rechner<br />
hereintröpfeln. Es sieht fast<br />
so aus, als würde jemand unter<br />
dem Getippten „Snake“ spielen.<br />
Bei Fehleingaben erkennen Sie<br />
sofort, wo und wie Sie sich vertippt<br />
hat, und können ohne Verzögerung<br />
eine Korrektur vornehmen,<br />
obwohl der Vertipper vom<br />
entfernten Rechner noch nicht<br />
zurückgesendet wurde.<br />
Die Technik hinter Mosh<br />
Wie schafft Mosh nach knapp<br />
zwei Jahren Entwicklung Dinge,<br />
die SSH in mehr als 15 Jahren<br />
nicht gelernt hat? Wie kommt es,<br />
dass nach so langer SSH-Vorherrschaft<br />
beim entfernten Einloggen<br />
plötzlich wieder neuer Schwung<br />
Mosh ist als freie Software unter der GNU GPLv3 verfügbar. Viele<br />
gängige Distributionen stellen auch Binärpakete oder Ports bereit,<br />
darunter Debian (via Backports), Ubuntu (via PPA), Gentoo,<br />
Arch Linux (via AUR), Fedora, Mageia und Slackware. Daneben<br />
gibt es Mosh auch für Mac OS X (via Homebrew, MacPorts oder<br />
als Pkg-Paket) und in den FreeBSD Ports. An einem Android-<br />
Client arbeiten die Entwickler gerade [4]. Für diverse Umgebungen<br />
und Geräte, wie etwa das Nokia N9 oder für Cygwin unter<br />
Windows liefert das Mosh-Wiki von der Community gepflegte<br />
Installationsanleitungen [5].<br />
in diesen Bereich<br />
kommt? Die Antwort<br />
ist einfach und<br />
kompliziert zugleich:<br />
Mosh hat<br />
nur Teile des Rades<br />
neu erfunden – die,<br />
bei denen es unumgänglich<br />
war.<br />
Mosh nutzt zur<br />
Synchronisation der<br />
Anzeige auf dem lokalen<br />
Terminal ein<br />
neu entwickeltes<br />
Protokoll namens State Synchronization<br />
Protocol (SSP), also zu<br />
Deutsch etwa „Zustandssynchronisationsprotokoll“.<br />
SSP setzt<br />
statt auf TCP auf UDP auf und<br />
braucht damit weniger Netzwerkressourcen<br />
für die Verbindungsverwaltung<br />
als die TCP-Verbindungen<br />
von SSH. Gleichzeitig erlaubt<br />
SSP auch ein Roaming, also<br />
das Wechseln der IP-Adresse des<br />
lokalen Rechners.<br />
Beibehalten hat Mosh vor allem<br />
Dinge, die SSH von Haus aus gut<br />
und zuverlässig erledigt, wie die<br />
Authentifizierung („Wer loggt<br />
sich ein?“) und die Autorisierung<br />
(„Darf der das?“). Für diese Zwecke<br />
nutzt es selbst eine SSH-Verbindung.<br />
Über diese wird dann<br />
auch der Mosh-Server gestartet<br />
und Sitzungsschlüssel zwischen<br />
ihm und dem Mosh-Client ausgetauscht.<br />
Danach beendet das Tool<br />
die anfängliche SSH-Verbindung<br />
wieder, und Mosh arbeitet nun<br />
noch über seine eigene UDP-basierte<br />