ubuntuusers.de

3. Februar 2010

Die Zeichenkombination ./ – also ein Punkt gefolgt von einem Schrägstich (auch bekannt als Slash) – wird oft vor Linux-Befehle gestellt. Besonders Linux-Einsteiger stolpern über diese Kombination, wenn es darum geht ein Programm oder ein Skript auszuführen, das im aktuellen Verzeichnis einer Shell liegt. Was steckt hinter diesem kryptischen Kommando und muss man es immer eingeben? Ich versuche den Dschungel etwas zu lüften.

Bevor ich zum ./ komme muss ich etwas ausholen und ein paar Grundlagen in Bezug auf die Linux-Shell und die Umgebungsvariable $PATH verlieren. Eine Shell ist ein Programm, das eine textbasierte Benutzerschnittstelle zur Verfügung stellt, in die der Benutzer Befehle eingeben kann, die dann letztendlich von der Shell ausgeführt werden.

Bei der Ausführung eines Befehls in Linux-Systemen wird immer entweder ein in der Shell fest eingebautes Kommando ausgeführt oder ein ausführbares Programm oder Skript, das sich irgendwo auf der Festplatte befindet. Zur ersten Gruppe gehören Befehle wie cd, ls, echo, kill oder alias. Diese Befehle sind fest in der Shell eingebaut, es gibt also nirgends ein Programm, das beim Aufruf dieser Befehle ausgeführt wird. Im Gegensatz dazu stehen ausführbare Programme wie mv, less, gedit oder gar firefox deren ausführbare Programmdateien oft im Verzeichnis /usr/bin stecken.

Gibt man nun einen Befehl in eine Shell ein, so überprüft die Shell erst einmal ob dieser Befehl eingebaut ist. Erkennt die Shell einen externen Befehl, so durchsucht die Shell den Pfad (über die Variable $PATH) nach einer ausführbaren Datei mit dem selben Namen und führt die Datei aus, wenn die Suche erfolgreich war. Über…

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

…könnt Ihr euch den aktuellen Suchpfad anzeigen lassen. In jedem dieser Verzeichnisse sucht die Shell nach ausführbaren Dateien. Die Reihenfolge der Einträge ist dabei von Relevanz. Wird nach “foo” gesucht und in /usr/local/bin das Skript gefunden, dann wird /usr/local/bin/foo ausgeführt, auch wenn es in /usr/bin auch noch eine Datei namens “foo” gäbe. Diesen Punkt darf man nicht aus dem Gedächtnis verlieren.

Skripte in einem Verzeichnis ausführen

Nun kann ich den Bogen zum ./ langsam wieder schließen. Ihr wollt ein Skript oder ein Programm ausführen. Als Beispiel wähle ich ein Skript namens beispiel.sh im Verzeichnis ~/tmp in eurem Homeverzeichnis. Dazu öffnet ihr ein Terminal, gehe in das Verzeichnis in das sich das Skript befindet und versuche es aufzurufen…

otto@computer:~$ cd tmp
otto@computer:~/tmp$ beispiel.sh
beispiel.sh: command not found
otto@computer:~/tmp$ ls -al beispiel.sh
-rwxr-xr-x 1 otto otto 61 2010-02-03 15:28 beispiel.sh

Wie Ihr seht wird das Skript nicht gefunden und das obwohl ich mich im passenden Verzeichnis befinde. Das Skript da ist und die Rechte auch stimmen. Warum klappt das also nicht? Die Lösung liegt im vorhin beschriebenen $PATH. Zur Erinnerung gebe ich ihn nochmal aus…

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Die Shell erkennt schnell dass das Kommando “beispiel.sh” kein eingebautes Shell-Kommando ist, daher wird im zweiten Schritt der Pfad durchsucht. Auch hier kommt die Shell wieder zu keinem positiven Ereignis. In allen Verzeichnissen, die im $PATH enthalten sind, wird keine Datei beispiel.sh gefunden, daher wird “command not found” ausgegeben. Was ist da also los?

Der Grund ist einfach: Der $PATH enthält nie das aktuelle Verzeichnis in dem man sich befindet. Um also mein Skript “beispiel.sh” auszuführen müsste ich den kompletten Pfad angeben…

otto@computer:~$ cd tmp
otto@computer:~/tmp$ /home/otto/tmp/beispiel.sh
Dies ist nur ein Beispiel für ein Skript.
otto@computer:~/tmp$ $HOME/tmp/beispiel.sh
Dies ist nur ein Beispiel für ein Skript.
otto@computer:~/tmp$ ~/tmp/beispiel.sh
Dies ist nur ein Beispiel für ein Skript.

Wie Ihr seht gibt es zahllose Varianten den Pfad zur Datei anzugeben. Die Tipperei dabei ist recht aufwändig, daher gibt es Abkürzungen, die einem die Arbeit etwas abnehmen. Die kürzeste Variante einen Pfad zum aktuellen Verzeichnis anzugeben ist dabei der Punkt. Der Punkt steht für das aktuelle Verzeichnis und daher reicht zum Ausführen der beispiel.sh eben der ./ als Pfadangabe aus…

otto@computer:~$ cd tmp
otto@computer:~/tmp$ ./beispiel.sh
Dies ist nur ein Beispiel für ein Skript.

Warum ist das aktuelle Verzeichnis nicht im Pfad?

Ihr stellt euch nun eventuell die Frage warum das aktuelle Verzeichnis nicht im Pfad steckt. Man würde sich doch immer etwas Tipparbeit und vor allen Dingen Verwirrung ersparen. Der Grund ist simpel: Sicherheit! Stellt euch vor jemand gibt euch ein paar Daten, die ihr via Shell irgendwo hin verschieben sollt. In den Daten steckt jedoch noch eine kleine unscheinbare Datei namens “mv” mit dem Inhalt…

#!/bin/bash
rm -rf $HOME

Geht ihr nun in das Verzeichnis und setzt den Befehl…

otto@computer:~$ cd ~/daten
otto@computer:~/daten$ mv beispiel.* /wohin/auch/immer

…ab, dann würde – solange das aktuelle Verzeichnis vor /usr/bin im $PATH stehen würde – das im Verzeichnis enthaltene mv-Skript ausgeführt werden und nicht /usr/bin/mv. Das Ergebnis? Euer gesamtes Homeverzeichnis würde kommentarlos und in einem Rutsch gelöscht werden.

Würde das aktuelle Verzeichnis im Suchpfad vor den Systempfaden /usr/bin und Co. im $PATH stehen, dann könnte man ohne Probleme dem Benutzer maliziöse Skripte oder gar Programme unterschieben.

Kann ich das aktuelle Verzeichnis wirklich nicht in den $PATH bekommen?

Sollte der Ausschluss des aktuellen Verzeichnisses euch wirklich sehr stören, so ist es recht problemlos möglich das aktuelle Verzeichnis in den $PATH zu packen. Ob es sinnvoll ist, das mag ich aufgrund des oben genannten Negativ-Beispieles gar nicht weiter erörtern.

Den Pfad könnt Ihr über einen Eintrag in die Datei ~/.profile in eurem Homerzeichnis individuell anpassen. Fügt Ihr am Ende der Datei beispielsweise den Eintrag…

PATH="$PATH:."

… ein und startet eine neue Shell, dann sieht euer $PATH letztendlich so aus.

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:.

Am Ende steht der “.” für das aktuelle Verzeichnis. Via…

otto@computer:~$ cd tmp
otto@computer:~/tmp$ beispiel.sh
Dies ist nur ein Beispiel für ein Skript.

…könnt ihr dann das Beispiel-Skript ausführen. Ihr seht, kein “./” mehr nötig. Steht der Punkt am Ende des Pfades, so besteht auch keine Gefahr dass der Trick von oben funktioniert, doch es gibt einen korrekten Weg eigene Skripte ohne Pfadangaben auszuführen.

Die Verzeichnisse ~/bin und /usr/local/bin

Ihr könnt in eurem Homeverzeichnis einen Ordner namens ~/bin anlegen. Beim Starten einer Shell wird automatisch überprüft, ob dieser Ordner existiert. Wird er gefunden, dann wird er automatisch in den $PATH aufgenommen. Dies funktioniert über den Abschnitt…

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

… in der Datei ~/.profile, die beim Starten einer Shell ausgeführt wird. Schaut ihr euch den $PATH nun an, so seht ihr…

$ echo $PATH
/home/otto/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Der Ordner /home/otto/bin steht nun an erster Stelle und Skripte, die Ihr dort ablegt, werden automatisch gefunden. Soll euer Skript oder kleines Programm von allen Benutzern des Systems verwendet werden, dann solltest ihr es nach /usr/local/bin kopieren oder dort verlinken. Dieses Verzeichnis befindet sich auch immer im $PATH und die Paketverwaltung legt dort nie Daten oder Dateien ab. Es ist also euer kleines Reich.

Gestern Abend habe ich Roman vom ubuntublog.ch einfach per identi.ca gefragt ob er sich mal nicht noch Canaima Gnu/Linux für die Blogparade der exotischen Linux-Distributionen, anschauen würde. Ich wußte, das es ihn interessieren würde, da es sich um eine debianbasierte Distribution handelt.

Er hat sich nun also auch umgehend mit Canaima Gnu/Linux befaßt und einen langen Artikel dazu geschrieben. Er geht in diesem auch ein wenig auf die örtlichen Gegebenheiten in Venezuela ein. So erwähnt er das Dekret des Präsidenten (decreto presidencial Nº 3.390) aus dem Jahre 2004 nach dem alle öffentlichen Verwaltungen bevorzugt Open Source Software einsetzen sollen. Ein Viertel der in den Verwaltungen eingesetzten Rechner arbeit heute bereits mit Canaima, was erst einmal seltsam wenig ist. Dazu muss man aber sagen, dass viele andere Systeme mit Debian laufen.

Am Ende ist allerdings Canaima, das seinen Namen von einem der venezolanischen Nationalparks erhalten hat allerdings mehr als eine simple Linuxdistribution. Canaima ist mehr ein Programm in folge dessen diese Distribution entwickelt wird. Venezuela setzt nicht nur in den öffentlichen Verwaltungen auf Linux und Open Source sondern auch in der Bildung und Ausbildung. So orderte man im Jahre 2008 eine größere Anzahl von Classmate-PC vom portugiesischen Hardwarehersteller JP Sá Couto , die eben mit Linux ausgeliefert werden. Daneben erwarb man aber auch eine Lizenz zur Eigenherstellung des Magellan genannten Gerätes. So ist eine der Forderungen an Canaima Gnu/Linux eben auf diesen Rechnern bzw.den heute bei Venezolana de Industrias Tecnológicas, zu laufen. Auf Grund der engen Anforderungen bei der Auswahl der Geräte setzt Canaima auf einen monolithischen Kernel. Das mag auch die Trägheit bei Romans Test hervorgerufen haben.

