Anwendungen
Portal
Forum
Wiki
Ikhaya
Planet
Mehr
Anmelden

heute

[kile] Sweave-Werkzeug erstellen

Permalink Produnis

Ich nutze den Kile-Editor für meine LaTeX Dokumente.
Innerhalb von LaTeX möchte ich gerne meinen R-Code bzw. dessen Ausgabe integrieren. Hierfür kann man in Kile einfach ein neues “Werkzeug” erstellen. Dies geschieht in 3 Schritten:

  1. ein Werkzeug, welches den Rnw-Code in tex übersetzt
  2. ein Werkzeug, welches die tex-Datei als PDF schreibt
  3. ein Built-Werkzeug, welches die ersten zwei Werkzeuge aufruft

Werkzeug “sweave”

  • Klicke auf “Einstellungen” -> “Kile einrichten” -> “Werkzeuge” -> “Erstellen” -> “Neu..”
  • gib ihm den Namen “Sweave” und ändere “benutzerdefiniert” in “PDFLatex” um.
  • Schreibe in das Feld “Befehl”:
    R
  • Schreibe in das Feld “Optionen”:
    CMD Sweave '%source'
  • Die drei Häkchen müssen gesetzt sein.
    Auswahl_003
  • wechsle auf den Reiter “Erweitert”
  • “Typ” = “Außerhalb von Kile ausführen”
  • “Klasse” = “LaTeX”
  • Schreibe in das Feld “Erweiterung der Quelldatei”:
    Rnw
  • Schreibe in das Feld “Erweiterung der Zieldatei”:
    tex
  • lasse die anderen Felder leer
  • Auswahl_002
  • speichere das neue Werkzeug mit “Ok”

Werkzeug “PDFlatexFromSweave”

  • Klicke auf “Einstellungen” -> “Kile einrichten” -> “Werkzeuge” -> “Erstellen” -> “Neu..”
  • gib ihm den Namen “PDFlatexFromSweave” und ändere “benutzerdefiniert” in “PDFLatex” um.
  • Schreibe in das Feld “Befehl”:
    pdflatex
  • Schreibe in das Feld “Optionen”:
    -interaction=nonstopmode -synctex=1 '%S.tex'
  • Die drei Häkchen müssen gesetzt sein.
  • wechsle auf den Reiter “Erweitert”
  • “Typ” = “Außerhalb von Kile ausführen”
  • “Klasse” = “LaTeX”
  • Schreibe in das Feld “Erweiterung der Quelldatei”:
    tex
  • Schreibe in das Feld “Erweiterung der Zieldatei”:
    pdf
  • lasse die anderen Felder leer
  • speichere das neue Werkzeug mit “Ok”

Built-Werkzeug

  • Klicke auf “Einstellungen” -> “Kile einrichten” -> “Werkzeuge” -> “Erstellen” -> “Neu..”
  • gib ihm den Namen “QuickSweave” und ändere “benutzerdefiniert” in “Quickbuilt” um.
  • Auswahl_004
  • Wähle nun die zwei Werkzeuge “sweave” und “PDFlatexFromSweave” aus
  • Auswahl_006
  • Klicke auf “OK” um das Built-Werkzeug zu speichern.

Jetzt kann man das neue Built-Werkzeug “QuickSweave” anwenden, um .Rnw-Dateien in PDF umzuwandeln.

Weblinks

Quelle: http://danielfischer.name/index.php?id=382

share this

gestern

Git Tip #1: Sub-Directorys, Single-Branches und Repositorys ohne Historie ausschecken

Permalink svij | Blog

Bevor meine Git-Tutorial Reihe weiter geht, fange ich mal eine kleine neue Reihe an. In dieser „Git Tip“-Reihe werde ich hin und wieder mal, das ein oder andere kleine Git-Feature oder Problem beleuchten und wie man es lösen kann. Meistens wohl dann, wenn ich selbst auf ein Problem stoße.

Vor allem in der Qualitätssicherung kommt es häufiger vor, dass man ein Repository mit nur einen Branch klonen will, ein Repository gänzlich ohne Historie klonen will oder nur ein Sub-Directory klonen will.

Der erste Punkt ist recht einfach zu lösen. Der folgende Befehl klont genau einen Branch:

# git clone <url> --branch <branchname> --single-branch
git clone git@github.com:svijee/taskwarrior-androidapp.git --branch master --single-branch

Wie man sieht, bringt diese Funktion Git selbst mit. Es ist also kein wirkliches Problem.

Auch das Klonen eines Repositorys ohne Versionshistorie lässt sich mit den Boardmitteln lösen:

# git clone --depth 1 --branch <branch> <url>
git clone --depth 1 --branch master git@github.com:svijee/taskwarrior-androidapp.git

In diesem Fall wird nur der aktuelle Stand des Repositorys aus dem Branch „master“ geklont. Je nachdem wie viele Revisionen man aus der Versionshistorie möchte, kann man den Parameter "depth" entsprechend anpassen. Man kann die Historie auch ganz einfach prüfen, in dem man ein nachfolgendes "git log" ausführt, welches nur einen Commit anzeigen sollte:

git log
commit 098c0fd18317ad3abe4ecad3a007ff6a6dcd501b
Author: Sujeevan Vijayakumaran <mail@svij.org>
Date:   Fri Sep 19 21:19:40 2014 +0200

    Upgraded compileSdkVersion from 19 to 20

Anders sieht es allerdings aus, wenn man nur einen Unterordner klonen will. Dies ist nicht direkt mit Git selbst möglich, hier muss man sich ein wenig „tricksen“.

# git archive --remote=<url> <branch> <sub-dir> | tar xvf -
git archive --remote=git@github.com:svijee/taskwarrior-androidapp.git master taskwarrior | tar xvf -

Hier wird der Befehl „git archive“ „missbraucht“, um einen Unterorder zu klonen. Der Befehl „git archive“ ist dafür da, aus dem Git-Repository ein Tar-Archiv zu erzeugen. Dieser kann allerdings auch Tarball aus einem Unterverzeichnis erstellen. Mit einer Pipe kann man sich den Ordner dann auch direkt und ohne Umwege auf die Festplatte schreiben lassen.

29. März 2015

Wochenrückblick 13/2015

Permalink deesaster.org

Der Wochenrückblick lässt das Geschehen der vergangenen Woche rund um Ubuntu, Linux und Open Source Revue passieren.

Rund um Ubuntu

Finale Beta von Ubuntu 15.04

Mitte April erscheint Ubuntu 15.04 „Vivid Vervet“. Die finale Betaversion für Ubuntu und seine Ubuntu-Derivate wie Kubuntu, Lubuntu, Xubuntu, Ubuntu GNOME und Ubuntu Kylin soll Entwickler und Tester ermöglichen, die letzten Fehler zu finden und auszumerzen. Wie immer der Hinweis, dass Beta-Versionen für Entwickler und Tester und nicht für den täglichen Produktiveinsatz gedacht sind.

Quelle: Ubuntu Fridge, OMG!Ubuntu!

Das beste Origami-Unicorn gewinnt Ubuntu Phone

Wer gerne bastelt, hat mit der „Origami Unicorn Challenge“ die Möglichkeit, ein Ubuntu Phone zu gewinnen. Bis zum 8. April kann man gemäß der Anleitung ein Einhorn basteln und ein Bild dazu auf Instagram mit dem Hashtag #fingertipchallenge hochladen.