Neben den Anforderungen an die Hardware legt man vor allem Wert auf die umfassende sprachliche Unterstützung, wie auch Roman bei seinem Test herausgefnden hat. In das mitglieferte Wörterbuch für OpenOffice wurde ebenso viel Zeit investiert, wie in die Übersetzung jedes Menüpunktes.

Canaima ist ein Beispiel für den Drang der lateinamerikanischen Länder sich aus der Abhängigkeit von vor allem us-amerikanischen Konzernen zu lösen. Kaum einer von uns wird wohl in die Verlegenheit kommen es als seine Distribution zu installieren, es sei denn man spräche Spanisch und nutzt ein portugiesisches Magellan-Gerät. Einen Blick über den Gartenzaun zu werfen lohnt sich allerdings immer, finde ich jedenfalls.


Nachdem ich schon seit längerem mit meinem alten Theme unglücklich war, da es sich nicht so flexibel an meine Wünsche anpassen lies, bin ich heute auf das WordPress-Theme “Monochrome” umgestiegen. Ich finde es eleganter und übersichtlicher wie das alte und es lässt sich natürlich besser an meine Bedürfnisse anpassen.

Was haltet ihr davon? Soll ich dieses Theme lassen, oder hat Euch das alte besser gefallen? Über konstruktive Kritik würde ich mich freuen! :)

Im Rahmen seiner Vorstellungsrunde verschiedenster Linux-Distributionen aus aller Welt stiftete mich der Bürgermeister persönlich via identi.ca dazu an, eine weitere Distribution vorzustellen. Da es sich dabei um eine Debian-basierende Linux-Variante handelt, sagte ich gerne zu. Das GNU/Linux nennt sich Canaima, wohl angelehnt an den gleichnamigen Nationalpark in Venezuela. Denn von diesem Land entstammt die in spanisch gehaltene Distribution. Venezuela liegt am nördlichen Ende des südlichen, amerikanischen Kontinents. Nachbarn sind die Länder Brasilien, Kolumbien und Guyana.

Das Bild stammt von Wikipedia aus dem Artikel zu Venezuela.

Ganz spannend und nachahmenswert finde ich die politische Haltung von Venezuela in Sachen Teilen von Wissen. Denn die Regierung hat bereits im Jahre 2004 ein Gesetz erlassen, wonach alle öffentlichen Ämter freie Software der geschlossenen bevorzugen müssen, sofern es für die jeweilige Aufgabe welche gibt. Innerhalb dieser Philosophie entwickelten das Nationale Zentrum für Informationstechnologie (CNTI) ein Linux, welches auf Debian basiert: Canaima GNU.

Auf der Website des Linux-Projekts gibt es nebst Erläuterungen und Beschreibung, die allesamt in Spanisch gehalten sind, selbstverständlich auch die Möglichkeit, das freie Linux herunterzuladen. Ich habe mich für die i386-iso-Datei entschieden, die doch immerhin 1.3 GB schwer ist. Es handelt sich dabei um keine Live-CD, aber eine Installation ist damit im Bootmodus möglich. Das habe ich mit einer virtuellen Maschine unter der Haube der VirtualBox erledigt.

Ich habe dazu eine Standard-VM mit 1024 MB flüchtigem Speicher und einer Festplatte zu 25 GB (dynamisch wachsend) erzeugt. Alle andern Einstellungen liess ich auf default, ausser der virtuellen Grafikkarte spendierte ich noch etwas mehr als bloss ein MB Speicher. Dann schob ich die iso-Datei in das imaginäre DVD-Laufwerk und startete die Kiste. Zum Glück kenne ich die Standard-Installation von Debian auswendig. Denn ich verstehe (fast) kein Wort spanisch und hatte daher den Vorteil, dass ich wusste, welche Fragen wann erscheinen und wie die Antworten aufgelistet sind. Aber manchmal reicht es bei technischen Dingen, die in einer fremden Sprache notiert sind, auch, wenn man bloss ein oder zwei Schlüsselworte versteht, um den Zusammenhang zu kennen. Auf jeden Fall habe ich dann die Installation hinbekommen, das Linux läuft in Spanisch, obschon ich bei der Installation Deutsch angegeben habe.

Nombre completo para el nuevo usuario. Ich verstehe den ganzen Satz, weil der sehr einfach ist und weiss von der Debian-Installation her, dass ich hier den kompletten Namen des ersten Benutzers hineinschreiben soll. Ich empfinde das Spanisch als sehr sympathisch. Die Installation dauerte ungewöhnlich lange und auch der erste Startvorgang brauchte fast zwei Minuten. Danach fuhr ich erst einmal die Updates und installierte die Gasterweiterung für die VirtualBox. Canaima/GNU kommt mit Gnome daher und präsentiert sich mit Ausnahme der Icons und dem Hintergrundbild in einem typischen Debian-Bild.

Das Linux wurde unter anderem für die öffentlichen Verwaltung geschaffen und so verwundert es nicht, dass per default alle OpenOffice-Pakete installiert sind – in Spanisch, versteht sich. Dazu kommt noch die Projektverwaltung openproj, X-Chat und Freemind wie einige Erweiterungen für OpenOffice. Ausserdem gibt es ein separates Gnome-Menü für Sound-Effekte, was wiederum für die Arbeitsfreudigkeit der Venezuelaner spricht. Alles in allem ein rundes, aber etwas träges GNU/Linux, das für den Alltag taugen würde, spräche man spanisch. Die ganze Sprachunterstützung für andere Sprachen fehlt. Die liesse sich wohl nachinstallieren, aber wahrscheinlich zu Lasten der Funktionen und Erweiterungen. Die Macher von Canaima investierten recht viel Zeit für das venezuela-spanische Wörterbuch und dessen Integration in OpenOffice und dem Betriebssystem. Auch die Sicherheitsfragen im Gnome-Terminal sind in “venezuela-Spanisch” gehalten. Immerhin nutzt bis heute schon über ein Viertel der Behörden in Venezuela dieses Linux.

Nach diesem Ausflug zum Canaima GNU habe ich die virtuelle Maschine geköpft und die Festplatte sowie die iso-Datei gelöscht. Ich mag Debian-basierende Systeme sehr, aber wenn sie in Spanisch daherkommen, bin ich überfordert. Deswegen kehre ich zurück zu “meinem Ubuntu” – in Deutsch natürlich. Aber es hat Spass gemacht, einmal mehr etwas anderes anzusehen, das zwar auf der gleichen Philosophie wie Debian basiert, aber aus einer ganz andern Ecke unserer Welt stammt.

Ähnliche Artikel

Über Prism habe ich ja schon einmal im Zusammenhang mit Zertifikaten geschrieben. Prism ist eine Art Minibrowser aus dem Hause Mozilla, der sich als Applikation verkleidet mit genau einer URL und damit mit einer Aufgabe so starten lässt, dass die angepeilte Seite im Normalfall nicht mehr verlassen werden kann – ausser durch interne Links, welche auf der Zielseite vorkommen. Wikipedia schreibt dazu:

Prism ermöglicht es, die jeweiligen Webanwendungen direkt vom Desktop aus in eigenen vom Webbrowser getrennten Prozessen zu starten und unabhängig von diesem zu konfigurieren. Dabei wird ein abgespeckter Firefox gestartet, jedoch ohne die browsertypischen Bedienelemente und ohne das Menü.

Um identi.ca einigermassen sinnreich einsetzen zu können, braucht es einen Klienten dazu. Unter Ubuntu kenne ich gwibber, Jabber-Klienten, Adobe Air basierende Programme, choqok für KDE und Gnome Do, um die grafischen Möglichkeiten zu nennen. Es gibt vielleicht noch weitere; wenn ja, bitte her damit. Die oben genannten Programme passen mir aber nicht wirklich.

Eine Alternative wäre da eben Prism, um damit entweder die normale Startseite von identi.ca zu öffnen, oder die speziell angepasste, etwas kleinere Seite, die unter http://identi.ca/Benutzername/all?realtime=1 zu finden ist.

Allerdings scheint die “Kurzform-Seite” nicht richtig zu laufen, sie lädt nicht automatisch neu und verirrt sich ab und zu nach dem Posten eines Dents. Die normale Startseite erachte ich als besser, zumal es dort die Möglichkeit gibt, den automatischen Reload ein- oder auszuschalten. Offenbar wird dieser Button aber im Prism-Browser nicht immer angezeigt.

So lässt sich der “Identi.ca-Klient” beispielsweise auf einem zweiten, virtuellen Desktop platzieren, wo er wenig stört. Dafür steht die systemintegrierte Benachrichtigung, die zum Beispiel bei gwibber genutzt wird, nicht zur Verfügung. Das kann aber auch ein Vorteil sein, denn jene Meldungen zerren zeitweise an den Nerven.

Aber schlussendlich bleibt auch ein Prism nichts weiter als ein Browser, wenn auch ein kastrierter. Wie so Vieles ist es schlussendlich Geschmackssache, was einem gefällt oder eben missfällt. Twitroid zum Beispiel halte ich für einen ganz tollen und ausgereiften Klienten für identi.ca. Den gibt es halt leider nur für Android. Immerhin steht mit Prism eine weitere Alternative für den Desktop zur Verfügung.

Ähnliche Artikel

2. Februar 2010

Heute hatte ich nach einer Möglichkeit gesucht Inhalte eines bestehenden DEB-Paketes zu editieren, genauer gesagt ging es um den Paketnamen der hier geändert werden sollte.

Mein Firefox-3.6 Checkinstall Paket (für “schöneres Fontrendering unter Karmic) hatte versehentlich den falschen Paketnamen “src” verpasst bekommen – das war unschön und sollte zügig wieder geändert werden. Eine schnelle Methode den Inhalt der entsprechenden “control”-Datei (enthält u.a. den Paketnamen, Abhängigkeiten und Version) des Paketes zu editieren und nachfolgend ein entsprechend neues Paket zu generieren findet man hier. Danke an “laure”.

Zusammenfassung :

# Temporäres Arbeitsverzeichnis erstellen:
mkdir debtmp 

# deb-Paket DEBNAME in debtmp entpacken:
dpkg-deb --extract DEBNAME debtmp

# control-Datei extrahieren:
dpkg-deb --control DEBNAME debtmp/DEBIAN

# control-Datei editieren:
nano debtmp/DEBIAN/control

# Neues Paket bauen:
dpkg --build debtmp

# Paketname = Verzeichnisname, also umbenennen:
mv debtmp.deb NEUER_DEBNAME 

Das neue Paket kann dann mit sudo dpkg -i NEUER_DEBNAME installiert werden.

Auf die gleiche Weise konnte auch das Paket mozilla-mplayer überredet werden freiwillig mit Firefox 3.6 zusammenzuarbeiten :)

Ähnliche Informationen findet man z.B. hier (Script um die Control-Datei zu ändern) und hier (nochmal in sehr kurzer Kurzfassung).

Moin liebe Lesergemeinde,

jeder Programmierer wird sich irgendwann die Frage stellen, welche (G)UI-Sprachen das eigene Programm unterstützen solle. Sind das nur zwei Sprachen, kann man dies noch im Quellcode selbst unterbringen (sollte man trotzdem nicht tun). Doch schon bei drei Sprachen ist das ziemlich aussichtslos.

Irgendwann stand auch ich vor dem Problem und habe ein gutes Tutorial gesucht solch eine Internationalisierung der Benutzeroberfläche zu Bewerkstelligen. Bei Linux Magazin wurde ich in einem sehr ausführlichen Artikel über die Funktion gettext() fündig (zum Artikel geht es hier).

Nutzt auch ihr dieses System oder gibt es noch andere/bessere Alternativen?

Ubuntuxx bedankt sich bei allen Kunden des Aufklebershop

Ich bedanke mich ganz herzlich bei allen 27 Interressenten, die ab dem 31.01.2010  Aufkleber bestellt haben.

Weitere Aufkleber sind in Planung, da des öfteren nach einem Weiss/Schwarzen Tastenaufkleber so wie nach anderen Linux Aufkleber nachgefragt wurde.

Ein GNU Aufkleber ist heute dazu gekommen, die anderen folgen womöglich  in den nächsten Tagen.

Viel Spaß mit den Aufklebern wünscht Euch

think123 von ubuntux.user-blog.de

[Dieser Artikel betrifft Ubuntu 9.10 Karmic Koala. Eine funktionierende Variante für Ubuntu 10.04 LTS Lucid Lynx findest du hier.] Leider gibt es in der aktuellen Ubuntu-Version (9.10 Karmic Koala) nicht mehr die Funktion gnome-power-cmd. Diese hatte es erlaubt, auch ohne Root-Rechte den PC aus der Konsole in den Ruhezustand zu fahren. Jetzt hab ich bei logfish.net einen Workaround gefunden, wie man diese Funktion wieder herstellen kann (ACHTUNG, für Lucid muss dieses Skript hier genommen werden).

Leider gibt es in der aktuellen Ubuntu-Version (9.10 Karmic Koala) nicht mehr die Funktion gnome-power-cmd. Diese hatte es erlaubt, auch ohne Root-Rechte den PC aus der Konsole in den Ruhezustand zu fahren.

Jetzt hab ich bei logfish.net einen Workaround gefunden, wie man diese Funktion wieder herstellen kann.

Man erstellt eine ausführbare Datei namens “own-power-cmd” und legt sie z.B. in den Skriptordner.

cd ~/bin
touch own-power-cmd
chmod +x own-power-cmd

Die Datei erhält nun folgenden Inhalt:

#!/bin/bash
#    gnome-power-cmd replacement
#    Copyright (C) 2009 A. Bram Neijt <bram @neijt.nl>
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see http ://www.gnu.org/licenses.

case $1 in
suspend)
echo Suspending
    dbus-send --print-reply \
        --system \
        --dest=org.freedesktop.DeviceKit.Power \
        /org/freedesktop/DeviceKit/Power \
        org.freedesktop.DeviceKit.Power.Suspend
;;
hibernate)
echo Hibernating
    dbus-send --print-reply \
        --system \
        --dest=org.freedesktop.DeviceKit.Power \
        /org/freedesktop/DeviceKit/Power \
        org.freedesktop.DeviceKit.Power.Hibernate
;;
*)
echo Not supported command: '"'$1'"'
echo Usage: $0 '<suspend |hibernate>'
exit 1
;;
esac

Ab jetzt kann man ins Terminal eingeben:

own-power-cmd suspend

oder

own-power-cmd hibernate

…und der Rechner gehorcht wieder… :-)

Mein Hörspielserver kann fast alles so, wie ich es gerne hätte. Was noch fehlt, ist eine Funktion, die den Suspend unterbindet wenn Musik abgespielt wird. Rhythmbox und Amarok machen das schon von Haus aus, aber ich möchte lieber Songbird nutzen. Es muss also ein Script her, welches abfragt, ob derzeit etwas über die Lautsprecher geht. Da ich Ubuntu benutze (derzeit 9.10), ist standardmäßig pulseaudio installiert. Hierfür gibt es nun eine recht einfache Methode, um den “Boxenstatus” auszulesen.

Mein Hörspielserver kann fast alles so, wie ich es gerne hätte. Was noch fehlt, ist eine Funktion, die den Suspend unterbindet wenn Musik abgespielt wird. Rhythmbox und Amarok machen das schon von Haus aus, aber ich möchte lieber Songbird nutzen.

Es muss also ein Script her, welches abfragt, ob derzeit etwas über die Lautsprecher geht. Da ich Ubuntu benutze (derzeit 9.10), ist standardmäßig pulseaudio installiert. Hierfür gibt es nun eine recht einfache Methode, um den “Boxenstatus” auszulesen. Man gibt einfach ins Terminal ein:

pactl list | grep RUNNING

Wird gerade etwas abgespielt, meldet der Befehl “RUNNING” zurück. Wird nichts abgespielt, so bleibt die Rückmeldung leer.

Ich hatte erst versucht, die SUSPEND-Zeiten per Skript zu verändern. Da aber irgendwie der Gnome-Power-Manager bei mir nicht will, hab ich eine andere Lösung gefunden. Nämlich durch simulierte Maus-Bewegungen zu verhindern, dass die GNOME-Session IDLE wird. Und so geht es:

Zuerst installiert man xmacro:

sudo apt-get install xmacro

Jetzt erstellt man eine Datei namens “myxmacro”. Diese erhält den folgenden Inhalt:

MotionNotify 90 90
MotionNotify 120 120

Anschließend erstellt man eine Datei namens “no.idle.sh” und macht sie ausführbar. Ich habe sie bei mir in den Skriptordner gelegt:

touch no.idle.sh
chmod +x no.idle.sh

Diese Datei erhält nun den folgenden Inhalt:

#!/bin/bash
# No IDLE prevents GNOME to turn IDLE
# if there is any sound sent to speakers
# This script requires the package "xmacro"
# (apt-get install xmacro)
###########################################
# This script requires a textfile called "myxmacro"
# with the following (dummy) content:
# ------------ myxmacro ------------
# MotionNotify 90 90
# MotionNotify 120 120
# ----------------------------------
# You need to fix the path to "myxmacro" in line 31
#
#############################################

# set Log-File
LOG=/home/YOUR_USERNAME/noidle.log
sound=0
silence=0

while true; do
    sleep 1
    Datum=`date +%d.%m.%Y-%H:%M:%S`    

    # check if sound is sent to speaker
    if pactl list | grep RUNNING > /dev/null; then
        echo "[$Datum] Sound (Ping: $sound)" >> $LOG
        sound=$((sound+1));
        xmacroplay :0 </path/to/myxmacro
        silence=0
    else
        echo "[$Datum] Stille (Ping: $silence)"    >> $LOG
        silence=$((silence+1));
        sound=0
    fi
    #----------------------------------------------------
done

Ihr müsst jetzt noch:
- in Zeile 18 den Pfad zur Logdatei anpassen
- in Zeile 31 den Pfad zur Datei myxmacro anpassen
Der Eintrag für “sleep” ist mit “1″ etwas eng (jede Sekunde wird die Überprüfung durchgeführt), ist aber zum debuggen ganz gut.

Das Script wird nun zu den Startprogrammen hinzugefügt, so dass es bei jedem Neustart direkt ausgeführt wird.

Fertig.

Was das Script macht:

  • Jede Sekunde wird überprüft, ob etwas auf die Lautsprecher gesendet wird (pactl list | grep RUNNING)
  • WIRD Musik abgespielt, werden die Mausbewegungen simuliert (mittels xmacroplay). Das hat zur Folge, dass die GNOME-Session nicht IDLE wird (und somit auch der Suspend unterdrückt wird)
  • Wird KEINE Musik abgespielt, macht es gar nichts. Somit kann die Session IDLE werden.
  • Der Status (Musik ja/nein) wird in die Logdatei geschrieben. Ihr könnt diesen Status überprüfen, indem ihr folgendes ins Terminal eingebt:

    tail -f /path/to/noidle.log

    (wobei auch hier wieder der Pfad zur Logdatei angepasst werden muss)

Songbird
Songbird hat leider die Eigenschaft, den Status weiterhin auf “RUNNING” zu belassen, auch wenn die Musik auf “Pause” steht. Nur ein wirklicher “Stop” ändert den Status. Dies ist zB der Fall, wenn die Wiedergabeliste ihr Ende erreicht hat. Leider gibt es unter Songbird keine “Stop”-Taste. Hierfür existiert aber ein Add-On, welches an die aktuelle Songbird-Version wie folgt angepasst werden muss:

  • Man lädt die aktuelle Version des Add-Ons von dieser Seite
  • Diese xpi-Datei kann man mit dem Archiventpacker öffnen (nicht entpacken!!!)
  • innerhalb des Archivs öffnet man die Datei install.rdf
  • Hier sucht man nun die Stelle “<em:maxversion>1.1.0pre</em:maxversion>” und ersetzt das 1.1.0pre auf die installierte Songbird-Version (ich habs mal auf 1.7 gesetzt) und klickt auf Speichern
  • Der Archivmanager fragt nun, ob das Archiv aktualisiert werden soll, was man bestätigt.
  • Jetzt kann die xpi-Datei als Add-On in Songbird installiert werden