Wer es schafft, das Einhorn nach der Anleitung zu basteln, soll sich bei mir melden. Ich hänge leider an Schritt 13 und habe keine Ahnung, wie ich zu 14 komme. :(

Quelle: Ubuntu Insights

Neues rund um Linux

Allwinner verletzt ggf. GPL

Bereits letzte Woche gab es Anschuldigungen, dass die Firma Allwinner mit ihrer Hardware gegen die GPL verstößt. So wurden laut Entwickler Luc Verhaegen Code von FFmpeg in ihre Bibliotheken eingebaut ohne diese zu veröffentlichen. Die Firma hat darauf reagiert, in dem sie einfach alle Symbole aus der Bibliothek entfernt wurden, was die Analyse erschwert, aber nicht unmöglich macht. Geändert hat sich an der Verletzung laut Verhaegen nichts.

Quellen: Pro-Linux, Golem

Libre Office geht online

Mit Libre Office Online will die Document Foundation das Programm auch online zur Verfügung stellen, sodass man analog zu Google Docs Dokumente online in einer Cloud bearbeiten kann. Wann das Projekt veröffentlicht wird, ist noch nicht klar.

Quellen: Pro-Linux, heise open, Linux-Magazin

Weltraum unter CC-Lizenz

Elon Musk, Chef des Weltraumunternehmens SpaceX, hat alle Bilder der Raketenstarts unter die freizügige CC-BY-Lizenz. Ursprünglich standen die Bilder unter normalen Copyright. Als sich Nutzer fragten, wieso die Bilder nicht verwendet werden dürfte, wurde sie unter eine Nicht-kommerzielle CC-Lizenz gestellt. Eine weitere Anfrage, wieso es die NC-Einschränkung gibt, wurde mit der Veröffentlichung unter CC-BY-Lizenz beantwortet. Die sehr schönen Bilder findet man bei {https://www.flickr.com/photos/spacexphotos/with/16510243060/ Flickr] zur eigenen Benutzung.

Quelle: Golem

Full Circle Magazine #95 erschienen

Letzte Woche ist die neue Ausgabe des englischsprachigen Magazins Full Circle Magazine erschienen. Themen der 95. Ausgabe sind unter anderem ein Review zum Ubuntu Phone, Tutorials zu Python, LibreOffice und Inkscape. Daneben werden LaTeX und Arduino sowie die beiden Spiele Penumbra: Necrologue und Perfect Golf vorgestellt.

Quelle: Full Circle Magazine Blog

Spielen unter Linux

Klassisches RPG: Pillars of Ethernity

Rollenspiele wie Baldurs Gate oder Icewind Dale aus den 90ern haben auch heute noch eine große Fan-Basis. Durch eine Kickstarter-Aktion hat Entwicklerstudio Obsidian ein neues RPG Pillars of Eternity entwickelt, welches auch für Linux erhältlich ist. Bei GOG.vom gibt es beispielsweise auch eine DRM-freie Version.

Quellen: Pro-Linux, heise open, Games4Linux

Verschlüsselung im Cloudspeicher mit Syncany

Permalink (Mer)Curius

Cloudspeicher und Verschlüsselung sind ein Problem, seitdem EncFS als unsicher entlarvt wurde und scheinbar auch nicht aktiv weiterenwickelt wird. Das Problem wird zwar von den Distributionen inzwischen teilweise vorbildlich kommuniziert, aber gelöst ist es deshalb noch lange nicht. Zwar mangelt es nicht an guten Verschlüsselungslösungen, aber diese sind entweder nicht plattformübergreifend verfügbar oder für den Einsatz in der Cloud ungeeignet. Letzteres trifft insbesondere auf Containern basierende Verschlüsselungsmethoden wie – das nicht mehr gepflegte – Truecrypt oder LUKS zu, da diese den Datenverkehr unnötigerweise vergrößern.

Eine Möglichkeit der plattformübergreifenden Verschlüsselung bietet Syncany. Dieses ist ein Werkzeug zur verschlüsselten Dateisynchronisierung, das sich mit quasi jedem Cloudspeicher verbinden lässt, sofern er offiziell unterstützt wird oder wenigstens WebDAV anbietet. Damit dürften die Mehrzahl der Anbieter abgedeckt sein. Neben dem Kommandozeilenwerkzeug gibt es auch eine grafische Oberfläche. Es arbeitet damit parallel zu einem ggf. vorhandenen Clientprogramm des Cloudspeichers, während EncFS ohne dieses nicht funktioniert. Ziemlich anschaulich wird das in einem Video von Syncany demonstriert:

Die Installation ist selbsterklärend, da Pakete für Ubuntu/Debian bereitgestellt werden, das Programm für Arch Linux im AUR zur Verfügung steht und Installationsdateien für MacOSX und Windows vorhanden sind. Alternativ zu den Paketen steht für Ubuntu/Debian auch eine Paketquelle zur Verfügung.

Bedauerlich ist lediglich, dass Syncany Java benötigt und sich dadurch nur mäßig in das System integriert und relativ ressourcenlastig ist. Wie man dies beurteilt hängt sicherlich auch davon ob inwieweit bereits auf Java basierende Programme auf dem System zum Einsatz kommen. Außerdem gilt Java als notorisch unsicher, weshalb es zumindest auf Windows-Rechnern nicht gerne gesehen wird, was aber ein anderes Thema ist.

In jedem Fall ist Syncancy zur Zeit die einzige plattformübergreifende, dateibasierte Verschlüsselungslösung, die uns zur Verfügung steht und nicht erwiesenermaßen unsicher ist. Es bleibt aber anzumerken, dass Syncancy noch keinem Audit unterzogen wurde.

TP-Link WR841N(D) mit DD-Wrt bespielen

Permalink Falk Husemanns Blog

Günstig ein professionell einsetzbares und frei konfigurierbares WLAN- oder Routing-Gerät anschaffen und für ein paar kleine Euro die Reichweite des heimnischen WLANs erweitern, oder ein WLAN nach Firmenstandard (WPA2 Enterprise) aufbauen, dazu noch etwas Quality of Service und typische Firewall-Funktionen? Das geht mittlerweile auch für unter 20 Euro.

wr841n_ddwrt

Nötig sind nur drei Dinge:

DD-Wrt ist eine kleine eingebettete Linux-Distribution die seit etwa zehn Jahren gepflegt wird und aus der Hardware aktueller eingebetteter Geräte das Maximum an Funktion herausholt und in einer leichtverständlichen Weboberfläche präsentiert.

Der TP-Link WR841N ist in zwei Varianten erhältlich: Einer mit fest angebauten Antennen und einer (WR841ND genannt) mit RP-SMA Anschlüssen. Ergänzt braucht es noch die aktuelle Entwicklungsversion von DD-Wrt, die auch die aktuelle Hardwarerevision 9.2 unterstützt.

Diese ist unter diesem Link zu finden. Im aktuellsten Verzeichnis (zum Zeitpunkt der Verfassung dieses Beitrags ist es 12-22-2014-r25697) wird das passende Unterverzeichnis mit dem Namen tplink_tl-wr841ndv9 aufgerufen. Beide Firmwaredateien werden heruntergeladen. Die Datei factory-to-ddwrt.bin kann folgend über die Weboberfläche auf den Router gespielt werden.

Nach einem Neustart ist DD-Wrt installiert und der Router lauscht unterder IP-Adresse 192.168.1.1 und die DD-Wrt Oberfläche präsentiert sich, wie folgt.

Screenshot - 29.03.2015 - 12:08:36

28. März 2015

KurzeTipps – Backups von den Steam Spielen

Permalink DevDiary

Da ich öfters mal mein Betriebssystem neu installiere und dabei auch die Spiele auf Steam erneut heruntergeladen werden müssen, habe ich mir einen Plan ausgedacht, um in Zukunft etwas Zeit zu sparen. Da ich mehrere Festplatten habe und davon auch eine für meine Backups zuständig ist, werde ich dort in einem extra Ordner die Backups von den Spielen platzieren.

Anleitung

Zunächst installiert man die jeweiligen Spiele erst einmal wie gewohnt in dem Verzeichnis der Standard Spielbibliothek von Steam. Danach wird ein Backup von dem Spiel angelegt. Die Option dazu findet man über das Kontextmenü des Spieles unter dem Punkt „Backup Game Files“. Nachdem dies erledigt ist, öffnet man den Ordner in dem die Backups von Steam abgelegt werden und kopiert diese auf die Festplatte die für Backups zuständig ist.

Bei einer Neuinstallation des Betriebssystems können, nachdem Steam installiert wurde, nun die Spiele aus den Backups wiederhergestellt werden. Natürlich könnte man auch eine Backup Software wie zum Beispiel DeJa Dup so konfigurieren dass automatisch ein Backup von diesen Dateien auf einem externen Medium angelegt werden soll. So erspart man sich mit Backups nicht nur eine menge Zeit, sondern entlastet auch sein Netzwerk.

3 Wochen Cyanogenmod 11 auf dem Moto E

Permalink Finns Blog

Mein altes Smartphone habe ich vor 3 Wochen in den Ruhestand geschickt. Mit 256 MB Arbeitsspeicher, Android 2.3.7 und ein paar Bugs in der nie wirklich fertiggestellten Custom ROM wurde selbst das Telefonieren irgendwann immer mehr zur Glückssache. Die Suche nach einem Nachfolger hat mich zum Motorola Moto E geführt. Warum?

Ich habe mich lange nach einem brauchbaren Smartphone umgesehen und habe für mich folgende Kriterien aufgestellt:

  • Dual-Core CPU, gerne 1 GB Arbeitsspeicher
  • Eine Displayauflösung größer als 320×480
  • CyanogenMod muss für das Gerät verfügbar sein
  • Robustes Gehäuse
  • Akzeptable Akkulaufzeit

Besondere Anforderungen habe ich eigentlich nicht, ich brauche keine gute Kamera, LTE und NFC sind mir egal. Spiele möchte ich ebenfalls nicht auf dem Smartphone spielen.

Schaut man sich die Liste der offiziell von CyanogenMod unterstützten Geräte an, fällt auf, dass diese meist recht teuer sind. Meine Preisgrenze lag bei etwa 100€, weshalb ich einen Blick in die Liste der inoffiziell unterstützten Geräte geworfen habe. Dort bin ich auf das Motorola Moto E (1. Generation XT1021) gestoßen. Dies scheint ein recht verbreitetes Modell zu sein, in Deutschland lässt es sich in einigen der bekannten großen Elektronikmärkte für 99€ erwerben, aber auch in anderen Ländern ist die Verbreitung scheinbar groß.

Eine große Verbreitung kann die Entwicklung einer Custom ROM beflügeln und tatsächlich scheint die Portierung von CyanogenMod 11 ziemlich bugfrei zu sein. Wer sein Gerät rooten und flashen möchte, sollte sich folgende Beiträge im xda-developers.com Forum ansehen:

Einen großen Fehler habe ich aber gemacht: Ein paar Tage nachdem ich das Gerät geflasht hatte, war mir aufgefallen, dass das GPS nicht funktionierte. Dies muss in der Stock-ROM vor dem flashen unbedingt aktiv sein. Ich musste leider die Stock-ROM wieder flashen, GPS aktivieren, ein GPS Fix flashen und mein Backup wieder flashen. Das ganze funktionierte nicht auf Anhieb und ich habe auch nicht verstanden, was der absolut korrekte Weg gewesen wäre. Jedenfalls funktioniert das GPS jetzt.

cm11_condor_1

Ich kann keine Fehler feststellen, das WLAN funktioniert gut und bleibt ständig an, so wie ich es möchte. Die Telefonqualität ist in Ordnung, die Kameraqualität eher nicht. Wer ein Smartphone mit einer guten Kamera sucht, sollte sich weiter umsehen.

cm11_condor_2

Dass ich keine Probleme mit der Leistung habe, ist aber nicht verwunderlich. Ich nutze keinen Google Play Store oder sonstige Google Dienste, kein WhatsApp und sowieso habe ich nur ein paar wenige Apps per F-Droid installiert.

Was ich besonders praktisch finde und bei vielen ansonsten interessanten Smartphones fehlt ist die kleine Benachrichtigung-LED an der Vorderseite. Ebenso erfreulich finde ich die Tatsache, dass CM12 wohl scheinbar als offizielle Version von CyanogenMod erscheinen wird, einige Nightly-Builds gibt es bereits. Hier warte ich aber auf eine Stable oder Milestone Version, da ich keine Experimente wagen möchte.

Das Display ist ebenfalls gut, schwächelt in der Sonne aber ein wenig, was die automatische Helligkeitsregelung nur bedingt ausgleichen kann. Die Akkulaufzeit hängt wie bei jedem Gerät von der Nutzung ab. Bei gelegentlicher Nutzung komme ich auf etwa 5-6 Tage, aber bei leicht vermehrter Nutzung oder bei schlechtem Empfang sind es auch mal nur 2-3 Tage. Bei ständiger Nutzung wird natürlich auch der 1980 mAh Akku innerhalb eines Tages leer sein, das ist unvermeidbar.

Wer ein günstiges Smartphone sucht und keine hohen Anforderungen hat, dem kann ich das Moto E empfehlen. Wem das Moto generell zusagt, aber ein wenig mehr Leistung möchte, sollte sich die Moto G Modelle ansehen, von denen einige offiziell von CyanogenMod unterstützt werden.

Keybase.io Einladungen zu vergeben

Permalink Finns Blog

Den Dienst Keybase.io wollte ich mir schon länger mal ansehen, nun habe ich mal die Zeit dafür gefunden. Keybase.io ist eine Alternative zu PGP Keyservern, man kann dort seinen öffentlichen PGP Schlüssel hochladen und diesen mit Accounts von u.a. sozialen Netzwerken verbinden.

Das grundsätzliche Problem an PGP Verschlüsselung ist nämlich das Vertrauen. Wenn man sich persönlich kennt, ist es einfach, den öffentlichen PGP Schlüssel des Gesprächspartners mit Hilfe des Fingerprints (in meinem Fall 251D 62E3 27EF F3B4 A7AF A98A CE4B 40F9 5DFB FE73) zu verifizieren. Schwieriger ist es, wenn man den Gesprächspartner nicht persönlich kennt.

Ich biete meinen öffentlichen PGP Schlüssel hier auf der Webseite (siehe Kontakt) an, aber es wäre möglich, dass diesen jemand unbemerkt austauscht. Eine verschlüsselte Mail an mich wäre somit für mich unbrauchbar, für die dritte Person dann aber lesbar. Deshalb ist mein Schlüssel auch über einen Keyserver abrufbar, leider haben Keyserver in der heutigen Zeit ein leicht angestaubtes Image. Auch dort könnte jemand einen falschen Schlüssel in meinem Namen hochladen.

Jetzt kommt Keybase.io ins Spiel. Dort habe ich ebenfalls meinen Schlüssel hochgeladen. Zusätzlich habe ich durch das Hochladen einer entsprechenden Keybase Datei, bestätigt, dass diese Webseite www.finnchristiansen.de mir gehört. Das Gleiche habe ich bei GitHub durch das Erstellen eines Gists getan. Hätte ich einen Twitter oder Reddit Account, könnte ich diese auch bestätigen.

keybase

 

Zusätzlich gibt es noch einen Keybase-Client für die Kommandozeile, über den man eigene Accounts bestätigen oder fremde Accounts verifizieren kann. Ebenso können Inhalte verschlüsselt, signiert, entschlüsselt oder verifiziert werden. Sicherlich praktisch, aber ich bleibe vorerst bei den für mich etablierten Methoden, ich setze PGP sowieso hauptsächlich für E-Mail ein.

Was ich allerdings praktisch finde, ist die Möglichkeit einer zusätzlichen Bestätigung meines PGP Schlüssels. Wer dem Inhalt meiner Webseite nicht traut, aber meinen GitHub Account kennt, kann sich schon ein ganzen Stückchen sicherer sein, dass der von mir angepriesene Schlüssel auch wirklich mir gehört.

Außerdem besteht die Möglichkeit, andere Benutzer zu tracken, so dass man deren Schlüsseländerungen nicht verpasst. Ich habe jetzt noch vier Einladungen zu vergeben. Wer Lust hat, sich Keybase.io anzusehen, der kann mir seine E-Mail Adresse per Mail oder Jabber zukommen lassen.

27. März 2015

Age of Empires unter Ubuntu 14.04 64Bit

Permalink Erfahrungen mit Ubuntu

Zuerst habe ich gedacht, Age of Empires läuft nach der Wine Installation
out of the box. Aber das war ein Irrtum.
PlayOnLinux war auch nicht die korrekte Lösung.

Aber im Prinzip geht es wie unter den älteren Wine Versionen auch:

Ich lade die fehlenden DLL's herunter:
http://www.thehandofagony.com/alex/dll/dplaydlls-win98se.tar.bz2

Entpacke diese und speicher sie im System32 Verzeichnis.

Anschliessend starte ich winecfg, stelle die Windows Version auf Win98
und gebe folgende DLL's als Native an:
dplay, dplayx, dpnet, dpnhpast and dpwsockx

Anschliessend kann ich mit Ubuntu 14.04 perfeket Age of Empires spielen.
Die Grafikfehler der Vergangenen Versionen (unter Ubuntu 10.04 z.b.) gehören
der Vergangenheit an. Alle Farben stimmen. Spielen übers Lan klappt auch tadellos und das Programm bleibt beim beenden nicht mehr hängen.

Platinum währe für WineHQ nun passend.

Der Browsermarkt 2015

Permalink onli blogging

Browser, da gibt es Firefox und Chrome, und unter Windows noch den Internet Explorer, um damit einen dieser beiden herunterzuladen, während auf Macs Safari ein schlechterer Chrome ist. Das wars. Nur: Das stimmt nicht mehr.

Es ist ein bisschen Bewegung in den Browsermarkt gekommen, den aktuellen Stand will ich hier auflisten.

Firefox

Besieger des IEs, lange führender freier Browser - Firefox ist ein Gigant. Dank neuer Oberfläche, Performance-Verbesserungen und tollen neuen Features gelten die negativen Aspekte dieser Beschreibung aber nicht wirklich für die Software selbst. In den letzten Jahren geriet Firefox unter Druck, wohl vor allem, weil Chrome schlicht der bessere Browser war. Jetzt aber hat Firefox wieder aufgeholt, ist schneller und hübscher geworden, ohne seine überlegene Anpassbarkeit durch Plugins zu verlieren. Natürlich nicht, ohne ewig-gestrige durch das bloße sanfte Ändern der Oberfläche zu verlieren.

Chrome & Chromium

Dem Browser und dem ihm zugrunde liegenden OS-Projekt von Google geht es immer noch gut. Aus dem kleinen, minimalistischen und zu Beginn unnutzbaren Experiment ist der Marktführer geworden. In den letzten zwei Jahren mit den Nachteilen, die ein solcher Status bringt: Nur für Chrome geschriebene Webseiten, nur für Chrome verfügbare Erweiterungen. In letzter Zeit hat sich ersteres entschärft, was wohl eher nicht an Einsicht der Webentwickler liegt, sondern am langsamen Wegfall der -webkit-Präfixe für experimentelle Features, und der Stabilisierung von HTML5.

Über den Browser selbst gibt es nichts neues zu sagen. Die Oberfläche ist weitestgehend wie zuvor, der Performancevorteil existiert dafür nicht mehr, und ich bin inzwischen wieder bei Firefox, auch weil Chromium unter Linux zu instabil war.

Opera

Es gibt ihn inzwischen wieder für Linux! Aber Berichten zufolge ist Opera kein Opera mehr, und da es nur eine 64-Bit-Version gibt kann ich ihn nicht testen.

Aus der Ferne kann ich sehen, dass Opera keine eigene Engine mehr hat, stattdessen wird Blink genutzt, ebenso wie bei Chrome. Eine Ähnlichkeit, die man Screenshots zufolge wohl auch in der Oberfläche wiederfindet - aber bei der Verbreitung, da scheint Opera auch nach dem Umbau bedeutungslos zu sein.

Vivaldi

Vivaldi versucht, den alten Opera-Browser wiederzubeleben, setzt dabei ebenso wie Neu-Opera auf die Blink-Engine. Anders als Opera gibt es eine 32-Bit-Version, ich kann mir die aktuelle Preview also sogar anschauen.

Eigentümliche Farbgebung, die sich an die besuchte Seite anpasst, separierte Suchleiste, die Tableiste kann umgestellt werden - Vivaldi macht keinen schlechten ersten Eindruck. Es fehlt ein Adblocker, der Mail-Client ist bisher nur eine in die UI eingebaute Absichtserklärung. Die UI würde ich schon nicht mehr als minimalistisch bezeichnen wollen, dafür ist sie zu auffällig und es gibt sie als Leisten überall. Trotzdem, die spürbare Zuneigung für die ersten Versionen ist nachvollziehbar, Vivaldi wirkt, als würde er eine valide Option werden. Und anders als früher bei Opera sollte die Webseitendarstellung kein Thema sein, denn mit Blink ist dafür eine massenbenutzte Engine da.

SeaMonkey

Ich war überrascht, SeaMonkey nicht in den Quellen zu finden. Das Projekt ist alt, der Browser ist alt, selbst das Konzept einer Web-Suite statt eines Browsers ist alt. Denn genau das ist SeaMonkey: Mehr als nur ein Browser, ist es ein Browser plus Mail-Client samt Editor und Adressbuch plus IRC-Client, und natürlich ist der Mail-Client gleichzeitig ein Newsgroup-Client.

Entsprechend präsentiert sich die Oberfläche. Lesezeichenleiste, große Buttons (samt einem zum Drucken und einen Spezialbutton zum Suchen), die Leisten sind einklappbar, die Tableiste erstmal versteckt. Das alles wirkt wie bei meiner Anfangszeit unter Ubuntu, als Firefox noch weit von der momentanen Oberfläche weg war, nur… älter. Anders gesagt: Die Oberfläche mit ihrem GTK-Design und Größenunterschieden ist wirklich nicht hübsch. Gleichzeitig aber schon anpassbar, auch wenn Dinge wie ein kombinierter Stop-Reload-Button zu Fehlen scheinen, Tabs nicht per mittlerer Maustaste schließbar sind - SeaMonkey für mich anzupassen wäre ein Kampf. Wer aber genau das sucht - die Oberflächen von damals, den integrierten Mail-Client - der könnte mit SeaMonkey glücklich werden.

Pale Moon

Pale Moon ist eine seltsame Mischung, man betrachtet ihn wohl am besten als ungewöhnlichen Firefox-Remix. Denn es ist ein Firefox mit der altbackenen Oberfläche, ohne WebRTC und ein paar anderen Features, dafür mit aggressiveren Performance-Voreinstellungen wie einer Kompilierung mit -O3 - hier gibt es eine Liste. Dazu kommen Voreinstellungen wie eine eigene Startseite und duckduckgo als voreingestellte Suchmaschine.

Kann man sich als UI-Konservativer wohl anschauen, für mich ist es dadurch keine Option.

Midori

Der Browser von elementaryOS und Xfce ist interessant, weil er tatsächlich eine valide Option zu sein scheint, ohne ein Firefox-Klon oder von einer Firma zu sein. Es ist eine GTK-Oberfläche mit Webkit als Engine, und es gibt ein paar Erweiterungen, z.B. den unbedingt notwendigen Werbeblocker.

Er hat aber auch dämliche Voreinstellungen wie die, bei mittleren Mausklick den Inhalt des Clipboard in die URL-Bar zu pasten und dorthin zu navigieren, und der "Nächstes oder Weiter"-Button der aktuellen Version sieht einfach kaputt aus. Mit ein paar Anpassungen wäre dieser Browser wohl völlig ok und könnte dann der kleine schnelle Browser mit minimaler Oberfläche sein, der er sein will.

rekonq

Rekonq gehört zum KDE-Projekt und ist dort eine Alternative zu Konqueror, dem alten Browser, der vor Dolphin gleichzeitig der Dateimanager war. Das letzte Release ist über ein Jahr alt, sodass die Version in den Quellen aktuell ist. Kein gutes Zeichen bei den normalerweise schnellebigen Browsers.

Allen KDE-Klischees entsprechend schafft es rekonq, beim ersten Start abzustürzen, um beim zweiten mich mit dem Hinweis zu begrüßen, dass keine Suchmaschine aktiv sei und also keine Suchvorschläge angezeigt würden, und dabei auf ein Konfigurationsmenü zu verweisen wo das geändert werden könne, das aber vollkommen unverständlich ist.

Es bleibt dann ein Browser mit einer reduzierten Oberfläche. Anders als Midori ist die Suchleiste in die URL-Eingabe integriert, trotzdem werden keine Suchergebnisse automatisch vorgeschlagen. Ein Adblocker ist integriert, filtert aber Werbung nicht von selbst und hat keine für mich auffindbare Konfiguration. Es gibt eine Browserseite für neue Tabs, bei der neben Favoriten auch der Verlauf und Downloads angezeigt werden können. Mich stören Kleinigkeiten, wie der seltsam ausgerichtete Button für neue Tabs, und der Platzhalter-Text in der URL-Eingabe, der ja wohl wirklich nicht nötig ist. Und dass der Browser sich langsam anfühlt.

Web

Der Preis für den bescheuertsten Namen, mit Sonderpunkten in der Kategorie Arroganz und Apple-Nachmache, geht an Web, vormals Epiphany, dem Browser des Gnome-Projekts. Ohne ihn getestet zu haben erwartete ich eine Reduzierung auf das Unbenutzbare. Ich teste allerdings nicht die neueste Version, denn die lässt sich auf meinem System nicht installieren und es gibt keine Binaries, sondern die aus den Quellen: 3.10, die aktuelle ist 3.16 - ein gutes Zeichen, das Projekt ist aktiv.

3.10 ist dann tatsächlich sehr reduziert und macht ein paar Dinge anders. Der (funktionierende) Adblocker ist nicht konfigurierbar und wird im Gegensatz jeder Konvention aktiviert, indem die Option "Werbung anzeigen" deaktiviert wird. Die Icons der Oberfläche sind weit auseinander und schwarz-weiß, die UI ist wirklich etwas eigenes. Unsympathisch: Mein Blog ist nicht erreichbar, aber den Fehler schreibe ich einfach mal der veralteten Version zu.

Ich bin mir unschlüssig, ob der Browser tatsächlich zu reduziert ist - mir gefällt zum Beispiel, dass die Suchleiste in die URL-Eingabe integriert ist und tatsächlich Suchvorschläge anzeigt, so wie es sein soll. Mich stört aber die gelbe und beim Hovern eines Links sofort aufpoppende Statusleiste, die natürlich auch nicht konfigurierbar zu sein scheint.

Immerhin interessiert es mich jetzt, wie die aktuelle Version ist. Und das ist besser als erwartet.

Servo

Servo ist nicht wirklich ein Browser. Es ist das wahrscheinlich anspruchsvollste aller Projekte dieser Liste, inklusive Chrome und Firefox. Servo ist eine parallelisierbare Browser-Engine. Das Ziel ist es, statt wie bisher einen Hauptthread zum Rendern der Seite zu haben, alles parallel in mehreren Threads zu rendern, sodass die vielen Kerne moderner Hardware genutzt werden. Geschrieben ist die Engine in Rust, eine Programmiersprache, die selbst nichtmal stabil ist. Noch dazu ist das Projekt mehr als Code, denn manchmal müssen Spezifikationen angepasst werden, wenn sie so geschrieben sind, dass sie nicht parallelisiert werden können. Gut, dass Mozilla dafür die nötigen Kontakte haben sollte.

Es geht hier also nicht um die Oberfläche oder Kleinigkeiten wie Adblocker. Die Frage ist vielmehr, ob Servo je eine valide Engine werden wird, die alle üblichen Webseiten anzeigen kann. Denn derzeit ist dem nicht so, und schlimmer noch, derzeit dauert die Installation Stunden und scheitert gerne mal, was am momentan laufenden DDoS gegen Github liegen kann.

Wenn es dann mal läuft, sieht servo so aus:

Keine UI, die Mausinteraktion funktioniert noch nicht, Anzeigefehler sind da - generell fehlt da noch viel. Andererseits wird die Seite angezeigt, die Grundlagen sind da. Gleichzeitig macht das Projekt auf Github einen aktiven und sympathischen Eindruck. Könnte was werden.

Fazit

Es gibt wirklich einige andere Optionen für den bevorzugten Browser. Und nicht nur dass, auch die großen Browser entwickeln sich stetig weiter, so bin ich beispielweise sehr zufrieden mit der Entwicklung von Firefox, nur dass mich web-feindliche Entwicklungen wie der Wegfall des RSS-Buttons ärgern. Die neuen Projekte, wie Midori und Vivaldi, sind echte Optionen, die durchaus für die alltägliche Nutzung geeignet scheinen.

Die vielen Browser sind möglich, weil ihre Engine nicht eigenständig ist. Davon gibt es im Grunde nur noch drei: Gecko, WebKit und Blink, wobei Blink auch noch aus Webkit hervorgegangen ist. Auch deswegen ist Servo so spannend, nicht nur, weil es eine neue Engine mit einer guten Mission ist, sondern weil Servo das kleine Engine-Ökosystem aufmischen könnte. So könnte 2015 für Browser ein gutes Jahr werden.

Pylint3 für Ubuntu/Linux Mint und Sublime Text

Permalink Garten Eden

Pylint hilft mir ungemein als Werkzeug zur statisches Codeanalyse beim Programmieren. Leider unterstützt das Paket pylint in Ubuntu-basierten Distributionen (wie Linux Mint) nur die Analyse von Python2-Scripts; Python3-Unterstützung taucht erst in den vivid-Quellen (15.04) auf.

pylint für Python 3

Dennoch lässt sich das Paket pylint3 problemlos nachinstallieren, nachdem man ein neue Version von python3-astroid bereitstellt. Downloaden kann man beides aus den offiziellen Ubuntu-Quellen (unter Architektur: all):

Nach dem Installieren der beiden Pakete ist pylint3 neben pylint global verwendbar, sie beeinflussen sich also nicht.

Pylint3 für Sublime Text 3

Glücklicherweise gibt es auch für meinen Lieblingseditor Sublime Text 3 ein Plugin/Package, das Pylint einbindet und dessen Ergebnisse z. B. bei jedem Speichern einer Python-Datei grafisch anzeigen kann.

Screenshot Pylint3 in Sublime Text 3

Das Package heißt Pylinter und kann komfortabel über Sublimes Package Control installiert werden.
Nach der Installation muss noch der Pylint-Pfad angepasst werden, damit die 3er-Version genutzt wird. Dies geschiet über Preferences → Package Settings → Pylinter → Settings – User. (Default würde bei jedem Package-Update überschrieben werden.)
Meine Pylinter.sublime-settings:

{
  // Show different icons for errors, warnings, etc.
  "use_icons": true,

  // Automatically run Pylinter when saving a Python document
  "run_on_save": true,

  // Don't hide pylint messages when moving the cursor
  "message_stay": true,

  // my changes for python3 support
  "python_bin": "python3",
  "pylint_path": "/usr/lib/python3/dist-packages/pylint/lint.py"
}
(relevant für den Pfad sind die letzten beiden Zeilen)

Enigmail unterstützt zukünftig nur noch GnuPG 2

Permalink My-IT-Brain

Auf meinem Trusty-Notebook läuft Thunderbird mit dem Addon Enigmail in Version 1.8. Heute Morgen informierte mich Enigmail mit folgender Meldung darüber, dass die unter Ubuntu standardmäßig installierte GnuPG-Version 1.4.16 in zukünftigen Versionen von Enigmail nicht mehr unterstützt wird. Es wird ein Update auf GnuPG 2.0 oder neuer empfohlen.

enigmail-message

Enigmail-Meldung

Nichts leichter als das. Schließlich ist GnuPG 2 bereits in den Paketquellen von Ubuntu enthalten und kann aus diesen installiert werden.

sudo apt-get install gnupg2

Fertig. Mehr ist nicht zu tun. Ein Blick in die Enigmail-Einstellungen zeigt, dass das Addon nun automatisch das soeben installierte gpg2 verwendet.

enigmail-settings

Enigmail-Einstellungen

Die vorhandenen GnuPG-Schlüssel stehen automatisch auch in der neuen Version zur Verfügung. Die Bedienung funktioniert im Wesentlichen wie zuvor. Man verwendet nun lediglich das Kommando gpg2, statt des älteren gpg.

Firefox 39+: Neue Privatsphäre-Option: Tracking-Schutz in Privatem Modus

Permalink Sören Hentzschel

Mozilla hat in die Nightly-Version von Firefox 39 eine neue Privatsphäre-Einstellung integriert: Die Aktivierung eines Tracking-Schutzes im Privaten Modus.

Mozilla arbeitet seit geraumer Zeit an einem in Firefox integrierten Tracking-Schutz. Um diesen zu testen, gibt es fast so viele Möglichkeiten wie Wege nach Rom führen. Eine Möglichkeit ist die Aktivierung über about:config, indem der Schalter privacy.trackingprotection.enabled per Doppelklick auf true geschaltet wird. Eine zweite Möglichkeit führt ebenfalls über about:config, nämlich der Schalter browser.polaris.enabled. Wird dieser auf true geschaltet, wird auch privacy.trackingprotection.enabled auf true gesetzt und gleichzeitig eine sichtbare Option im Einstellungsdialog von Firefox sichtbar (privacy.trackingprotection.ui.enabled) und der Do-not-Track-Header aktiviert (privacy.donottrackheader.enabled). Möglichkeit Nummer 3 ist die Installation des Mozilla Add-ons Lightbeam zur Visualisierung von Trackern. Dieses enthält einen sichtbaren Schalter zur Aktivierung des Tracking-Schutzes.

Auch Firefox für Android besitzt ab Version 37 (Veröffentlichung am 31. März) einen Tracking-Schutz. Hier lautet der Schaltername für about:config ebenfalls privacy.trackingprotection.enabled. Die Nightly-Version besitzt zudem auch ohne manuelles Setzen eines Schalters eine sichtbare Option in den Privatsphäre-Einstellungen.

Ab Firefox 39 bekommt die Desktop-Version eine weitere Option: Die Aktivierung des Tracking-Schutzes im Privaten Modus. Wird diese Option aktiviert, dann ist der Tracking-Schutz ausschließlich in Privaten Fenstern aktiv. In Privaten Fenstern merkt sich Firefox keine Chronik, Sucheinträge, Cookies oder sonstige Surfspuren. Und mit der neuen Option privacy.trackingprotection.pbmode.enabled, die über about:config auf true zu stellen ist, werden zusätzlich bekannte Tracker (auf Grundlage einer Liste von Disconnect) blockiert, ohne dies in normalen Firefox-Fenstern zu tun.

Die Neuerung sollte ab der kommenden Nightly-Version in Firefox integriert sein. Der Tracking-Schutz ist nicht die einzige Privatsphäre-Verbesserung, an der Mozilla momentan arbeitet. Man beschäftigt sich momentan außerdem am Ausbau des Identitätspanels von Firefox zu einem Privatsphäre-Kontrollzentrum.

26. März 2015

Kurztipp: Versionsüberprüfung für Extensions der Gnome Shell deaktivieren

Permalink blog.mdosch.de - Dies & Das

Ich hatte desöfteren den Fall, dass Extensions für die Gnome Shell nicht für neue Gnome3-Versionen aktualisiert wurden. Bisher hatte ich Glück und die Extensions funktionierten auch alle mit den neueren Versionen, ich musste lediglich die aktuelle Version als unterstützt in die Datei ~/.local/share/gnome-shell/extensions/*EXTENSION_ORDNER*/metadata.json eintragen.
Heute habe ich bei Pro-Linux einen Kommentar gesehen, wie man die Versionsprüfung dauerhaft abschaltet. Dazu benötigt man den ab Jessie verfügbaren dconf-editor und wählt dort unter org → gnome → shell die Option disable-extension-version-validation an.

Disable extension verification

Natürlich gibt es auch hier keine Garantie, dass die Extension unter höheren Versionen arbeitet, wenn sie nicht offiziell dafür freigegeben ist, aber ich hatte diesen Fall bisher noch nicht.

Sichere E-Mail-Archivierung mit Piler

Permalink debinux

Vorwort und Umgebung

Piler dient zur langjährigen E-Mail-Archivierung in verschlüsselter Form. Import- und Export-Funktionen bringen das Archiv nachträglich auf einen aktuellen Stand oder sorgen für eine reibungslose Notfallwiederherstellung. Nachrichten werden zudem komprimiert und dedupliziert gespeichert

Ein Webdienst steht neben Administratoren und Auditoren auch Mailserver-Benutzern zur Verfügung (wenn konfiguriert), die bei Bedarf Nachrichten reviewen oder mit einem Klick wiederherstellen.

Das Hauptaugenmerk des Artikels liegt wie üblich auf der Installation und Konfiguration der Dienste bis hin zur Funktionalität. Und nicht weiter. :-)

Wie Piler zu bedienen ist, verrät der Entwickler auf der Website.
Auch eine tabellarische Auflistung der Features befindet sich dort.

Eine Übersicht meiner Konfiguration

  • Installation auf Debian Wheezy amd64
  • Mailserver und Piler-Dienst laufen auf getrennten Servern im selben internen Subnetz
  • MTA auf Basis von Postfix vorhanden

Changelog des Artikels

  • 27.03.2015 – Wichtiger Hinweis zu “iv”-Parameter
  • 26.03.2015 – Ausführlichere Postfix Hinweise

Installation

Etwas aufwändiger als sonst gestaltet sich die Bereitstellung der Abhängigkeiten.
Beachtet, dass die Verwendung alternativer Webserver ebenso möglich ist. Insbesondere sind das Nginx und Lighttpd.
Der Einsatz von MariaDB wird offiziell nicht empfohlen.

apt-get install libtre5 libzip2 gettext sysstat build-essential \
catdoc poppler-utils unrtf tnef memcached libpst4 \
php5-memcache php5-gd php5-curl curl php5-ldap libapache2-mod-php5 php5-mysql mysql-server \
mysql-client openssl apache2 checkinstall libwrap0-dev libtre-dev libssl-dev \
libltdl7 libmysqlclient18 libodbc1 libpq5 mysql-common libmysqlclient-dev ppthtml apache2-utils
Während der Installation der Pakete, wird ein MySQL root-Kennwort gesetzt.

Die Kernkomponente Pilers, Sphinx Search, befindet sich zwar ebenso in den offiziellen Paketquellen Debian Wheezys.
Empfohlen wird dennoch die Verwendung der aktuell stabilen Version, herunterzuladen auf der Website des Projekts.

Zum Zeitpunkt des Artikels und unter Verwendung von Debian Wheezy amd64, lade ich das deb-Paket “sphinxsearch_2.2.8-release-1~wheezy_amd64.deb” herunter und installiere es:

cd ~ ; wget http://sphinxsearch.com/files/sphinxsearch_2.2.8-release-1~wheezy_amd64.deb
dpkg -i sphinxsearch_2.2.8-release-1~wheezy_amd64.deb

Anschließend muss der Sphinx Search Dienst manuell beendet und deaktiviert werden.
Piler baut auf einen eigenen Dienst, um Sphinx Search zu steuern. Dieser Schritt ist daher unumgänglich:

service sphinxsearch stop

Damit das System kein Duplikat des Dienstes “sphinxsearch” erkennt, empfiehlt es sich das Start-Script erst zu deaktivieren und anschließend zu verschieben:

update-rc.d -f sphinxsearch remove
mv /etc/init.d/sphinxsearch /root/
Zur Erklärung: Sowohl “sphinxsearch” als auch der im Verlauf installierte Dienst “rc.searchd” beinhalten die Kopfzeile “Provides: sphinxsearch”.

Die Ausführung von Piler und Komponenten, sollte einem weitesgehend unprivilegierten Benutzer auf dem System überlassen werden.
Piler sieht hierfür per Standard den Benutzer/die Gruppe “piler” vor:

groupadd piler
useradd -g piler -s /bin/bash -d /var/piler piler
usermod -L piler

Im Verzeichnis ~/build lege ich den aktuellen Quell-Code Pilers ab.
Es folgt der gewohnte Drei-Schritt zum Bauen des Paketes. Die Konfiguration habe ich leicht angepasst, das Prefix – wie zu sehen – auf “/usr/local” belassen.

mkdir ~/build ; cd ~/build
wget -O - https://bitbucket.org/jsuto/piler/downloads/piler-1.1.1.tar.gz | tar xfvz -
cd piler-1.1.1/
./configure --prefix=/usr/local --sysconfdir=/etc --localstatedir=/var --with-database=mysql --enable-starttls --enable-tcpwrappers
make
make install

Im Zuge einer Erst-Installation, triggern wir das “postinstall utility”, das abschließende Konfigurationen für uns vornimmt:

make postinstall

Viele der Standardwerte können mit einem Enter übernommen werden.
Der typische Webserver Gruppenname lautet für Debian und Derivate allerdings “www-data”, wie wir wissen.
Auch sollten die MySQL Parameter der Installation entsprechen – logisch.

>> make postinstall
This is the postinstall utility for piler
It should be run only at the first install. DO NOT run on an existing piler installation!

Continue? [Y/N] [N] Y

Please enter the webserver groupname [apache] www-data
Please enter mysql hostname [localhost] localhost
Please enter mysql socket path [/var/run/mysqld/mysqld.sock] /var/run/mysqld/mysqld.sock
Please enter mysql database [piler] piler
Please enter mysql user name [piler] piler
Please enter mysql password for piler [] meingeheimespasswort
Please enter mysql root password [] meinsqlrootpasswort
mysql connection successful
Please enter the path of sphinx.conf [/etc/sphinxsearch/sphinx.conf] /etc/sphinxsearch/sphinx.conf
Please enter smtp relay [] mein.mail.server
Please enter smtp relay port [25] 25
Correct? [Y/N] [N] Y
Continue and modify system? [Y/N] [N] Y

Done post installation tasks.

Bitte sorgt nun dafür, dass kein Dienst Port 25/tcp blockiert:

netstat -tulpen

Eine Standard-Installation Debians wird vermutlich exim4 installiert haben:

apt-get remove exim4-*
Es ist dennoch möglich, einen MTA auf dem Piler-System zu installieren.
Der SMTPd des MTA sollte in diesem Fall jedoch auf einen anderen Port hören, etwa 10025/tcp.
Im “postinstall utility” würde die Bitte nach dem SMTP-Relay mit “127.0.0.1” und Port “10025” beantwortet.

Die Dienste können anschließend gestartet werden:

service rc.piler start
service rc.searchd start
Mit einer erfolgreichen Installation, wird Piler einen Schlüssel “/etc/piler.key” anlegen, welcher unbedingt zu sichern ist!
Wird dieser Schlüssel gelöscht oder überschrieben, ist das Archiv nicht mehr zugänglich!

Gleiches gilt für einen iv-Parameter in “/etc/piler.conf”, welcher automatisch generiert wird und nicht mehr verändert werden darf!

Konfiguration

Apache2

Für die Webserver Apache2 und Nginx bringt Piler entsprechende Site-Konfigurationen mit.
Ich bediene mich sinngemäß der Apache2 Konfiguration:

cp ~/build/piler-1.1.1/contrib/webserver/piler-apache-2.x.conf /etc/apache2/sites-available/
a2ensite piler-apache-2.x.conf

Im Detail muss diese noch angepasst werden:

nano /etc/apache2/sites-available/piler-apache-2.x.conf

Wichtig: Ändert “DocumentRoot” sowie den “Directory”-Abschnitt in “/var/www/piler” um.

Ich benötige zudem kein seperates Logfile. Daher fällt meine Konfiguration insgesamt bescheiden aus:

<VirtualHost *:80>
    ServerName piler.domain.tld
    DocumentRoot "/var/www/piler"
    <Directory /var/www/piler>
       Order allow,deny
       Allow from all
       AllowOverride all
    </Directory>
</VirtualHost>

Bitte jedes Auftreten der Beispiel-Domäne durch die eigene ersetzen!
Insbesondere der “ServerName”-Parameter darf nicht übersehen werden.

Zuletzt benötigt Piler ein aktives Apache2 Rewrite-Modul:

a2enmod rewrite

Durch den Neustart des Dienstes, werden alle ausstehenden Änderungen übernommen.

service apache2 restart

Webdienst

Die Konfiguration bedient sich zweier Dateien:

– eine globale Datei /var/www/piler/config.php
– eine individuelle/überschreibende Datei /var/www/piler/config-site.php

Vielen dürfte das Konzept von anderen Anwendungen bekannt sein…
Anpassungen erfolgen lediglich in der Konfigurationsdatei “config-site.php”.
Einstellungen, die hier vorgenommen werden, überschreiben die globale Konfiguration.

Einige Grundelemente wird das “postinstall utility” bereits konfiguriert haben:

nano /var/www/piler/config-site.php

Beispiel:

<?php
$config['SITE_NAME'] = 'piler.domain.tld';
$config['SITE_URL'] = 'http://' . $config['SITE_NAME'] . '/';
$config['DIR_BASE'] = '/var/www/piler/';
$config['ENABLE_SYSLOG'] = 1;
$config['SMTP_DOMAIN'] = 'piler.domain.tld';
$config['SMTP_FROMADDR'] = 'no-reply@piler.domain.tld';
$config['ADMIN_EMAIL'] = 'admin@piler.domain.tld';
$config['DB_DRIVER'] = 'mysql';
$config['DB_PREFIX'] = '';
$config['DB_HOSTNAME'] = 'localhost';
$config['DB_USERNAME'] = 'piler';
$config['DB_PASSWORD'] = 'meingeheimespasswort';
$config['DB_DATABASE'] = 'piler';
$config['SMARTHOST'] = 'mein.mail.server';
$config['SMARTHOST_PORT'] = 25;

# ============
# Hinzugefuegt
# ============
$config['PILER_HOST'] = '0.0.0.0';
$config['DEFAULT_LANG'] = 'de';
?>

Im obigen Beispiel wurde zuerst der wichtige Parameter $config['PILER_HOST'] ergänzt.
Der Wert “0.0.0.0” ist an dieser Stelle stellvertretend für alle verfügbaren Adressen zu verstehen.
Das ist in Ordnung, da Web- und Piler-Dienst sich einen Server teilen.

$config['DEFAULT_LANG'] belasse ich unkommentiert… :-)

$config['SITE_NAME'] wird per Standard dem lokalen Hostnamen entsprechen (Beispiel: “archive.domain.local”).
Soll Piler extern erreichbar sein, muss hier unbedingt ein extern auflösbarer Name stehen (ausgenommen sind Installationen hinter einem Reverse Proxy).

Die $config['SMTP_DOMAIN'] darf NICHT bereits vom eigenen Mailserver in Verwendung sein (Falsches Beispiel: “domain.tld”).
Ich entscheide mich für “piler.domain.tld”.


Authentifizierung von Benutzern

Am sinnvollsten ist es, denjenigen Benutzern Zugang zum Archiv zu erteilen, die schon über ein IMAP-Konto in der Domäne verfügen.
Dazu eigenet sich ein LDAP-Verzeichnisdienst ebenso gut wie die Prüfung des Logins gegen einen IMAP-Server.

In jedem Fall wird wieder die Konfiguration des Webdienstes geöffnet:

nano /var/www/piler/config-site.php

- 1. Beispiel: LDAP, Active Directory

$config['ENABLE_LDAP_AUTH'] = 1;
$config['LDAP_HOST'] = 'ad.domain.local';
$config['LDAP_HELPER_DN'] = 'CN=Read-Only LDAP,OU=ServiceAccounts,DC=domain,DC=local';
$config['LDAP_HELPER_PASSWORD'] = 'readonlypassword';
$config['LDAP_MAIL_ATTR'] = 'mail';
$config['LDAP_BASE_DN'] = 'DC=domain,DC=local';