Wenn man nun die Musik mit der Stop-Taste stoppt, dann erkennt das unser Script.

(english)

Herauszufinden, wieviel Video-Ram die Grafikkarte hat, ist erstaunlich kompliziert - es scheint keine direkte Anzeige zu geben, ein /proc/gpuinfo fehlt. Trotzdem sind zwei Wege möglich, die bei mir auch unterschiedliche Werte ausgeben.

XServer abfragen

Der XServer schreibt in seine Logs, wieviel Grafikkartenspeicher er zur Verfügung hatte. So kann wohl gut bestimmt werden, wieviel Speicher verfügbar ist, aber nicht unbedingt, wieviel die Grafikkarte hat. Ich erinner mich durchaus an Fälle, bei denen der XServer (im Zusammenspiel mit speziellen Treibern?) die Speichergröße falsch erkannte.

Die Speicherangabe sollte so gefunden werden (via):

grep -i ram /var/log/Xorg.0.log; grep -i mem /var/log/Xorg.0.log

Ausgabe:

(--) PCI:*(3:0:0) nVidia Corporation NV43 [GeForce 6600 GT] rev 162, Mem @ 0xe6000000/24, 0xd0000000/28, 0xe7000000/24
(II) PCI Memory resource overlap reduced 0xe0000000 from 0xe3ffffff to 0xdfffffff
(--) NVIDIA(0): Memory: 131072 kBytes

lspci auslesen

Der zweite Ansatz läuft über lspci und ist damit nicht direkt abhängig von dem, was der XServer erkennt. Mit einem allgemeinem lspci wird die Adresse der Karte bestimmt, um dann mit lspci -v -s die Informationen abzufragen (via). Zusammengefügt zu einer Zeile sieht das dann ggf so aus:

lspci -v -s $(lspci | grep "VGA compatible controller" | sed 's/\(.:.\..\) .*/\1/g')

Ausgabe:

03:00.0 VGA compatible controller: nVidia Corporation NV43 [GeForce 6600 GT] (rev a2) (prog-if 00 [VGA controller])
Flags: bus master, 66MHz, medium devsel, latency 248, IRQ 20
Memory at e6000000 (32-bit, non-prefetchable) [size=16M]
Memory at d0000000 (32-bit, prefetchable) [size=256M]
Memory at e7000000 (32-bit, non-prefetchable) [size=16M]
[virtual] Expansion ROM at e8000000 [disabled] [size=128K]
Capabilities: 

Bücher aus dem Hause O’Reilly mag ich sehr, da sie einerseits eine hohe Qualität aufweisen – ich meine inhaltlich – und andererseits sind sie meist auch anspruchsvoll. Allerdings kosten die Schinken meist auch etwas mehr, als ein Buch von Markt und Technik, Franzis, Data Becker oder einem ähnlichen Verlag. Vor ein paar Tagen lag das Buch Webentwicklung mit CakePHP in meinem Briefkasten. Bisher hörte ich bloss am Rande von diesem Framework, ausser am BarCamp zu Liechtenstein; dort setzte ich mich in die Session von Roland und sah mir an, wie in knapp 45 Minuten eine Webapplikation entstand. Mit CakePHP.

Das Buch entstand im Jahre 2008, verfasst haben es Dirk Ammelberger und Robert Scherer. Beides sind Koryphäen im Bereich der Webentwicklung und dem dazugehörigen Umfeld. Ich befinde mich nun mitten in der Arbeit mit diesem Buch und darf mit Überzeugung sagen, dass nicht nur CakePHP eine feine Sache ist, sondern auch das Buch selbst.

Es ist nicht für Computer-Einsteiger geschrieben, das geht auch aus der Einleitung hervor. Ein paar Grundkenntnisse zu PHP, MySQL, SQL und den Relationen in einer modernen Datenbank sowie dem objektorientierten Verhalten einer Programmiersprache reichen aber aus, um gut damit zurechtzukommen. Mindestens nehme ich die Inhalte so wahr und ich bin bei weitem kein Profi in diesen Dingen, höchstens ein interessierter Amateur. Die Einleitung halte ich für sehr gelungen, denn darin bekomme ich sauber erklärt, was CakePHP ist, wozu ein Framework dient und welche Mittel ich brauche, um damit arbeiten zu können. Im Anschluss an die Einleitung folgen dann die Anweisungen und Tipps zur Installation, welche für Linux, Mac und sogar Windows erklärt werden. Dabei kommt nicht nur das Framework an sich zur Sprache, sondern auch die Datenbank, der Webserver und der PHP-Interpreter. Ich weiss zwar bis heute nicht, was PHP auf einem Windows-Rechner zu suchen hat und weshalb ein Apache auf dieses Betriebssystem gezwungen werden soll, aber das soll ja nicht meine Sorge sein. Wer ein WAMP haben will, soll es sich halt zurechtschustern. Leider wird im Buch die Installation von der CakePHP-Konsole für Linux mit keinem Wort erwähnt, bloss Windows und Mac werden behandelt. Dort stehe ich im Moment noch etwas vor dem Berg, aber das werde ich noch lösen.

Völlig neu war mir auch, dass CakePHP ein Abbild eines Frameworks ist, das sich bei Ruby wiederfindet. Ruby on Rails hat ja der Programmiersprache Ruby zu einer richtigen Renaissance verholfen. Es ist ein Framework eben für Ruby, das sich sehr erfolgreich verbreitet hat. CakePHP soll in etwa dasselbe für PHP sein.

Danach wird Schritt für Schritt mittels einem imaginären Projekt jede Funktion vom Framework besprochen und mit “lebendigen” Beispielen erklärt. Zuvor lernen aber die Leser noch eine Menge wichtiger Fakten über die Arbeitsweise von CakePHP. Für besonders spannend halte ich das Grundprinzip MVC, welches dafür sorgt, dass die Datenhaltung, die Darstellung und die Logik sauber voneinander getrennt werden – WordPress lässt grüssen… Aber auch DRY finde ich essentiell wichtig, denn ich wiederhole mich wirklich nicht gerne beim Coden; das ist langweilig und das Resultat birgt grosse Fehlerquellen in sich. Die Beispiele und Erklärungen im Buch weisen eine hohe Qualität auf und der Lerneffekt ist – mindestens bei meiner suboptimalen Intelligenz – sehr hoch. Es macht Spass, mit diesem Buch zu lernen.

Auch AJAX ist ein Thema in diesem Buch. Soweit bin ich aber noch nicht vorgestossen, ich habe aber gesehen, dass mitunter auch DHTML besprochen wird. Das ist ein heikles Thema, besonders die Barriere-Freiheit ist dort gefährdet. Ich bin gespannt, was dort zu lesen ist.

Für meine Tests und kleinen Applikationen habe ich die Installation von CakePHP auf meinem Server zu Hause durchgeführt. Das ist ein Uralt-PC, auf dem ein Ubuntu-Server 8.10 rennt. Die Maschine ist von aussen nicht zu erreichen. Ich mag es nicht besonders, wenn ich auf meinem Notebook PHP, MySQL-Server, Apache, PHPMyAdmin und allenfalls weitere Dienste sowie das Framework installieren soll. Genau für solche Anforderungen besitze ich noch immer diesen alten PC, der wohl aus dem Jahre 2003 stammt. Allenfalls braucht es noch das CLI-Paket für PHP:

sudo apt-get install php5-cli

Grundsätzlich könnte man unter Ubuntu das gesamte Framework über die Paketverwaltung installieren. Das habe ich aber nicht getestet, zumal andere Komponenten benutzt werden als Apache und Konsorten.

Zusammen mit diesem Buch kann ich mich mindestens in das Framework einarbeiten. Wer sich für CakePHP interessiert und noch nicht alle Feinheiten kennt, dürfte mit diesem Buch gut bedient sein. Aber auch Leute, die das Framework noch gar nicht kennen, aber das nötige “Meta-Grundwissen” mitbringen, werden damit sofort zurechtkommen.

Noch ein Satz zum Buch selbst, also zur Bindung: Ich kenne sehr viele verschiedene Buchbindungen, habe auch schon selbst Bücher gebunden. Ich werde es einem Buchbinder niemals verzeihen, wenn er kein Buchzeichen – in Form eines Stoffbandes, das im Rücken verleimt ist – einsetzt. Bei einem Buch dieser Preisklasse gehört mindestens ein Buchzeichen dazu. Die Bindung an sich ist sauber und qualitativ in Ordnung, aber es ist eben doch keine Deutsche Wertarbeit, wenn das Buchzeichen fehlt.

Webentwicklung mit CakePHP trägt die ISBN-Nummer 978-3-89721-863-5 und ist im Handel für ungefähr 30 Euro zu haben.

Ähnliche Artikel

In einem etwas improvisiertem Umfeld zeichneten Dirk und ich am vergangenen Sonntag die zehnte Folge unseres Projekts Deimhart auf. Der Root-Server, auf dem auch die Site deimhart.net zu Hause ist, fiel am Samstag aufgrund eines Hardware-Fehlers aus. Inmitten der Wiederherstellungsarbeiten nahm sich Dirk die Zeit, unsere Folge aufzuzeichnen. Mit erstaunlicher Ruhe; mindestens äusserlich.

Wir entschieden uns im Vorfeld für das Thema Wiki und stellten unsere Notizen auf unserem internen trac-Wiki zusammen. Doch leider stand uns das infolge des Ausfalles nicht zur Verfügung und bis zum Zeitpunkt der Aufzeichnung unserer zehnten Sendung druckte weder Dirk noch ich die Wiki-Seiten aus. Also besprachen wir das Thema mehr oder wenige auswendig aus dem Kopf, was uns meiner Meinung nach ganz gut gelang.

Zur Vorbereitung nahm ich das Buch Wikis und Blogs von Christoph Lange zu Hilfe. Das Buch ist aus dem Jahre 2007, mindestens die erste Auflage, und bietet aber immer noch recht aktuelle Daten und Informationen zu den verschiedenen Wikis. Ausserdem nutzen wir – wie soll es bei diesem Thema auch anders sein – wikipedia und die Inhalte zu den verschiedenen Wikis.

Wir freuen uns auf die Feedbacks und offen, dass wir einen kurzen Ein- und Überblick in die Welt der Wikis ermöglichen konnten. Die aktuelle Folge Nummer zehn gibt es hier zum Download, wie immer als mp3 und ogg-Datei.

Ähnliche Artikel