Viele Details zur Konfiguration findet ihr hier: http://www.mailpiler.org/en/ldap-authentication.html
Besonders erwähnenswert ist sicherlich “LDAP_AUDITOR_MEMBER_DN”, um Administratoren zu definieren.

- 2. Beispiel: IMAPS

$config['ENABLE_IMAP_AUTH'] = 1;
$config['IMAP_HOST'] = 'imap.domain.tld';
$config['IMAP_PORT'] =  993;
$config['IMAP_SSL'] = true;

Die Änderungen werden sofort wirksam.

Piler-Dienst

Der Dienst, welcher letztendlich die zu archivierenden Nachrichten entgegennimmt, bedient sich der Konfiguratinsdatei “/etc/piler.conf”:

Das “postinstallation utility” hat hier bereits ganze Arbeit geleistet, lässt dennoch nicht nur Platz für Feinabstimmungen…

WICHTIG ist die Anpassung des Parameters hostid, welcher dem Host der Archive-Mailadresse entsprechen sollte, das bedeutet:

nano /etc/piler.conf
[...]
# Archive-Mailadresse: archive@piler.domain.tld
hostid=piler.domain.tld

Ein Hinweis dazu: Stimmt “hostid” nicht mit dem Host-Teil aus der Mailadresse überein, erkennt Piler den Archiv-Adressaten als gewöhnlichen Empfänger. (Weiteres hierzu: https://www.mail-archive.com/piler-user@list.acts.hu/msg00643.html)

Ein Blick auf die übrigen Parameter offenbart (größtenteils) Selbsterklärendes. Ansonsten verweise ich auf die Dokumentation sowie die Mailing List.

Besonders Interessant ist womöglich der Ausschluss von als Spam markierten Nachrichten: spam_header_line=X-Spam-Flag: YES

Im Gegensatz zum Webdienst, erfordern obige Änderungen einen Neustart des Dienstes:

service rc.piler restart

Zugriff begrenzen

Piler wird auf Port 25 als eine Art SMTPd auf Mails warten, versteht sich aber nicht als echter MTA. Es besteht keine Sorge, ein offenes Mail-Relay im Netzwerk zu haben.
Aber Vorsicht: Lediglich der eigene Mailserver sollte in der Lage sein, Nachrichten an Piler zu übermitteln!
Da die Piler Installation mit dem Parameter “–enable-tcpwrappers” konfiguriert wurde, können wir den Zugriff bequem über die Datei “/etc/hosts.allow” regeln:

nano /etc/hosts.allow

Inhalt:

piler: IP.DES.MAIL.SERVERS: ALLOW
piler: 127.0.0.1: ALLOW
piler: ALL: DENY

Die Adresse “127.0.0.1” wird für den Piler-eigenen Health-Check ebenfalls zugelassen.
Alternativ/(Zusätzlich) lässt sich der Zugriff via “iptables” einschränken.

Konfiguration des Mailservers

Die Archivierung funktioniert, indem der MTA angewiesen wird, jede durchlaufende Nachricht als Blindkopie an Piler zu versenden.

Postfix bewerkstelligt das mit dem Parameter “always_bcc“.

Vielleicht ist dem ein oder anderen beim Durchstöbern der Piler-Konfiguration zudem folgender Parameter aufgefallen:

extra_to_field=X-Envelope-To:

Ein X-Header soll dafür sorgen, dass ALLE Adressaten von Piler erfasst werden können. Hier ein Beispiel:

Ich versende eine Mail an Max und setze Tom auf BCC. Eine weitere Blindkopie erhält der Piler-Dienst.
Piler sieht Tom (Empfänger), mich (Absender) und sich selbst (BCC). Jeder weitere BCC-Addressat bleibt verborgen.

Das “Problem” wird umgangen, indem ein “X-Envelope-To” X-Header vom MTA im Nachrichtenkopf gesetzt wird, der ALLE Empfänger beinhaltet.
Auch wenn der X-Header nicht sofort ersichtlich ist, ist er vorhanden. Er kann von allen weiteren Empfängern ausgelesen werden.
Das kann unter Umständen ein Bruch der Richtlinie bedeuten und sollte vorher gut durchdacht werden…


Beispiel-Konfiguration (ohne “X-Envelope-To”)

/etc/postfix/main.cf

# In allen drei Parametern darf "piler.domain.tld" NICHT auftauchen!
# Das verhindert externe Zustellung an das Archiv.
mydestination = domain.tld
virtual_mailbox_domains = domain.tld
relay_domains = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 IP.MAIL.PILER.SERVER
always_bcc = archive@piler.domain.tld
transport_maps = hash:/etc/postfix/transport
smtpd_recipient_restrictions = permit_mynetworks,
  ...
  ...

/etc/postfix/transport

piler.domain.tld   smtp:[IP.MAIL.PILER.SERVER]:25

Erweiterung um “X-Envelope-To”

Wer nicht die Hände vom “X-Envelope-To” X-Header lassen möchte, kann sich eines Workarounds bedienen.
In diesem Fall wird immer besagter X-Header angehangen, jedoch wieder entfernt, wenn der Transport/nächste Hop “smtp” oder “lmtp” lautet.

/etc/postfix/main.cf

smtpd_recipient_restrictions = ...,
  check_recipient_access pcre:/etc/postfix/x-add-envelope-to,
  ...
transport_maps = hash:/etc/postfix/transport

/etc/postfix/x-add-envelope-to

/(.*)/   prepend X-Envelope-To: $1

Nachrichten an Piler werden via “smtp_keep_envelope_to” versendet:
/etc/postfix/transport

piler.domain.tld   smtp_keep_envelope_to:[IP.MAIL.PILER.SERVER]:25

“smtp” sowie “lmtp” entfernen den X-Header wieder. Alle anderen Transporte nicht:

/etc/postfix/master.cf

smtp_keep_envelope_to      unix  -       -       -       -       -   smtp
smtp      unix  -       -       -       -       -       smtp
  -o smtp_header_checks=pcre:/etc/postfix/x-remove-envelope-to
lmtp      unix  -       -       -       -       -       lmtp
  -o lmtp_header_checks=pcre:/etc/postfix/x-remove-envelope-to 

Google auch in der Türkei nicht länger Standard-Suchmaschine in Firefox

Permalink Sören Hentzschel

Google verliert in einem weiteren Land seine Position als Standard-Suchmaschine in Firefox: Ab dem 31. März übernimmt für Nutzer in der Türkei Yandex diese Position sowohl in der Desktop- als auch in der Android-Version von Firefox.

Den Ende 2014 ausgelaufenen Vertrag mit Google als globale Standard-Suchmaschine in Firefox (Ausnahme: Baidu in China) hat Mozilla nicht verlängert. Stattdessen hat man Yahoo! zur neuen Standard-Suchmaschine in den USA und Yandex zur Standard-Suchmaschine in Russland, Weißrussland sowie Kasachstan gemacht. In den USA hat dies zu einer sichtbaren Verschiebung des Suchmaschinen-Marktanteils geführt, wenn auch Google weiterhin den Markt mit großem Abstand dominiert. Mozilla hat sich damit vom Modell eines globalen Suchmaschinen-Partners getrennt und die Flexibilität gewonnen, für jedes Land individuelle Verträge aushandeln zu können. Und genau dies ist jetzt auch für die Türkei geschehen: Dort übernimmt ab Firefox 37, welcher am 31. März erscheint, Yandex die Position als Standard-Suchmaschine sowohl in der Desktop- als auch in der Android-Version des Mozilla-Browsers.

25. März 2015

HDMI zu AV Konverter

Permalink Intux

Bei meinem Ambi-Projekt für den Raspberry Pi musste ich leider die Erfahrung machen, dass der von mir bestellte HDMI Konverter nicht 100%-ig für das was ich vorhatte geeignet war. Äußerlich gleichen sich alle in Frage kommenden Konverter zwar, doch liegen die Unterschiede im Inneren. Es sind zum Teil unterschiedliche Platinen mit diversen Chip-Anordnungen verbaut.

Hier der erwähnte Konverter, in zwei verschiedenen Ausführungen (weißes Gehäuse), der nicht optimal zum Projekt passt.

news-476

 

news-479

Das heißt jedoch nicht, dass dieser ungeeignet wäre, sondern nur nicht mit einem vorgeschaltetem HDMI-Splitter funktioniert. Ansonsten wandelt das Gerät trotzdem (ohne Splitter) das HDMI-Signal in ein AV-Signal um. Nutzt man z.B. als Quelle einen Blue-ray-Player und schließt diesen via Component an den TV und den HDMI an den Konverter, so wird dieser auch wie gewünscht arbeiten.

Hier nun der Konverter (schwarzes Gehäuse), welcher problemlos mit einem vorgeschaltetem Splitter funktioniert.

news-477

Wobei man aber nicht eindeutig von der Gehäusefarbe auf die verbaute Platine schließen kann. D.h. in einem weißen Gehäuse kann sich trotzdem ein fehlerfrei arbeitender Konverter befinden!

news-478

Hier eine Liste der von mir verwendeten Komponenten.

Empfehlung: CD-Ripper morituri

Permalink blog.mdosch.de - Dies & Das

Um CDs möglichst fehlerfrei zu rippen wird immer das Programm Exact Audio Copy (EAC) empfohlen, welches leider nur für Windows verfügbar ist. Bisher habe ich unter Linux Rubyripper verwendet und war sehr zufrieden. Rubyripper funktioniert zwar noch, wird aber nicht mehr weiterentwickelt. Um nicht irgendwann ohne ordentlichen CD-Ripper auskommen zu müssen habe ich mich nach Alternativen umgesehen und bin auf morituri gestoßen.
Morituri hat in den letzten Monaten bei mir sehr gute Arbeit geleistet, weshalb ich das Programm allen ans Herz legen möchte, die Wert auf einen fehlerfreien Rip legen. Installieren kann man morituri unter Debian aus den offiziellen Quellen.

Da ich nicht täglich CDs umwandle und mir die Syntax zum Ändern der Standardpfade nicht merken möchte habe einen alias für folgenden Befehl angelegt:

rip cd rip --offset=6 --output-directory="/home/martin/Musik/" --track-template="%A/%y - %d/%t - %n" --disc-template="%A/%y - %d/%y - %d" --working-directory="/tmp/"
[Update 2015-03-28]

Dabei bedeutet rip cd rip, dass ich die CD rippen und das Datei- und Ordnerschema über Templates festlegen möchte. Aus der manpage:

rip cd rip

rip CD

Usage: rip cd rip

Rips a CD.

Tracks are named according to the track template, filling in the variables and adding the file extension.

Mit --offset=6 gebe ich den Offset meines CD-Laufwerks an. Diesen habe ich zuvor per rip offset find von morituri herausfinden lassen.

--output-directory="/home/martin/Musik/" legt fest in welchem Ordner ich meine Musikdaten anlegen möchte.

Durch --track-template="%A/%y - %d/%t - %n" bestimme ich die Namenskonvention meiner Musikdateien und mittels --disc-template="%A/%y - %d/%y - %d" die des Cuesheets, der Playlist und der Logdatei.

Die einzelnen Parameter kann man wieder der manpage entnehmen:

Tracks are named according to the track template, filling in the variables and adding the file extension. Variables exclusive to the track template are:

  • %t: track number
  • %a: track artist
  • %n: track title
  • %s: track sort name

Disc files (.cue, .log, .m3u) are named according to the disc template, filling in the variables and adding the file extension. Variables for both disc and track template are:

  • %A: album artist
  • %S: album sort name
  • %d: disc title
  • %y: release year
  • %r: release type, lowercase
  • %R: Release type, normal case
  • %x: audio extension, lowercase
  • %X: audio extension, uppercase

Mit --working-directory="/tmp/" gebe ich lediglich an, dass die temporären Dateien in /tmp/ gespeichert werden sollen. Da ich /tmp/ im RAM liegen habe, erspare ich mir hierdurch unnötige Festplattenzugriffe.

Hier ein Beispiel für die Ordner- und Dateistruktur, die ich mit diesem alias erhalte:

ls ~/Musik/Metallica/1988\ -\ and\ Justice\ for\ All   
01 - Blackened.flac               05 - The Shortest Straw.flac         09 - Dyers Eve.flac            
02 - ...and Justice for All.flac  06 - Harvester of Sorrow.flac        1988 - and Justice for All.cue
03 - Eye of the Beholder.flac     07 - The Frayed Ends of Sanity.flac  1988 - and Justice for All.log
04 - One.flac                     08 - To Live Is to Die.flac          1988 - and Justice for All.m3u

24. März 2015

Admin meets Frontend

Permalink SUCKUP.de: IT-Blog

… oder was „JavaScript“ und „Shell-Script“ gemeinsam haben.

Zu beginn muss ich zugeben, dass ich bei meinen ersten Skripten auch nicht auf den Sichtbarkeitsbereich von Variablen (Scope) geachtet habe. Wenn man sich jedoch etwas mit Softwareentwicklung auseinandersetze stellt man schnell fest, dass globale Variablen direkt aus der Hölle kommen und nichts im Quelltext zu suchen haben.

Range_of_Variables

Variablen sind zumindest in der Shell und in JavaScript zunächst global, selbst innerhalb von Funktionen und werden erst durch den Zusatz „var“ bzw. „local“ zur lokalen Variable. In vielen anderen Programmiersprachen erkennt man den Scope einer Variable direkt im Zusammenhang, ist z.B. eine Variable innerhalb einer Methode deklariert, so ist diese nur innerhalb dieser Methode verfügbar. Wird die Variable jedoch innerhalb der Klasse deklariert, so ist diese für die ganze Klasse und somit für alle Ihre Methoden verfügbar.

Es folgen ein paar Beispiele, wo der Inhalt (Title der Beiträge) des RSS-Feeds von “planet.ubuntuusers.de” ausgegeben werden soll.

JS-Beispiel: mit globalen Variablen

test-1

Um dies selber zu testen, öffne die Verlinkte Datei im Browser (leere Webseite) und öffne die Entwicklertools (F12), schalte die Ansicht auf “Konsole” und lade die Seite neu. Im Quelltext sind ausschließlich globale Variablen verwendet, jedoch funktioniert dieses Script “leider” wie gewünscht. Das Problem mit globalen Variablen ist, dass man den Quelltext dadurch ggf. schwerer lesen kann und diesen nicht wiederverwenden kann. Wenn man z.B. verschiedene Funkionen als unterschiedlichen Skripten zusammenfügt oder zusammen nutzen möchte, welche jedoch ebenfalls globale Variablen nutzen, dann können da sehr eigenartige Ergebnisse bei herauskommen.

JS-Beispiel: mit lokalen Variablen

test-1_1

test-1_1_2

 

In den DevTools von Chrome kann man jetzt den entsprechenden Variablen-Scope sehen. Jedoch ist der Quellcode noch nicht wirklich wiederverwendbar, da wir das zu lösende Problem (also das laden und parsen einer JSON-Datei) nicht auf eine eigene Abstraktionsschicht gebracht haben.

JS-Beispiel: mit lokalen Variablen und Klassen

test-1_2

In diesem Beispiel wurde nun die Klasse “PlanetUbuntuuserJsonData” erstellt welche wiederum von der Klasse “JsonData” dessen Eigenschaften (Variablen & Methoden) erbt. Leider ist der Quelltext hierbei von zirka 50 auf zirka 80 Zeilen erhört worden und funktioniert dabei z.B. nicht im IE < 10. (siehe Kommentare im Quelltext)

JS-Beispiel: ohne Variablen + jQuery

test-2

Dieses Beispiel benötigt zwar die “jQuery”-Bibliothek, welche jedoch bereits entsprechende Funktionalitäten kapselt. Vergleich man diesen Quellcode mit der Vorherigem Version, kann man schnell erkennen, das entschieden weniger Quellcode deutlich besser zu lesen ist. ;-)