Zum gleichen Zeitraum als ich die Blogparade rund um die exotischen Linux-Distributionen gestartet habe erschien bei pro-linux ein Artikel zum kubanischen Nova Linux. Schon kurz darauf erreichten mich per Mail Wünsche, diese Distribution doch in die Blogparade aufzunehmen. Es stand eigentlichimmer ausser Frage, dss wenn einer kommt und sagt ich hab da noch wirklich eine interessante Linux-Distribution und möchte diese gerne vorstellen, diese nicht in die Blogparade aufzunehmen. Nun ist es das erste mal soweit, Michael der den meisten Ubuntuusern eher als majestyx bekannt, hat sich daran gemacht Nova Linux vorzustellen.

Nova Linux stammt wie bereits erwähnt aus Kuba und wird dort an der Universität für Informatik entwickelt um das Land aus der Abhängigkeit von Microsoftprodukten zu befreien. Nova Linux basiert zum größten Teil auf Gentoo nutzt aber auch Technologien aus anderen Gentoo basierten Distributionen. So kommt zum Beispiel aus Sabayon das binary package management zum Einsatz. Einige Werkzeuge stammen auch aus dem argentinischem Ututo Linux, das strikt auf Gnu-Werkzeuge setzt. Nova Linux verfügt über ein umfassendes Administrationswerkzeug “Panel o Centro de Control de Nova” geannt, ein grafisches Paketmangagment-Tool namens Summon. Die Standarddesktopumgebung ist Gnome daneben gibt es aber auch XFCE oder KDE. Außerdem gibt es eine Eigenentwiklung namens Guano für leistungsschwächere Rechner, die Openbox als Windowmanager mit einem XFCE4-Panel und PCmanFM als Dateimanager zusammen einsetzt.

Rundum ist auch die Integration in Windowsnetzwerkumgebungen, auch hier hat man so einige Entwicklungen geleistet. Mit einem Werkzeug namens Ecumenix läßt sich Nove in Active Directory integrieren und mit Capoeira integriert man Verzeichnisse auf Samba-Servern. Michael geht in seinem Artikel noch auf einige andere Dinge ein und umreißt die Gegenbenheiten, die in Kuba in punkto IT herrschen. Er hat die Distribution in einer virtuellen Maschine ausprobiert und ist auch gerne bereit, das entsprechende ISO auf Zuruf bereitzustellen. Da der Download wegen der schwachen Anbindung Kubas ans Internet doch sehr langsam ist.

1. Februar 2010

Lange Zeit war ich auf der Suche nach einem Handy, das auch mit Linux zusammen spielt. Die erste Idee war das Openmoko FreeRunner. Hat Spaß gemacht, war aber auf Dauer nichts für mich (die Gründe könnt ihr im letzten Artikel dieser Rubrik nachlesen). Parallel hatte ich versucht irgendwie mein Motorola V3 Razr unter Linux zu synchronisieren. Etliche Versuche mit opensync, kmobiletools, wammu/gammu, bitbim, moto4lin,… später habe ich es aufgegeben und meiner Mutter vermacht. Mittlerweile klang die Linux-Mobile-Alternative Android sehr verlockend und was soll ich sagen? Gekauft, begeistert.

Die Nachteile eines Betriebssystems von Google liegen auf der Hand: Google kennt meine Kontakte, meine Adressen und meine Kreditkartendaten. Und bei Nutzung entsprechender Dienste weiß Google auch metergenau wo ich gerade bin. Dieses Thema möchte ich hier aber nicht diskutieren, meine Entscheidung ist gefallen.

Kommen wir zum eigentlichen Thema: Synchronisieren von Kontakt- & Kalenderdaten. Vorneweg: es funktioniert über das Googlekonto.

Kalender

Bis vor kurzem habe ich das Thunderbird-Addon Lightning benutzt. Das Einbinden des Google-Kalenders funktioniert recht einfach durch das Addon Provider for Google Calendar. Es wird lediglich die XML-Kalenderadresse vom Googlekalender benötigt die man als Kalenderadresse einträgt.

google_kalender_adresse_xml

Meistens funktioniert das Ändern oder Hinzufügen von Terminen auch, manchmal aber auch nicht. Jedenfalls fand ich die Möglichkeit die Termine im Gnome-Kalender (Klick auf die Uhr im Systray) anzeigen zu lassen schöner und einfacher. Ändern kann ich Termine jederzeit im Browser oder über das Handy. Das Einbinden funktioniert auch hier sehr einfach, allerdings mit der ICAL-Kalenderadresse:

/usr/lib/evolution-webcal/evolution-webcal ICAL_KALENDERADRESSE

Eventuell befindet sich evolution-webcal in einem anderen Verzeichnis, dies ist von der Distribution abhängig. Finden kann man es mit:

whereis evolution-webcal

Schauen wir uns einen typischen Dienstag an:

Gnome Kalender

Damit dürfte auch die Integration in Evolution erledigt sein. Da ich das aber nicht benutze, kann ich euch auch keinen Screenshot zeigen. :-)

Will man einen Kalender wieder entfernen oder die Farbe ändern, ist man ohne Evolution aber aufgeschmissen. Es sei denn man hat das hübsche, kleine Programm Dates installiert:

Dates

Kontakte

Die Kontakte lassen sich gleichfalls über Addons mit Thunderbird synchronisieren. Am einfachsten erscheint mir Google Contacts, das das Google-Konto automatisch erkennt, falls es in Thunderbird eingerichtet ist. Es wird automatisch ein neues Adressbuch angelegt und die einzige Anpassung, die ich noch vorgenommen habe, war die Sortierung nach dem Anzeigename (Adressbuch -> Ansicht -> Namen anzeigen -> Anzeigename).

Dieser Artikel entstand aufgrund eines Wunsches in den Kommentaren.

In letzter Zeit stoße ich oft auf Forenbeiträge, in denen nach einem Adobe Flash-Plugin für die Playstation 3 oder für ältere PowerPC-Macs gefragt wird. Manchmal gibt es gut gemeinte Antworten, die auf die entsprechenden Adobe-Pakete in der Paketverwaltung hinweisen. Das kann jedoch nicht funktionieren.

Um es noch einmal klar zu sagen: Es gibt kein Flash-Plugin von Adobe für die PowerPC-Architektur!

Man hat auf einer PS3 oder auf älteren Macs dennoch mehrere Möglichkeiten, Flash-Videos zu schauen:

Keine der genannten Möglichkeiten ist optimal, aber die Ideallösung gibt es nunmal nicht.

Android: So frei wie es sein will?

Android: So frei wie es sein will?

Androids Grundsystem ist Open Source, allzu häufig wird dies immer wieder in den Vordergrund gestellt, wenn es um direkte Vergleiche zu anderen Systemen, insbesondere zu Apples iPhone OS, geht. Ein Alleinstellungsmerkmal, von dem die Vertriebler träumen.

Die Wahrheit sieht jedoch anders aus. Zwar beruht das Grundsystem auf Open Source, die im gleichen Atemzug beworbene Funktion der nahtlosen Einbindung von Googles Diensten, sei es Mail, der Kalender oder gar der Market stehen jedoch nicht unter Open Source. Angepasste ROMs dürfen die genannten Anwendungen nicht beinhalten, Zuwiderhandlung wird von Google abgestraft, wie man im vergangenen Jahr am Beispiel des Cyanogen Mods sehen konnte.

Google liefert mit Android, ohne Frage, ein mittlerweile sehr ausgereiftes System, voller Funktionen, ich persönlich würde es nicht mehr missen wollen. In 2010 werden wir von sehr vielen Herstellern neue Geräte sehen und der Marktanteil wird weiter anwachsen.

Ein Grundproblem bleibt jedoch: die Produkt- und Softwarepflege durch die Hersteller der Android Geräte. Bisher hat sich kein Hersteller positiv herausgestellt, wenn es darum geht die Geräte zuverlässig zu pflegen und Updates bereit zu stellen. Nur allzu häufig ist es die Modder-Szene, die die Updates zeitnah und zuverlässig zur Verfügung stellt. Android 2.0 ist nun schon einige Monate auf dem Markt und startete im Motorola Droid im Herbst des vergangenen Jahres. Ausser halbherzige Ankündigungen und vage Terminangaben ist bisher nicht viel geschehen.

Es gibt auf der einen Seite Hersteller wie HTC und Motorola, die sich zu Updates öffentlicht verpflichtet haben, die Termine sind jedoch selten eingehalten worden, oder so undefiniert formuliert worden, dass man sich nicht festnageln lassen muss. Immerhin ist Motorolas Minor-Update auf 2.0.1 in Frankreich nachweislich gestartet, der Rest von Europa wartet allerdings nach wie vor auf das Update. HTC verspricht unter anderem das Hero auf 2.0 zu updaten, der genannte Zeitraum kommt näher, man wird bald mehr wissen.

Samsung weigert sich weiterhin offiziell ein Update für das Samsung Galaxy zu bestätigen, zumindest für das Spica wird das Update wohl kommen. Gerüchte über den bald anstehenden Start eines “Galaxy 2″, sowie die Veröffentlichung von Geräten auf hauseigener Bada Plattform, lassen allerdings an der Ernsthaftigkeit von Samsungs Bemühungen zweifeln.

Zurück zum Kernproblem. Android will offen sein, wird jedoch durch die Hersteller schlecht gepflegt und ist für ambitionierte Programmierer, die Custom ROMs zur Verfügung stellen wollen, mehr und mehr unzugänglicher. Häufig scheitert es an kleinen Dingen, wie dem fehlen von offenen Bootloadern, wie im Falle des Milestones.

Mit Start des Google/HTC Nexus One, welches mit Android 2.1 bestückt ist, ist die Kluft nochmals grösser geworden. Alle Hersteller, von Motorola abgesehen, welche mit dem bisher einzigen 2.0 Android Gerät gestartet sind, haben den Schritt zu 2.0 noch nicht vollzogen, da wird ein neues Gerät mit neuer Software ausgeliefert. Google selbst kann man hier wohl kaum einen Vorwurf machen, die Pflicht liegt bei den Herstellern, die von der Flexibilität und der raschen Entwicklung von Open Source/Linux Systemen offensichtlich überfordert sind. Als Kunde wünscht man sich allerdings, dass das erworbene Gerät entsprechend gepflegt wird. Ob man hierzu ein Anrecht hat, lasse sich aussen vor, jedoch sollte die Produktpflege die Bereinigung von Systemfehlern, wie zum Beispiel dem Autofokus-Bug des Milestones, umfassen.