Shell-Beispiel: mit globalen Variablen (test_1.sh)

test-bash

In diesem Beispiel sind wieder sehr viele globale Variablen verwendet und wieder funktioniert das entsprechende Skript “leider” trotzdem. Die Funktion “parse_json()” gibt nicht einmal einen Rückgabewert zurück, dafür teilen sich die beiden Funktionen die Variablen. Und im Grunde könnte man den ganzen Quelltext auch einfach ohne Funktionen untereinander schreiben, dies hätte den selben Effekt.

Shell-Beispiel: mit lokalen Variablen (test_2.sh)

Die entsprechende Ausgabe ist bereits im Vorherigen Bild zu sehen. Bei Shell-Skripten kommt es seltener vor, dass man dessen Funktionalität wirklich wiederverwenden möchte, jedoch ist der Quelltext deutlich besser zu lesen, wenn man entsprechende Rückgabewerte und Übergabeparameter verwendet.

Quellen / Links:
– Shell: Advanced Bash-Scripting Guide
– Shell: Coding-Style-Guide von “Oh My Zsh”
– JS: Sichtbarkeitsbereich (Scope) von Variablen
– JS: Objektattribut

 

23. März 2015

“Sicherer” surfen mit Qupzilla

Permalink (Mer)Curius

Mozilla Firefox ist bei den meisten Linux-Distributionen noch immer als Standardbrowser gesetzt und hat in Deutschland allgemein noch einen sehr guten Ruf, wenngleich weltweit die Marktanteile zurückgehen. Mozilla als Organisation ist für ein freies Web unglaublich wichtig, keine größere Instanz setzt sich derart für freie Standards und ein offenes Web ein. Daran ändert auch die relative Abhängigkeit von Einnahmen durch die voreingestellten Suchanbieter nichts.