Die Hersteller müssen umdenken, sollten sie Android Systeme auf lange Frist erfolgreich und zur Kundenzufriedenheit vertreiben wollen. Die Handhabe von Garantieleistungen sollte überdacht werden und auf die Offenheit des Systems eingegangen werden. Ein Garantieverlust, sobald man eine Kleinigkeit am beworbenen “Offenen System” verändert, ist beim besten Willen nicht mehr zeitgemäß, man sollte sich hier auf die Hardwaregarantie konzentrieren und Änderungen am System hinnehmen.

Im Umgang mit Open Source basierten Systemen muss noch viel gelernt und die Unterstützung besser werden. Ob dies nun durch den Einsatz der vertreibenden Hersteller geschieht, oder durch die Öffnung dieser, in Hinsicht von freien Entwicklern, ist hier nicht ausschlaggebend. Über langfristige Zeit wird sich jedoch die Taktik “Neues Telefon, neue Android Version und die Altgeräte sind vergessen” nicht als erfolgreich herausstellen und die Kundenfrustration soweit steigern, dass der Absatz von Android Geräten schwierig, bis unmöglich wird und sind wir ehrlich, Android ist zu gut um dieses Schicksal erfahren zu müssen!

Teilt eure Meinung!

Ähnliche Beiträge:

  1. Open Android Alliance baut an vollständig freier Android Variante
  2. Samsung Galaxy Upgrade auf Android 1.6 bzw. Android 2.0
  3. Motorola Milestone Android 2.0.1 Update

Die Standardshell auf den meisten Linux-Systemen ist die Bash. Sie ist schon sehr mächtig und erlaubt es viele Aufgaben zu automatisieren. Dieser Artikel soll sich einer sehr interessanten weil noch mächtigeren Shell widmen, der Z-Shell kurz zsh.

Die zsh lässt sich auf quasi allen Linuxsystemen über die Paketverwaltung installieren. Unter Ubuntu z.B. mit dem Befehl

sudo apt-get install zsh

Danach kann man sie mit dem Aufruf von zsh ausführen. Um sie zur Standardshell zu machen genügt der Befehl

chsh -s /usr/bin/zsh username

Wobei username durch den entsprechenden Usernamen ersetzt werden muss und der Pfad zu zsh stimmen muss. Auf manchen Systemen liegt zsh in /bin. Wo zsh liegt kann man mit dem folgenden Befehl heraus finden:

which zsh

Die zsh bedient sich Elementen der Bash, der Korn-Shell (ksh) und der TENEX-C-Shell (tcsh – eine erweiterte C-Shell). Sie ist sehr gut konfigurierbar und fast jedes Verhalten der Bash kann nachgeahmt werden so dass der Umstieg sehr leicht fällt. Bestehende Bash-Scripte können natürlich weiterhin genutzt werden, wenn der Shebang entsprechend gesetzt ist. Also in der ersten Zeile folgendes steht:

#!/bin/bash

Im Folgenden werde ich einige interessante Vorteile der zsh kurz beschreiben. Zu einzelnen Themen werde wahrscheinlich in anderen Artikel ausführlicher eingehen. Dies sollen also nur Beispiele sein, die die Mächtigkeit demonstrieren sollen. Da die zsh so viele Möglichkeiten bietet ist es nicht möglich hier alles im Detail zu erläutern. Optionen werden mit dem Befehl setopt gesetzt. Dies kann man auch so in die Konfigurationsdatei ~/.zshrc schreiben.

Autokorrektur
Die zsh beherrscht einen Mechanismus, der kleine Tippfehler automatisch korrigiert. Hat man in einem Ordner eine Datei testfile.txt und möchte diese kopieren nach file2.txt, so führt man in der Regel folgenden Befehl aus:

cp testfile.txt file2.txt

wie von der Bash gewohnt nutzt man dafür die Autovervollständigung mittels TAB. Bei einem Verschreiber wird dieser in der zsh automatisch korrigiert. Beispiel:

cp tsetf<TAB>

wird automatisch korrigiert und zu

cp testfile.txt

vervollständigt.

Die Autokorrektur aktiviert man mit der Option correct

Globale Aliase
Neben den normalen Aliasen für Kommandos, wie man sie aus der Bash kennt, gibt es in der zsh noch globale Aliase, die überall im Befehl genutzt werden können, nicht nur am Anfang. Zwei Beispiele verdeutlichen dies:

alias -g G='| grep'
alias -g L='| less'

erzeugt die globalen Aliase G und L die man hinter alle möglichen Befehle schreiben kann um die Ausgabe des entsprechenden Befehls in grep oder less zu pipen. Z.B.

ls G txt

entspricht dem Befehl

ls | grep txt

oder

ps -e L

entspricht

ps -e | less

Natürlich ist auch folgendes Möglich:

ls G txt L

was folgendem Befehl entspricht:

ls | grep txt | less

Suffix Aliase
Mit Suffixaliasen kann man Programme festlegen, mit denen bestimmte Dateitypen (anhand ihrer Endung) geöffnet werden sollen. Man braucht dann nur noch den Namen der Datei eingeben und sie wird mit dem entsprechenden Programm geöffnet. Beispiel:

alias -s pdf=evince

legt einen Alias für pdf Dateien an. Sie sollen mit evince geöffnet werden. Danach reicht die Eingabe von

dokument.pdf

und die Datei dokument.pdf wird mit evince geöffnet.

Aliase für Verzeichnisse: Hashes
Mit sogenannten Hashes lassen sich Aliase für beliebige Verzeichnisse anlegen. Auf diese kann dann sehr einfach zugegriffen werden. Mit dem Befehl

hash -d perl=~/developement/scripting/perl

legt man einen Hash namens perl für das Verzeichnis ~/developement/scripting/perl an. Auf dieses Verzeichnis kann man jetzt mit ~perl zugreifen. Auch innerhalb eines Befehls wie folgendes Beispiel zeigt:

cp testscript.pl ~perl

Dieser Befehl kopiert die Datei testscript.pl in das Verzeichnis ~/developement/scripting/perl.

Auto-CD
Mit der Option autocd kann man zum Wechseln in ein Verzeichnis einfach den Namen eines Verzeichnisses eingeben und das Kommando cd davor einfach weglassen. Wenn es keinen Befehl gibt, der so heißt wie das Verzeichnis, so wird in das Verzeichnis gewechselt.

Kurze for-Schleifen
Statt einem

for i in *.eps; do epstopdf $i; done

um alle eps-Dateien in einem Verzeichnis in pdf-Dateien umzuwandeln genügt unter zsh die kürzere Form

for i (*.eps) epstopdf $i

Globale History
Die History, die man mit der Pfeil-auf Taste durchgehen kann, kann man in der zsh so einstellen, dass sie in jeder zsh-Instanz gleich ist. Das heißt man hat nicht mehr für jedes Fenster seine eigene History sondern kann mit der Pfeil-auf Taste auch Befehle raussuchen, die in anderen Fenstern eingegeben wurden. Die History wird jedoch nur nach jedem Befehl geupdated, das heißt man muss ggf. einmal Return drücken, damit die Befehle aus einem anderen Fenster verfügbar sind.

Dieses Verhalten kann mit der Option share_history aktiviert werden.

Directory Stack
Wie Bash, hat die zsh auch einen Directory stack. Mit dem Befehl pushd kann man das aktuelle Verzeichnis auf den Stack legen und mit popd das jeweils letzte Verzeichnis vom Stack nehmen und dorthin springen. Mit der Option auto_pushd legt die zsh automatisch jedes Verzeichnis auf den Directorystack, aus welchem man in ein anderes Verzeichnis wechselt. So hat man immer eine History der Verzeichnisse in denen man war und kann mit popd sehr einfach wieder in Verzeichnisse welchseln, die man vorher besucht hatte.

Globbing
Die Nutzung von Wildcards – unter zsh globbing genannt – ist bei der Z-Shell wesentlich mächtiger als in der Bash. Zunächst gibt es rekursives Globbing (gibts in der Bash in neueren Versionen wohl auch). So kann man mit dem Befehl

ls **/*.html

alle HTML-Dateien im aktuellen Verzeichnis und allen Unterverzeichnissen auflisten lassen.

Es gibt jedoch auch noch Qualifier um Dateien mit bestimmten Eigenschaften auszuwählen. Diese schreibt man in runde Klammern. So kann man mit . normale Dateien, mit / Verzeichnisse und mit @ Symbolische Links matchen. Praktisch ist das z.B. wenn man allen Verzeichnissen ab einem bestimmten Verzeichnis die Rechte 755 und allen Dateien 644 vergeben möchte. Dies kann man mit den folgenden zwei Befehlen bewerkstelligen statt mit find und exec zu arbeiten.

chmod 755 **/*(/)
chmod 644 **/*(.)

Zusätzlich gibt es auch Qualifier für verschiedenste Dateirechte. Folgender Befehl listet alle Dateien auf, die von allen beschrieben werden können:

ls **/*(.W)

Auch nach der Dateigröße lässt sich suchen:

print **/*(L0)

listet alle leeren Dateien auf.

Auch die Sortierung lässt sich beliebig anpassen. Mit dem Befehl:

print *(oL)

Listet alle Dateien der Größe nach von klein nach groß auf. Mit großem O wird die Sortierung umgekehrt.

Somit lässt sich mittels globbing in der zsh das Kommando find quasi komplett ersetzen. Die hier gezeigten Beispiele sehen auf den ersten Blick recht kompliziert und kryptisch aus. Wenn man das Prinzip aber einmal verstanden hat und die wichtigsten Qualifier kennt ist es aber ganz einfach und sehr praktisch.

Es gibt noch jede Menge weiterer Qualifier und Möglichkeiten für das Globbing (z.B. nur das erste oder eine bestimmte Anzahl von Elementen auszuwählen), die ich hier gar nicht alle erwähnen kann. Im zsh-Manual gibt es jedoch eine Liste der Glob-Qualifier.

Um alle Möglichkeiten nutzen zu können sollte die Option extended_glob gesetzt werden.

Vervollständigung
Die zsh hat wie die Bash einen Vervollständigungsmechanismus, so dass man mit der TAB-Taste Kommandos, Dateinamen und vieles mehr vervollständigen kann. In der zsh ist dieser Mechanismus jedoch extrem gut konfigurierbar und programierbar. So kann man z.B. beim scp Befehl (der Dateien über ssh kopiert) die Verzeichnisse auf dem entfernten Rechner vervollständigen und genau definieren welche Programme mit welchen Dateitypen zusammen arbeiten können. Für sehr viele Programme ist dies schon vorgefertigt, so dass ein

latex doku<TAB>

automatisch zu

 latex dokument.tex

vervollständigt wird. Dies beherrscht die Bash zum Teil auch. Jedoch ist es in der zsh wesentlich besser konfigurierbar und anpassbar.

Sehr praktisch finde ich auch die Menüfunktion. So wird beim ersten Druck auf die TAB-Taste wie in der Bash soweit vervollständigt, bis nicht mehr entschieden werden kann welche Datei (bzw. welcher Befehl) gemeint ist. Ein weiterer Druck auf die TAB-Taste listet alle weiteren Möglichkeiten auf und jeder weitere Druck geht diese Möglichkeiten durch. Wenn ich also drei Dateien habe: test.txt, testfile1.txt und testfile2.txt und gebe folgendes ein:

ls te<TAB>

so wird zuerst auf test vervollständigt. Ein weiterer Druck gibt mir alle Möglichkeiten aus:

testfile1.txt  testfile2.txt  test.txt

und ein dritter Druck auf die Tab-Taste vervollständigt den Befehl zu

ls testfile1.txt

Das ist viel schneller als erst ein f einzugeben um erneut TAB zu drücken und dann die 1 einzugeben um wiederum TAB zu drücken bis der Dateiname endgültig vervollständigt wird.

Ein weiterer Druck auf TAB nimmt dann die nächste Möglichkeit. In diesem Beispiel also

ls testfile2.txt

und so weiter.

Expansion
Mit der TAB-Taste kann man in der zsh nicht nur Kommandos, Dateinamen, … vervollständigen, sondern auch Variablen expandieren. Viele kennen ja die spezielle Variable !!, die den zuletzt ausgeführten Befehl enthält. In der zsh kann man nun folgendes eingeben:

!!<TAB>

und die Variable !! wird automatisch zum zuletzt ausgeführten Befehl expandiert. Genauso kann man auch jede andere Variable expandieren:

$PWD<TAB>

wird zu /home/zimon/developement (vorrausgesetzt ich befinde mich zum Zeitpunkt der expansion in diesem Verzeichnis).

History Kontrolle
Wie bei der Bash auch, kann man in der zsh die History durchsuchen. Die zsh geht jedoch so weit, dass man auch nach bestimmten Parametern suchen kann. Ein Beispiel:

cp ../perl/foo.pl ~/developement/projektordner

Danach kommen ein paar andere Kommandos. Möchte nun eine andere Datei in den gleichen Projektordner kopieren reicht folgende Eingabe:

cp ../perl/bar.pl !?proj?:3

Mit !? wird nach einem vorherigen Befehl gesucht. Das proj ist ein String der in diesem Befehl vorkam. Mit dem ?:3 wird das dritte Argument genutzt. Durch die Expansion kann manmit durch einen Druck auf TAB diesen Ausdruck auch noch expandieren um sicher zu gehen, dass das richtige Argument ausgewählt wurde. Man kann zwar mit Alt+. wie in der Bash die jeweils letzten Argumente durchgehen, auf diese Weise kann man aber auch das zweite von drei Argumenten suchen.

Es gibt noch wesentlich mehr Möglichkeiten die History zu durchsuchen und zu verwenden.

Hochkonfigurierbarer Prompt
In der Z-Shell kann man nicht nur die linke Seite des Prompts sondern auch die rechte Seite konfigurieren. Als Beispiel hier mal mein aktueller Prompt:

zsh Prompt

Mein aktueller zsh-Prompt

Ich finde die Anzeige der Uhrzeit inklusive Sekunden recht praktisch, da man daran sieht wie lange ein Befehl gedauert hat oder wann man ihn ausgeführt hat. Es gibt jedoch auch die Möglichkeit automatisch die Ausgabe von time bei der Beendigung eines Befehls ausgeben zu lassen, der länger als eine vorher definierte Zeit benötigt hat.

Der Prompt ist eine abgeänderte Version von Phil!s ZSH Prompt.

[UPDATE] Auf Anfrage hin ist hier noch der Code für die von mir abgeänderte Version des Prompts:

setprompt () {
    ###
    # Need this so the prompt will work.
 
    setopt prompt_subst
 
 
    ###
    # See if we can use colors.
 
    autoload colors zsh/terminfo
    if [[ "$terminfo[colors]" -ge 8 ]]; then
	colors
    fi
    for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
	eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}'
	eval PR_LIGHT_$color='%{$fg[${(L)color}]%}'
	(( count = $count + 1 ))
    done
    PR_NO_COLOUR="%{$terminfo[sgr0]%}"
 
 
    ###
    # See if we can use extended characters to look nicer.
 
    typeset -A altchar
    set -A altchar ${(s..)terminfo[acsc]}
    PR_SET_CHARSET="%{$terminfo[enacs]%}"
    PR_SHIFT_IN="%{$terminfo[smacs]%}"
    PR_SHIFT_OUT="%{$terminfo[rmacs]%}"
    PR_HBAR=${altchar[q]:--}
    PR_ULCORNER=${altchar[l]:--}
    PR_LLCORNER=${altchar[m]:--}
    PR_LRCORNER=${altchar[j]:--}
    PR_URCORNER=${altchar[k]:--}
 
    if [[ "$TERM" == "screen" ]]; then
	PR_HBAR=-
     	PR_ULCORNER=--
    	PR_LLCORNER=--
    	PR_LRCORNER=--
    	PR_URCORNER=-
   fi 
 
 
    ###
    # Decide if we need to set titlebar text.
 
    case $TERM in
	xterm*)
	    PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}'
	    ;;
	screen)
	    PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}'
	    ;;
	*)
	    PR_TITLEBAR=''
	    ;;
    esac
 
 
    ###
    # Decide whether to set a screen title
    if [[ "$TERM" == "screen" ]]; then
        PR_STITLE=$'%{\ekzsh\e\\%}'
    else
        PR_STITLE=''
    fi
 
 
    ###
    # Finally, the prompt.
 
    PROMPT='$PR_SET_CHARSET$PR_STITLE${(e)PR_TITLEBAR}\
$PR_RED$PR_SHIFT_IN$PR_ULCORNER$PR_BLUE$PR_HBAR$PR_SHIFT_OUT(\
$PR_GREEN%(!.%SROOT%s.%n)$PR_GREEN@%m:%l\
$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_RED$PR_HBAR${(e)PR_FILLBAR}$PR_BLUE$PR_HBAR$PR_SHIFT_OUT(\
$PR_MAGENTA%$PR_PWDLEN<...<%~%<<\
$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_RED$PR_URCORNER$PR_SHIFT_OUT\
 
$PR_RED$PR_SHIFT_IN$PR_LLCORNER$PR_BLUE$PR_HBAR$PR_SHIFT_OUT(\
%(?..$PR_LIGHT_RED%?$PR_BLUE:)\
${(e)PR_APM}$PR_YELLOW%D{%H:%M:%S}\
$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
$PR_RED$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
$PR_NO_COLOUR '
 
    RPROMPT=' $PR_RED$PR_SHIFT_IN$PR_HBAR$PR_BLUE$PR_HBAR$PR_SHIFT_OUT\
($PR_YELLOW%D{%a,%b%d}$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_RED$PR_LRCORNER$PR_SHIFT_OUT$PR_NO_COLOUR'
 
    PS2='$PR_RED$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
$PR_BLUE$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT(\
$PR_LIGHT_GREEN%_$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
$PR_RED$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR '
 
}
 
setprompt

[/UPDATE]

ZLE-Widgets
Der Z-Line-Editor (ZLE) ist quasi die Eingabezeile in der zsh. Dafür kann man sich kleine Programme schreiben, die einem das Leben vereinfachen. Ein Beispiel wäre ein Programm, dass bei der Eingabe von ... diese zu ../.. umwandelt. Jeder weitere Punkt wird wieder umgewandelt. So kann man recht einfach folgendes eingeben:

cd ..../directory

Auf dem Bildschirm erscheint jedoch folgendes:

cd ../../../directory

Dieses Widget ist kein Standard bei der Z-Shell. Man kann es aber durch folgenden Code in der Konfigurationsdatei ~/.zshrc erzeugen:

rationalise-dot() {
    if [[ $LBUFFER = *.. ]]; then
        LBUFFER+=/..
    else
        LBUFFER+=.
            fi
}
zle -N rationalise-dot
bindkey . rationalise-dot

Automatisches tee-ing
In der Z-Shell kann man die Ausgabe eines Kommandos recht einfach in mehrere verschiedene Dateien umleiten. Statt wie in der Bash

ls | tee -a all | tee actual

zu schreiben, kann man in der zsh einfach

ls >>all >actual

eingeben. Beide Befehle führen ls aus und hängen die Ausgabe an die Datei all an und schreiben sie in die Datei actual wobei der inhalt jeweils überschrieben wird.
Möchte man die Ausgabe wie beim original tee Befehl auch auf dem Bildschirm sehen, so leitet man sie auch noch auf STDOUT um:

ls >>all >actual >&1

Verzeichnisse durch Ersetzung wechseln
Ein Beispiel sollte dies am besten Erklären. Man nehme an man hat zwei Verzeichnisse: ~/developement/scripting/perl/modules und ~/developement/scripting/python/modules und man befindet sich in ~/developement/scripting/perl/modules, so kann man durch den Befehl

cd perl python

in das Verzeichnis ~/developement/scripting/python/modules wechseln. Bei einem cd Kommando mit zwei Parametern wird im aktuellen Verzeichnis-String das erste Wort durch das zweite ersetzt. Hier also perl durch python.

Fazit
Ich bin jetzt nicht 100% sicher, dass alles hier beschriebene nicht auch in der Bash möglich ist. Es zeigt aber auf jeden Fall, dass die Z-Shell jede Menge interessante Möglichkeiten bietet und man viele Dinge einfacher und schneller erledigen kann als in der Bash. Die oben gezeigten Features sind meist nur angerissen und nur eine kleine Auswahl von dem was die Z-Shell bietet. Darüber hinaus besitzt die Z-Shell eine ganze Reihe Module z.B. für Matheoperationen oder einen eigenen FTP-Client, die man bei Bedarf laden kann.

Sehr schön ist auch die Möglichkeit den Screen-Title von der zsh aus zu setzen.

Es lohnt sich auf jeden Fall, diese Shell etwas genauer zu betrachten. Bei mir hat sie mittlerweile die Bash fast vollständig ersetzt (vorhandene Scripte habe ich nicht umgeschrieben).

Links

Aus meiner dunklen Vergangenheit, aus der es noch einige Leichen zu bergen gilt, stammt ein Account bei Flickr. Den habe ich mir mal angelegt, als ich noch voller Freude dem goldenen Käfig frönte und ein suggestiv glücklicher Mac-User war. In jener Szene, und auch bei den regelmässigen Teilnehmern und Teilgebern von Barcamps, ist Flickr so quasi die Hausbibliothek für die eigenen, öffentlichen Bilder. Und weil das so war, habe ich noch immer einen Pro-Account, der nicht sehr teuer ist, dafür aber ein paar Vorteile, wie mehr Speicherplatz, bringt.

Unter Ubuntu lässt sich Flickr natürlich auch nutzen und die dort abgelegten Bilder verwalten. Einerseits kann man das mit dem Browser seiner Wahl erledigen, das ist aber nicht sehr komfortabel; vor allem der Upload. Bisher nutzte ich dazu entweder ein Plugin bei F-Spot oder jUploader. Uber das Software-Center bin ich kürzlich auf den Desktop Flickr Organizer gestossen. Der wurde unter anderem auch für Gnome portiert und setzt auf mono auf. Für viele Linux-Pharisäer ist wohl mono nicht unbedingt die richtige Plattform für Ubuntu. Vergessen darf man aber nicht, dass bereits einige recht häufig verwendete Applikationen unter Linux unter mono laufen. So zum Beispiel Banshee oder F-Spot. Die Nähe zu Microsofts .NET ist wohl der Stein des Anstosses und die damit verbundene Abhängigkeit. Das ist zum Teil verständlich.

Wie dem auch sei; der Desktop Flickr Organizer oder kurz dfo vereinfacht die Verwaltung und die Pflege der Bilder auf Flickr. Jeder Benutzer muss sich allerdings im Klaren sein, dass man bei Flickr seine Bilder in fremde Hände gibt. In diesem Fall in jene von Yahoo, der Besitzerin von Flickr. Installiert wird das Programm ganz einfach über das Software-Center, alternativ geht es natürlich auch über die Konsole, dann braucht es das Paket dfo:

sudo apt-get install dfo

Nach dem ersten Start (dfo ist im Menü unter Anwendungen / Grafik / Desktop Flickr Organizer zu finden) sollte man sich zunächst mit Flickr verbinden und mit einem Webbrowser zustimmen, dass dfo direkt auf die eigenen Daten von Flickr zugreifen darf.

Danach sollte eine erste Synchronisation stattfindet, welche je nach Anzahl Bilder eine recht lange Zeit in Anspruch nehmen kann. Und dann kann man bereits mit der Arbeit beginnen. dfo bietet vier Hauptansichten, mit denen die Bilder und deren Meta-Daten verwaltet werden können: Sets, Tags, Pools und Blogs. Die jeweilige Verwendung ist intuitiv gestaltet und bedarf meiner Meinung nach keine weiteren Erklärungen. Leider funktioniert im Moment der Upload neuer Bilder nicht, mindestens unter Karmik nicht. Die Applikation stürzt ab, wenn man ein oder mehrere Bilder hochladen möchte. In den Iusses wird der Fehler bereits einige male beanstandet, offenbar funktionierte der Upload unter Ubuntu Jaunty noch.

Ein einzelnes Bild lässt sich ganz einfach und rasch bearbeiten, wobei auch andere Tags benutzt, die aus den bereits verwendeten ausgewählt werden können; neue Tags lassen sich auch hinzufügen. Ebenso gibt es die Möglichkeit, Kommentare zu bearbeiten.

Die Metadaten von mehreren Bildern lassen sich ebenso bearbeiten. Tags und Titel können so für eine ganze Reihe von Bildern vergeben werden. Das ist praktisch. Ansonsten bietet dfo nicht viel mehr. Und solange kein Upload möglich ist, sehe ich keinen Nutzen für das Teil. Es bleibt zu hoffen, dass der Fehler bald gefixt wird.

Ähnliche Artikel

Es geht nun weiter in der Blogparade der exotischen Linux-Distributionen, diese Mal geht es wieder nach Lateinamerika nach Chile um genau zu sein. Von dort stammt die Distributione esun, sie wird eintwickelt von der Universidat Tarapacá de Arica und ist gedacht für den Einsatz in kleinen und mittleren Unternehmen sowie als Ausbildungsmittel für Wirtschaftswissenschaftler. Die Distribution basiert auf und Ubuntu und hat für den Einsatzzweck nützliche Werkzeuge für die Finanzverwaltung als auch für Projektplanung oder für das Customer-Relationship-Management. Dafür sind zum Beispiel GnuCash, Sugar CRM und Planner an Bord. Um Ressourcen zu sparen setzt man auf die XFCE-Desktopumgebung und verzichtet auf größere Officesuiten und arbeitet statt dessen mit Gnumeric und Abiword. Als Browser kommt Epiphany zum Einsatz mit dem man die webbasierten Applikationen wie SugarCRM beidenen kann. Für diese wird auch ein Apache Webserver mit MySQL installiert, den man komfortabel starten und beenden kann. Alles in allem also eine durchdachte Lösung für den angestrebten Anwenderkreise, das findet auch Thomas in dessen Beitrag man mehr zur Linux-Dsitribution Esun erfahren kann.

Damit ist jetzt die Masse der bereits vergebenen exotischen Linux-Distributionen erschienen, es fehlen noch die Artikel über RedFlag Linux und Jolicloud. Ich hoffe diese erscheinen in den nächsten Tagen. Aber es sind ja auch noch so einige Linuxdistributionen zu haben. So stehen unter anderem noch Linare, Magic Linux, Atomix, Everest, Canaima Linux, Tilix, Ignalum, Ekaaty, ArtistiX, BeeLinux, trixbox, Incognito, Pioneer Linux, Xange, Karoshi Linux und Toorox zur Auswahl, also noch eine ganze Menge und die Aktion hat ja noch etwa 2 Monate Laufzeit. Vielleicht finden sich ja noch Interessenten für die entsprechenden Artikel über die exotischen Linux-Distributionen.

31. Januar 2010

Ubuntu und andere Linux Aufkleber

Auf die Idee  Aufklebern anzubieten bin ich gekommen, da ich schon öfters gefragt wurde wie man günstig  an Ubuntu/Linux Aufkleber kommt, darüber habe ich nachge

dacht, und kam zu dem Entschluss Aufkleber anzubieten, welche ich selber mit Gimp und Inkscape erstelle und bei einer Druckerei in Pforzheim professionell drucken lasse, die nicht mehr als 70 Cent kosten werden. Nun sind die ersten Aufkleber fertig, und können auf meinem Blog erstanden werden.

Ich werde und möchte an den Aufkleber nicht verdienen, lediglich die Produktionskosten so gut wie möglich decken. Ich freue mich auf Euer Feedback und hoffe, dass Euch die Aufkleber gefallen werden.

Aus der Liste der exotischen Linux-Distributionen, die bei der gleichnamigen Blogparade angeboten wurden, habe ich mir Esun Linux herausgepickt.

Esun stammt aus Chile – genauer von der “Universidat Tarapacá de Arica” – und setzt einen besonderen Schwerpunkt auf geschäftliche Anwendungen für Selbstständige, kleine und mittlere Unternehmen sowie für Lernende und Lehrende in den Wirtschaftswissenschaften.  Die Live-CD der auf Ubuntu basierenden Distribution hat daher Software für die Finanzverwaltung ebenso an Bord wie für CRM oder Projektplanung. Zu den mitgelieferten Anwendungen zählern unter anderem GnuCash, Sugar CRM und Planner, um mal die geläufigeren zu nennen.

Im Office-Bereich setzt Esun auf Gnumeric, Abiword und ClawsMail, wohl um Platz zu sparen, aber auch um schmalbrüstige (Schüler-) Rechner nicht zu überfordern. Dazu passt auch, dass als Desktop das schlanke Xfce zum Einsatz kommt.

Desktop von Esun Linux

Desktop von Esun Linux

Da einige Programme webbasiert sind (z.B. SugarCRM oder Egroupware), bringt Esun auch Apache, MySQL und PostgreSQL mit. Diese werden über entsprechende Menüpunkte komfortabel gestartet (“Iniciar Servicios”) und auch beendet (“Detener Servicios”). Die Webanwendungen haben ebenfalls eigene Verknüpfungen, über die sie im Browser (Epiphany) starten.

Wie bereits erwähnt setzt Esun auf Ubuntu auf, daher sollte die Hardwareunterstützung ähnlich gut sein. Da ich für meinen Bericht auf eine “richtige” Installation verzichtet habe und Esun nur in Virtualbox habe laufen lassen, kann ich dazu allerdings nichts genaueres sagen. Apropos Installation: die ist mit der von Ubuntu identisch, der Partitionierungsdialog spricht sogar von Ubuntu 8.10 als zu installierendem System.

Während bei der Installation noch Deutsch als Sprache ausgewählt werden kann (und damit auch das deutsche Tastaturlayout), ist der Rest von Esun komplett in Spanisch gehalten. Da ich ein paar Brocken Spanisch kann und mit der Menüstruktur von (X)Ubuntu gut vertraut bin, war es allerdings nicht besonders schwer, mich zurecht zu finden. Wer will, kann auch die deutschen Sprachpakete (language-pack-de) nachinstallieren und bei der Anmeldung die Sprache umstellen. Dann ist zumindest das Menü in deutsch gehalten, die Anwendungen sprechen dann englisch.

Fazit

Den Ansatz von Esun, eine “Business-Distribution” zu erstellen, die eine Vielzahl von Anwendungen für die geschäftliche Nutzung mitbringt, finde ich sehr interessant. Die Software-Zusammenstellung zeigt, wie umfangreich die OpenSource-Auswahl in diesem Bereich mittlerweile ist.

Esun dürfte aufgrund der Sprachbarriere zumindest hierzulande weiterhin Exotenstatus genießen. Das ist schade, denn eine business-orientierte Linux-Distribution würde sich sicherlich auch auf hiesigen Rechnern gut machen.