Firefox als Browser ist aber qualitativ allenfalls noch mittelmäßig. Das hat nichts mit Australis zu tun, eine Entwicklungsrichtung, die ich persönlich eher positiv bewerten würde. Firefox ist aber fehleranfällig, langsam und überladen. Er entwickelt sich nicht nur unter Linux zu einem Betriebssystem im Betriebssystem. Webapps, Addons, eine eigene Oberfläche als Markenzeichen. Der Nutzer soll den Browser nutzen, nicht das zugrunde liegende Betriebssystem. Viele Nutzer mögen dies ansprechend finden, der Erfolg von Google Chrome lässt sich möglicherweise durch eine ähnliche Entwicklungsrichtung erklären. Für Mozilla ist es deshalb vermutlich konsequent den Browser in diese Richtung auszubauen.

Nutzer, die mit dem Browser aber nur ihre Webseiten öffnen möchten und RSS-Feeds, Mails und Kalender weiterhin mit darauf spezialisierten Programmen verwalten, geht diese Entwicklung in die falsche Richtung. Zum Glück gibt es Alternativen und durch die Erhebung von WebKit zum freien quasi-standard stehen diese Alternativen den Marktführern kaum nach. Ein brauchbarer Qt-basierter Browser ist das “nächste heiße Ding” seitdem ich Linux verwende. Viele Projekte haben sich daran versucht, die meisten sind gescheitert oder siechen vor sich hin. Der neue Stern am Qt-Browser-Himmel ist Qupzilla. Ein Browser, der bei den meisten Linux-Distributionen in den Paketquellen zur Verfügung steht.

Nutzer von Ubuntu und seinen Derivaten müssen aufpassen: Qupzilla ist lediglich durch den Debian Sync-Prozess in den Paketquellen und wird nicht supportet. Das Programm ist deshalb unter Umständen nicht sicher!

Die meisten Browser sind in den Standardeinstellungen leider ziemlich unsicher und posaunen viel über ihre Nutzer heraus. Für Firefox wurden hier mal eine Reihe von nützlichen Addons aufzeigt. Erstaunlicherweise kann Qupzilla viel davon von Haus aus. Allerdings muss an einigen kleinen Einstellungen gedreht werden:

Cookies abschalten

Qupzilla_Cookieeinstellungen

Einstellungen | Privatsphäre | Cookie-Manager

Cookies sind durchaus sinnvolle Werkzeuge und wir benötigen sie um auf vielen Webseiten nicht jedes mal neu einloggen müssen. Leider wurden sie durch ihre nicht so nützlichen Eigenschaften regelrecht pervertiert. Cookies sind heute vor allem ein Mittel von Werbetreibenden und an Werbung interessierten Firmen um die Benutzer auf ihrem Weg im Netz zu verfolgen. Im Grunde genommen sind sie eine Technologie die derart in Verruf gekommen ist, dass sie nur noch ersetzt werden kann. Wie bei vielen “altbewährten” Sachen wird dies jedoch kaum geschehen. Der Nutzer kann sich nur wehren indem er die Speicherung von Cookies deaktiviert. Da einige Webseiten jedoch penetrant die Speicherung von Cookies einfordern kann es sinnvoller sein Cookies beim Beenden des Browser zu löschen, anstatt ihre Speicherung komplett zu deaktivieren. Das setzt natürlich voraus, dass der Nutzer seine Sitzung ab und an (zumindest täglich) beendet.

Das bedeutet natürlich leider, dass wir bei jeder Sitzung neu auf den Internetseiten unserer Wahl anmelden müssen. Da sich Qupzilla in KWallet und Gnome-Keyring integriert, lassen sich Nutzernamen und Passwörter jedoch leicht und sicher speichern, weshalb das kein größeres Problem darstellen dürfte. Sicherheit geht halt manchmal ein wenig zulasten des Komforts.

Do-Not-Track und Referrer abschalten

Einstellungen | Privatsphäre

Einstellungen | Privatsphäre

Do-Not-Track war eine nützliche Erfindung, die leider keinen durchschlagenden Erfolg hatte, vor allem weil sie auf freiwillige Implementierung angewiesen ist. Einige Seiten und Statistiktools wie Piwik berücksichtigten dies aber sehr wohl, weshalb eine Aktivierung nicht schädlich sein dürfte. Der Referrer, also die Übermittlung der zuvor besuchten Seite(n) sollte ebenfalls deaktiviert werden.

Werbung aussperren

Werbung ist heute oft gleichbedeutend mit Überwachung. Die Aussperrung von Werbung eine sicherheitstechnische Notwendigkeit. Nicht umsonst hat es dieser Punkt in das hevorragende Sicherheits 1×1 von ubuntuusers geschafft.

Eine Adblock-Funktion ist in Qupzilla bereits von Haus implementiert und aktiviert. Eigentlich erstaunlich, dass eine eierlegende Wollmilchsau wie Firefox, das immer noch nicht bietet. Unter Extras | Adblock lassen sich die Filterregeln im Optionen Dropdown-Menü verwalten.

Häufig benötigte MySQL-Befehle

Permalink My-IT-Brain

In diesem Artikel dokumentiere ich die von mir am häufigsten verwendeten und am schnellsten vergessenen MySQL-Befehle. So muss ich sie nicht jedes Mal in der offiziellen Dokumentation nachschlagen.1

Der Vollständigkeit halber beginne ich mit dem Befehl, mit dem man sich mit einem MySQL-Server verbindet, welcher auf dem localhost läuft.

$ mysql -u BENUTZERNAME -p
Password: 

Eine neue Datenbank kann mit dem folgenden Befehl erstellt werden2:

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

Beispiel:

CREATE DATABASE db_name;

Einen MySQL-Benutzeraccount erstellt man mit dem Befehl3:

CREATE USER user_specification [, user_specification] ...

user_specification:
    user [ identified_option ]

auth_option: {
    IDENTIFIED BY 'auth_string'
  | IDENTIFIED BY PASSWORD 'hash_string'
  | IDENTIFIED WITH auth_plugin
  | IDENTIFIED WITH auth_plugin AS 'hash_string'
}

Beispiel:

CREATE USER 'pusemuckel'@'localhost' IDENTIFIED BY 'password';

Mit dem folgenden Kommando werden dem erstellten Benutzer Zugriffsrechte auf die erstellte Datenbank gewährt.4 Mit diesen Berechtigungen kann der Benutzer neue Tabellen in der Datenbank erstellen, Daten in Tabellen einfügen oder auch die gesamte Datenbank löschen.

GRANT ALL PRIVILEGES ON db_name.* TO 'pusemuckel'@'localhost';

Die letzten beiden Schritte können auch verkürzt mit folgendem Kommando ausgeführt werden:

GRANT ALL ON db_name.* TO 'pusemuckel'@'localhost' IDENTIFIED BY 'password';

Hat man neue Benutzer angelegt, oder die Berechtigungen bestehendender Benutzer geändert, werden die neuen Berechtigungen mit dem folgenden Kommando geladen:

FLUSH PRIVILEGES;

So, nun muss ich mich zukünftig nur noch daran erinnern, hier nachzuschauen, wenn mir mal wieder die Syntax entfallen ist. ;-)

  1. MySQL Documentation
  2. CREATE DATABASE Syntax
  3. CREATE USER Syntax
  4. GRANT Syntax

22. März 2015

Debian Jessie-Installation mit LUKS verschlüsseln

Permalink (Mer)Curius

Die meisten Linux-Distributionen haben eine Systemverschlüsselung zwar optional in ihre Installationsroutinen integriert, nutzen diese aber von Haus aus nicht. Das ist eigentlich vollkommen unverständlich, da die meisten Systeme heute leistungsfähig genug für eine Vollverschlüsselung sind – selbst Smartphones besitzen dafür zwischenzeitlich genug Leistung. Es beweist aber einmal mehr, dass Linux nicht per se das bessere Betriebssystem für datenschutzbewusste Benutzer ist, sondern lediglich eine gute Grundlage bietet. Natürlich erleichtern nicht verschlüsselte Systeme die Datenrettung für den Benutzer, aber eine nicht vorhandene Backup-Strategie durch viele Anwender kann eigentlich keine Begründung für eine unsichere Vorkonfiguration sein. In jedem Fall sollten Notebooks und andere mobile Geräte (kürzlich sah ich jemanden in einem ICE der Deutschen Bahn mit einem vollständigen All-in-One-PC sitzen. Mobilgerät ist also relativ) durch den Anwender verschlüsselt werden. Am einfachsten ist es die Verschlüsselung direkt bei der Installation einzurichten.

Eine Verschlüsselung ist unter Linux im Wesentlichen mittels zweier gleichwertiger Optionen zu realisieren: eCryptfs oder LUKS. Truecrypt sollte nach der offiziellen Einstellung durch die Entwickler und der unklaren Fork-Situation nur in begründeten Ausnahmefällen verwendet werden. Für Mehrbenutzersysteme eignet sich am ehesten die Verschlüsselung der Homeverzeichnisse mittels eCryptfs. Wie dies nachträglich eingerichtet werden kann wurde hier bereits einmal beschrieben.

Sofern lediglich ein Benutzer das System nutzt ist allerdings LUKS die bessere Wahl. Mit eCryptfs werden immer nur Teile verschlüsselt (z.B. das Homeverzeichnis) und unverschlüsselte Bereiche eines Betriebssystems sind immer ein möglicher Angriffspunkt. Unter K/Ubuntu 14.04 LTS funktioniert z.B. die Verschlüsselung der Swap Partition nicht, weshalb es unter Umständen möglich ist Daten aus dem Auslagerungsspeicher auszulesen. Bei einer Vollverschlüsselung via LUKS ist das kein Problem. Zudem scheint LUKS bei Dateioperationen, die viele kleine Dateien betreffen, die performantere Verschlüsselungsmethode zu sein. Subjektiver Eindruck, kein Bechmark!

Debian bei der Installation mit LUKS verschlüsseln

Debian bietet bei der Installation die Möglichkeiten zur geführten Partitionierung mit vollständiger Verschlüsselung an. Wie so oft bei Debian sollte man auch in diesem Fall den Debian-Entwicklern keine Sekunde vertrauen. Die automatisch vorgenommenen Einstellungen sind nämlich bestenfalls durch frühere Festplattengrößen erklärbar und eigentlich nur noch Murks. Sie können im schlimmsten Fall eine Installation ziemlich schnell lahmlegen. Die /boot Partition ist mit lediglich ~240MB äußerst knapp bemessen, da muss nur ein Backport-Kernel, ein normaler Kernel und evtl. noch ein, zwei alte Kernelversionen kommen und die Partition ist voll. Sie wird zudem auch im Jahr 2015 noch mit ext2 angelegt, obwohl Grub2 neuere Dateisystem schon seit ein “paar” Jahren unterstützt. Die Root-Partition ist mit lediglich 10 GB ebenfalls sehr klein. Eine nicht besonders umfangreiche Debian-Installation mit KDE, LibreOffice etc. pp. kommt bereits auf 7-8 GB. Bei heutigen Festplattengrößen ist das vollkommen fehlgeleitete Sparsamkeit. Zumal die Swap-Partition bei einem System mit 4 GB Arbeitsspeicher in der Standardkonfiguration mit 7 GB angelegt wird. Vollkommen schleierhaft wozu man das bei einem Desktopssystem brauchen sollte. Wie so oft stellt sich hier die Frage, wann ein Debian Maintainer das letzte Mal eine normale Installation durchgeführt hat.

Während der Installation sollte man deshalb die manuelle Partitionierung auswählen. Der Partitionierungsvorgang ist bei den meisten Distributionen der komplizierteste Punkt einer Installation und Debian macht es seinen Benutzern auch nicht besonders leicht. Allerdings ändert Debian seine Routinen auch nicht bei jedem Release, weshalb einmal erworbenes Wissen eine enorm lange Haltbarkeit hat. Was die interessante Frage aufwirft welche Reaktion eine Änderung in der Community hervorrufen würde. Meine Prognose: systemd war ein Klacks dagegen. Aber das führt nun ab vom Thema.

Als erstes legt man eine boot-Partition mit ca. 500 MB an. Ein passendes Dateisystem ist ext4, wobei man auch die Debian-Standardwahl ext2 nehmen kann. Bei der /boot-Partition ist das von zweitrangiger Bedeutung.

Danach wählt man “Verschlüsselte Datenträger konfigurieren”. Dadurch wird eine LUKS (dm-crypt) Verschlüsselung angelegt.

Debian LUKS einrichten

Hier wählt man den freien Speicher aus. Die Verschlüsselungs-Voreinstellungen sollte man so belassen, es sei denn man weiß was man tut. Der Installer überschreibt den gewählten Bereich anschließend. Das kann je nach Größe des Bereichs sehr lange dauern. Sofern vorher keine (sensiblen) Daten auf der Festplatte gespeichert waren, kann man diesen Schritt auch durch “abbrechen” überspringen. Das nun zu vergebende Passwort sollte selbstverständlich möglichst komplex sein und nicht die bomben-sichere Zahlenkombination, die mit 1 anfängt und 5 aufhört.

Als Nächstes wählt man “Logical Volume Manager konfigurieren”. Hier legt man zuerst eine Volumen-Gruppe im soeben verschlüsselten Bereich an. Der Name ist zweitrangig, es eignet sich z.B. “RECHNERNAME-vg”. In dieser Volumengruppe richtet man über den Menüpunkt “Logisches Volumen erstellen” beliebig viele Partitionen an.

Für ein normales Desktopssystem bieten sich in der Regel eine Systempartition und eine getrennte Homepartition an. Eine Swap-Partition ist je nach Größe des Arbeitsspeichers nicht mehr vonnöten – sofern man kein Suspend-to-disk nutzen möchte. Unerfahrene Benutzer fahren mit ext4 als Dateisystem sicher am besten, da es das Standarddateisystem von Debian ist und zweifelsohne von den Maintainern am besten getestet wird. Persönlich habe ich mich seit meinem Ausflug zu openSUSE 13.2 mit btrfs für / und XFS für /home angefreundet. XFS ist ein RHEL/CentOS 7 ja ebenfalls als neuer Standard verwendet, ist also möglicherweise das nächste 08/15 Dateisystem für Linux.

Anschließend kann man mit einer normalen Installationsroutine fortfahren. Beim Systemstart wird nun immer nach dem LUKS-Kennwort gefragt. Es ist deshalb unter Umständen sinnvoll den Benutzer per Auto-Login in den Desktop booten zu lassen, da sonst eine nochmalige Passwortabfrage erfolgt. Dies lässt sich aber bei allen modernen Displaymanagern in den Einstellungen problemlos einrichten.

Android Auto selbst bauen

Permalink bejonet

Google hat vor ein paar Monaten das Android Auto angekündigt. Die Idee ist, dass das Autoradio mit Android als Betriebssystem läuft und das Handy um gewisse Funktionen erweitert. Die Bedienung soll dabei auf das Wesentliche beschränkt werden und den Fahrer während der Fahrt unterstützen. Jetzt wurde die dazu passende App und Autoradios vorgestellt.

Da die Testradios bisher relativ viel Geld kosten (zwischen 700 und 1400 US-Dollar) habe ich hier eine Auswahl an Apps und Hardware aufgestellt, die mich im Auto unterstützen und mir somit ein Android Auto Marke Eigenbau bieten.

Rechtlich gesehen darf man sein Handy nur sehr eingeschränkt während der Fahrt bedienen. Das ARD-Morgenmagazin hat dazu eine Übersicht erstellt, was erlaubt ist und was nicht.

Hardware

Selbstklebefolie/ Saugnapfhalterung

Vor mittlerweile mehr als einem Jahr wurden bei einem Discounter eine Art Klebefolie für das Auto angeboten (Preis: ca. 5 Euro für 2 Folien). Seitdem klebt eine der Folien in meinem Auto und hält bis heute  mein Smartphone zuverlässig während der Fahrt. Selbst auf holprigen Weg und “steilem Winkel” hält das Smartphone sehr fest. Die Klebewirkung ist sogar so stark, dass ich teilweise meine Akku-Abdeckung damit abgerissen habe. Wenn man das Gerät aber von der Folie “dreht”, hinterlässt die Folie keine Rückstände auf dem Handy und es lässt sich leicht lösen.
Die Klebewirkung hat mit der Zeit allerdings etwas nachgelassen. Abhilfe schafft ein feuchtes Tuch (ohne Spülmittel), mit dem man das Klebepad abwischen kann. Danach ist die Klebekraft wieder enorm gestiegen! Für mich ist die Folie nicht mehr wegzudenken.

Als Alternative kann man sich auch Saugnapf-Halter für die Windschutzscheibe besorgen. Diese sind mittlerweile auch erschwinglich und geben dem Smartphone ebenfalls den notwendigen Halt.

Klebefolie als Halterung

Klebefolie als Halterung

USB/ 3,5-Klinke Adapter für Autoradio

Die integrierten Lautsprecher meines Smartphones sind eigentlich ganz in Ordnung, aber bei mehr als 50 km/h versteht man die Sprachansagen des Navis leider nicht mehr. Musik abspielen macht damit auch keinen Sinn. Daher habe ich mir einen Adapter gegönnt, der mein Autoradio um einen SD-Karten-Slot, USB-Anschluss und einen 3,5-Klinken-Anschluss erweitert. Der Preis ist mit 50 Euro relativ hoch und es gibt auch einige Nachteile. Mit der Übersicht unten könnt ihr selbst entscheiden, ob euch das Geld diese Funktion Wert ist.

+ einfache Installation dank mitgelieferten Werkzeug und einfachem Anschluss am CD-Wechslerport am Autoradio
+ Smartphone-Audio kann über Radio-Lautsprecher gehört werden
+ Zusammen mit mobilem Internet und Spotify-Premium oder Webradio kann man Musik nach eigenem Geschmack hören
- Smartphone lässt sich nicht über das Radio bedienen
– Störgeräusche sind teilweise sehr deutlich zu hören, besonders wenn das Smartphone über den Zigarettenanzünder geladen wird (entsprechender Hinweis ist in der Bedienungsanleitung vorhanden)
– Tiefe Töne werden nicht übertragen (laut Rezensierung bei Amazon ist die Grenze bei ca. 150 Hz)

Headset

Ich habe mir ein Headset für ca. 20 Euro gekauft (Plantronics ML20). Damit kann ich einerseits während der Autofahrt telefonieren, andererseits aber auch das Handy über Sprachbefehle steuern. Laut Bedienungsanleitung sollte das zwar nativ funktionieren, ich musste (in Absprache mit dem Hersteller) die App „VoiceCommand“ installieren. Wenn ich jetzt ca. 1 s auf das Headset drücke, kann ich einen Sprachbefehl absenden, zum Beispiel „navigiere nach Spreeweg 1 Berlin“. Daraufhin öffnet sich Google Maps mit der entsprechenden Navigation.

Folgende Sprachbefehle funktionieren bereits (bitte gerne in den Kommentaren ergänzen!)

  • „Navigiere nach Spreeweg 1 Berlin“
  • „Rufe Max Mustermann an“
    • Falls Max mehrere Nummern hat:
      „Rufe Max Mustermann mobil an“
  • „Termin Dienstag 15 Uhr Wohnungsbesichtigung“
  • „Erinnern an: Kartoffeln kaufen“
  • „Was ist eine Orangerie?“

Software

Android Auto

Die App ist seit 19.3.2015 verfügbar, für Android-Geräte ab Version 5.0. Leider kann ich sie nicht testen, da ich eine ältere Version habe. Eure Erfahrungen würde mich aber interessieren. Wie es sich für mich zur Zeit anhört, ist die App eine Mischung aus den folgenden Apps:

Google Maps

Zu der App muss ich vermutlich nicht viel sagen. Es gibt dort die Routenführung, immer besser werdende Verkehrsinformationen (die sind teilweise deutlich schneller und präziser als die Sprachansagen im Radio!) Außerdem werden ständig Alternativrouten angeboten mit dem dazugehörigen Zeitverlust.
Ich möchte nur nochmal auf die Sprachsteuerung hinweisen: mit der Google Spracherkennung (funktioniert auch ohne Google Now!) kann man das Ziel einsprechen, ein kurzer Tap auf die Bestätigung reicht danach aus. Bei meinem Handy rufe ich sie auf, indem ich entweder 1s auf mein Headset drücke oder den Home-Button nach oben wische.

Mehr tanken und Mehr tanken Premium

Mit der App Mehr Tanken findet man den günstigsten Spritpreis in der Umgebung. Ein Feature, das ich an der Premium-Version sehr schätze: der günstigste Spritpreis entlang einer Route lässt sich nur in der Bezahlversion finden.

Spotify und TuneIn

Mit der Premium-Version von Spotify kann man auf dem Handy Playlisten streamen (auch über das Mobilfunknetz) oder vorher im WLAN heruntergeladene Playlisten anhören. Praktisch bei langen Autofahrten! Mit TuneIn lässt sich Webradio auch über das Mobilfunknetz hören. Guter Empfang ist vorausgesetzt.

Fazit

Die Android Auto App versieht die nützlichen Funktionen der schon lange existierenden Apps von Google und anderen Anbietern mit einfacher Bedienbarkeit für Fahrer während der Autofahrt. In Premiumautos werden vermutlich in den nächsten Jahren Autoradios mit Android angeboten. Ob diese auch mal selbstständig online gehen, oder weiterhin ein Smartphone für die Onlineverbindung braucht, wird sich zeigen. Langfristig, schätze ich, wird das Radio eine SIM-Karte erhalten.

Mit den oben genannten Hardwareteilen kann man sich Android Auto aber schon heute nachbauen, für kaum mehr als 100 Euro — Smartphone vorausgesetzt.

Wochenrückblick 12/2015

Permalink deesaster.org

Der Wochenrückblick lässt das Geschehen der vergangenen Woche rund um Ubuntu, Linux und Open Source Revue passieren.

Rund um Ubuntu

Ubuntu 10.04 verliert Unterstützung ab Ende April

Am 30. April 2015 läuft der Unterstützungszeitraum für Ubuntu 10.04 „Lucid Lynx“ aus. Da Lucid eine LTS-Version ist, wird sie ggf. auch heute noch bei Benutzern eingesetzt. Wer das Betriebssystem noch einsetzt, sollte unbedingt auf Ubuntu 12.04 „Precide Pangolin” LTS oder weiter auf das neueste Ubuntu 14.04 „Trusty Tahr“ LTS aktualisieren, da ab dem 1. Mai 2015 Lucid nicht mehr mit Sicherheitsupdates unterstützt wird.

Quellen: Ubuntu Fridge, Pro-Linux

UK-Regierung veröffentlicht Ubuntu 14.04 LTS Security Guidance

Der End User Devices Security Guidance: Ubuntu 14.04 LTS richtet sich an Regierungsmitarbeiter, die mit Ubuntu 14.04 LTS arbeiten. Das Papier geht dabei auf die verschiedenen Sicherheitsmöglichkeiten ein, die einem das System bietet bzw. Vorkehrungen, die man treffen muss, um sicher unterwegs zu sein. Teilweise können sich auch normale Ubuntu-Anwender daraus über Computersicherheit informieren.

Quelle: Ubuntu Insights

Neues rund um Linux

Persönlicher Assistent Sirius als Alternative zu Siri

Siri: heißt die Sprachsoftware, die auf Apples Geräten als persönliche Assistentin bereit steht. Mit Sirius ist die erste Version einer freien Alternative erschienen, die Sprache und Bilder erkennt und entsprechend darauf antworten kann.

Quellen: Pro-Linux, heise open, Golem

Bewerbung für Google Summer of Code 2015 möglich

Noch bis zum 27. März 2015 können sich Studenten für den Google Summer of Code 2015 bewerben und an einem Open-Source-Projekt weltweit mitarbeiten. Ab Ende Mai werden die Projekte dann konkret gestartet.

Quelle: Pro-Linux

Open-Data-Portal Open.NRW öffnet die Pforten

Mit Open.NRW hat das Bundesland Nordrhein-Westfalen sein eigenes Open-Data-Portal gestartet, über welches Bürger nicht nur informiert werden sollen sondern auch die Politik mitgestalten können. So werden verschiedene Datensätze zur Bevölkerung, Geographie, Transportwesen und Umwelt angeboten.

Quellen: Pro-Linux, heise open

Verschlüsselung für alle

Das Fraunhofer Institut hat auf der Cebit das Projekt Volksverschlüsselung vorgestellt. Dies soll allen Computernutzern die Möglichkeit bieten, ihren Datenverkehr zu verschlüsseln ohne Computerprofi zu sein. Das Projekt setzt dabei auf S/MIME statt PGP.

Quellen: Golem, Linux-Magazin

Document Freedom Day am 25. März

Am 25. März 2015 ist wieder der weltweit stattfindende Document Freedom Day. An dem Tag wollen Aktivisten offene Standards feiern und die Öffentlichkeit darauf aufmerksam machen, welche Möglichkeiten es gibt, Informationen für alle frei zugänglich zu machen.

Quelle: Linux-Magazin

Spielen unter Linux

BioShock Infinite für Linux

Wie bereits im Dezember gemeldet, hat Publisher 2K Games sein erfolgreiches Actionspiel Bioshock Infinite nun auch für Linux veröffentlicht. Es handelt sich dabei aber um keine native Implementierung, sondern es wird der eON-Wrapper von Virtual Programming benutzt.

Quelle: Pro-Linux

Neue Version von OpenClonk

OpenClonk ist ein Multiplayer-Spiel, welches Strategie- und Actiongenre vermischt. Mit der neuen Version 6.0 wurde das Beleuchtungssystem verbessert und neue Szenarien bereitgestellt.

Quelle: Pro-Linux

Neue Version von FreeCiv

Der erfolgreiche Civilization-Klon FreeCiv wurde in einer neuen Version 2.5 veröffentlicht und bringt Verbesserung an der AI und ein neues, verbessertes Regelwerk mit.

Quelle: Pro-Linux

Humble Weekly Roguelikes Bundle 2

Wer roguelike Spiele mag, sollte sich das aktuelle Humble Weekly Bundle anschauen. Von den sechs angebotenen Spielen zum Selbstbestimmungspreis sind vier für Linux erhältlich, drei davon auch DRM-frei.

Humble PC and Android Bundle 12

Das Humble PC and Android Bundle 12 enthält sieben Spiele für Linux, MacOS X, Windows und Android zum Selbstbestimmungspreis. Einige der Spiele wie Titan Attacks!, VVVVVV oder Costume Quest waren schon in früheren Bundles enthalten, Tetrobot, The Inner World, Shadowrun Returns und Ironclad Tactics sind neu dabei. Nächste Woche Dienstag werden dem Bundle weitere Spiele hinzugefügt.

Hardware und Mobiles

Probleme mit Ubuntu-Phone-Lizenzen

Beim kürzlich veröffentlichten Ubuntu-Phone Aquaris E4.5 von bq scheint mit den Lizenzen nicht alles ganz korrekt gelaufen zu sein. So enthalten einige Kernelmodule des Betriebssystems Hinweise auf ein proprietäres Urheberrecht, obwohl der Linux-Kernel unter der GPL veröffentlicht wird. Canonical und bq prüfen die Anmerkungen.

Quelle: Golem