Windows mit Linux-Kernel?

Mit der letzten Ankündigung bin ich tatsächlich der Meinung, dass wir den Beginn der Umstellung von Windows auf einen Linuxkernel sehen. Es mehren sich die Zeichen, dass die Integration von Windows und Linux - durch Microsoft getrieben - immer stärker wird.

Dem vorangegangen sind eine Reihe von anderen Meldungen.

Windows Containers mit Docker.

Der Datenbankserver MS SQL wird auf Linux portiert.

OpenSSH wird in Windows Server 2016 enthalten sein.

Nebenbei: Wer es schafft das Takswarrior-Kommando "task color" im Linux-Subsystem von Windows 10 zu zeigen, bekommt ein Taskwarrior-T-Shirt und einen Sticker (Twitter) ;-)

Taskwarrior Workflow ...

Spannend und eine Quelle für Inspirationen könnte die Workflow-Seite werden, die mit diesem Newsitem angekündigt wurde.

Wir sind interessiert daran, Euren Workflow zu erfahren, schickt ihn in Englisch an support@tasktools.org oder in Deutsch an mich, ich übernehme dann die Übersetzung.

Taskwarrior 2.5.1 ...

Taskwarrior 2.5.1 wurde gestern veröffentlicht. Wie die Versionsnummer vermuten lässt, gibt es keine neuen Features.

(Hat eigentlich irgendwer einen Link, der erklärt, was "Semantic Versioning" ist? Dann könnte ich den als Erklärung dazu kopieren.)

Semantic Versioning, danke Steffen.

Was neu ist, steht im ChangeLog, zusammengefasst:

  • Bug Fixes
  • Performance-Verbesserungen
  • Neue Bugs, die alten sind ja gefixt

Recommended for all users, because it just works better.

FLOSS-Perlen ...

Ich bin immer auf der Suche nach FLOSS-Perlen.

Wenn Ihr also FLOSS-Perlen findet, wäre ich sehr froh, wenn Ihr Eure Fundstücke in den Kommentaren oder besser noch in eigenen Blog-Artikeln beschreibt und hier verlinkt.

Wichtig! Ich suche nicht nach dem x-ten Artikel, der eine Software beschreibt, die eh schon jeder kennt, es sei denn sie bietet etwas so besonderes, dass sich die Erwähnung lohnt.

Dabei schreibe ich ganz bewusst FLOSS, weil ich die Streitigkeiten zwischen der Free-Software-Definition und der Open-Source-Definition nicht mitmachen möchte.

Grundlegend wollen beide Gruppierungen das gleiche und ich fühle mich eher zur "Open Source" als zur dogmatischeren "Free Software" hingezogen. Ich bin der Meinung, dass der Streit "unserer Bewegung" eher schadet als nützt.

Definition von "Freie Software" nach Wikipedia:

  • Die Freiheit, das Programm auszuführen, wie man möchte, für jeden Zweck.
  • Die Freiheit, die Funktionsweise des Programms zu untersuchen und eigenen Bedürfnissen der Datenverarbeitung anzupassen.
  • Die Freiheit, das Programm weiterzuverbreiten und damit seinen Mitmenschen zu helfen.
  • Die Freiheit, das Programm zu verbessern und diese Verbesserungen der Öffentlichkeit freizugeben, damit die gesamte Gemeinschaft davon profitiert.

Definition von "Open Source" nach Wikipedia:

  • Die Software (das heisst der Quelltext) liegt in einer für den Menschen lesbaren und verständlichen Form vor.
  • Die Software darf beliebig kopiert, verbreitet und genutzt werden.
  • Die Software darf verändert und in der veränderten Form weitergegeben werden.

Das deutsche Git-Buch ...

Nachdem der Verlag Open Source Press leider zum 31. Dezember 2015 die Pforten geschlossen hat, haben alle Autoren die Rechte an Ihren Büchern komplett übertragen bekommen.

Valentin Haenel und Julius Plenz, die beiden Autoren von "Git - Verteilte Versionsverwaltung für Code und Dokumente" haben sich entschieden Ihr Buch unter einer Creative Commons Lizenz frei zu geben.

Webseite, das Buch, das Repository und Foliensätze für eine Schulung.

Ich zitiere einmal aus der README.md-Datei:

Falls Du ein DocBook-Experte und/oder Webprogrammierer bist, und denkst: Das Design könnte man ja wohl mal professionalisieren – dann gerne! Ich habe aus den Quelldateien nur schnell eine halbwegs ansehnliche Webseite zusammengestoppelt. Auch sind gegebenenfalls eine PDF- oder EPUB-Version interessant; falls Du dies übernehmen willst, gerne!

openSUSE Leap 42.1 ...

Da kann man mal sehen, wie viel Zeit es braucht bis ein Artikel fertig wird ...

Wer einen Distributionstest sucht, sollte meiner Ansicht nach lieber bei Pro-Linux oder Michael Kofler nachlesen.

Meine Anmerkung ist eher "philosophischer Natur" ;-)

Zum Einen finde ich es klasse, dass sich bei OpenSUSE endlich wieder etwas getan hat. Tot gesagte leben bekanntlicherweise länger. SUSE war "meine Einstiegsdroge" in die Linuxwelt und ich hätte es sehr schade gefunden, wenn diese Distribution einfach sang- und klanglos verschwunden wäre.

Zum Anderen gefällt mir das Konzept sehr (keine Angst, ich denke derzeit nicht darüber nach, zu wechseln). Es bietet eine sehr gute Alternative zu bestehenden Distributionen, die sich (bis jetzt) bezogen auf Softwareversionen ganz grob in drei Lager einteilen liessen:

  1. Abgehangen (ich möchte nicht veraltet sagen, weil es nicht passt), stabile Software, die lange unterstützt wird. Vertreter dieser Gattung finden sich besonders bei den Server-Systemen, seltener auf dem Desktop.
    • CentOS
    • Debian
    • Ubuntu LTS

  2. Schnell drehend, relativ viele Updates, aktuelle Software, kurze Support-Zeiträume. Typische Verwendung als Desktopsystem für (ambitionierte) Endbenutzer.
    • Fedora
    • Ubuntu (ohne LTS)

  3. Ständig aktualisierend ("rolling release"), meist topaktuelle Software häufig zu Lasten der Stabilität. Wer nicht regelmässig mitspielt ("aktualisiert") manövriert sich in Schwierigkeiten.
    • ArchLinux
    • Sabayon
    • Gentoo
    • OpenSUSE Tumbleweed

Klar, dass noch wesentlich mehr Distributionen gibt, die obigen seien nur als Beispiele genannt.

Es gibt natürlich Zwitter, so lassen sich die abgehangenen Systeme durch zusätzliche (nicht vom Hauptrojekt unterstützte) Paketquellen mit aktuellerer Software bestücken.

Und diesen "Zwitter-Weg" geht jetzt auch OpenSUSE Leap. Sie bauen auf der stabilen Basis von SUSE Enterprise Linux auf und portieren aktuelle Applikationen aus Tumbleweed zurück in die Distribution und unterstützen sie auch offiziell.

In der Summe ist das eine Mischung aus der ersten und der dritten gerade genannten Kategorie. Für mich ist dieser Weg das Beste aus allen Welten für Endanwender und ich hoffe, dass einige weitere Distributionen dem Beispiel folgen werden. Allerdings, das darf man nicht vergessen, kann der hohe Takt auch zu Problemen führen.

Termux ...

Termux ist eine Linux-Umgebung (und Terminal-Emulator) für Android, damit wäre schon fast alles gesagt, wenn es nicht so toll und zu dem noch Open-Source-Software wäre :-)

In der App lassen sich nämlich Pakete via apt nachinstallieren und das ohne, dass man für das Gerät root-Rechte benötigt. Neben den üblichen Verdächtigen, wie beispielweise openssh oder vim gibt es auch ein Paket für Taskwarrior, das direkt funktioniert. Zusammen mit dem Taskserver lässt sich so auch bequem synchronisieren.

Der Entwickler ist sehr aktiv und steht Paketwünschen sehr wohlwollend gegenüber. Am einfachsten kann man vermutlich einfach einen Request im entsprechenden GitHub-Projekt einstellen.

Den Tipp zu Termux hat mir Wim (hast Du eigentlich eine Webseite?) auf der OpenRheinRuhr gegeben.

Taskserver auf CentOS 6 ...

Weil ich danach gefragt wurde.

Wenn man den zu Taskwarrior passenden Taskserver übersetzen und benutzen möchte, sind folgende Schritte nötig:

Die sollten auch unter CentOS 7 funktionieren.

$ sudo yum install cmake # zum Bauen der Build-Konfiguration
$ sudo yum install gcc-c++ # der Compiler
$ sudo yum install gnutls-devel # für die Verschlüsselung der Verbindung
$ sudo yum install libuuid-devel # um eindeutige IDs bauen zu können

Gerade die letzte Bibliothek wird benötigt, wenn man einen älteren C++-Compiler - wie in CentOS 6 - einsetzt.

Gebaut wird dann mit

$ curl -O http://taskwarrior.org/download/taskd-latest.tar.gz
$ tar xzf taskd-latest.tar.gz
$ cd taskd-latest
$ cmake -DCMAKE_INSTALL_PREFIX=${HOME}/taskserver -DCMAKE_BUILD_TYPE=release .
$ make
$ make install

ACHTUNG: Das letzte Zeichen der Zeile, die cmake ausführt ist ein Punkt ".".

Der CMAKE_INSTALL_PREFIX kann wegfallen, wenn man den Taskerver unterhalb von /usr installieren möchte (dann muss man im letzten Schritt auch sudo make install ausführen.

Jetzt noch die Pfade konfigurieren und dann kann es losgehen:

$ export PATH=${PATH}:${HOME}/taskserver/bin
$ export MANPATH=${MANPATH}:${HOME}/taskserver/share/man

Testen mit

$ taskd diag
$ man taskd

Viel Spass!

Migration zu Hetzner ...

Man, was ist das nervig.

Aufgrund eines Irrtums, der sich durch Hören dieser Folge (ab 01:29:32) des empfehlenswerten Podcasts Rechtsbelehrung aufklärte, werde ich mit meinem root-Server wieder nach Deutschland umziehen. Ich hatte das hier schon mal angemerkt.

Mit Bekannten teile ich mir einen Backupserver bei Hetzner und da liegt es natürlich nahe mit dem Server auch zu Hetzner zu gehen. Das Preis-/Leistungsverhältnis für den EX40 ist einfach ungeschlagen. Der Server, wie auch der andere Server der Bekannten, läuft mit CentOS und sehr schnell, also so wie er soll.

Mein neuer Server stand in Rechenzentrum 20 und "fühlte" sich immer sehr langsam an, vor allem das Installieren dauerte ewig. Nun, EPEL-Repositories sind aktiviert und ich bekam den Server kurz vor dem Release von Fedora 23, daher dachte ich, es lag daran. - So war es aber nicht.

Ich habe einen nmap auf Port 22 eines Servers in einem anderen Rechenzentrum bei Hetzner gemacht und der dauerte 16.5 Sekunden, von einem anderen Server bei Hetzner (ebenfalls nicht im gleichen Rechenzentrum) dauerte es 0.07 Sekunden und von zu Hause 0.2 Sekunden.

Das spricht sehr stark dafür, dass etwas im Routing nicht sauber funktioniert und die Pakete den "falschen (langsamen) Weg nehmen". Der Hetzner-Support versuchte das Problem mit dem Rettungssystem (Debian) nach zustellen, aber da funktionierte alles zufriedenstellend. Sie verweigerten Support für das installierte System, was ich verstehe, bei einem root-Server ist man auf sich alleine gestellt.

Also habe ich den Server mit dem offiziellen CentOS-Image neu installiert und danach nichts anderes gemacht als nmap zu installieren. Das Problem war wieder da.

Jetzt ist für mich klar, dass da irgendetwas im Zusammenspiel von CentOS mit dem Routing Probleme bereitet.

Aber auch jetzt fand der Support kein Problem, ich gehe davon aus, dass es nie unter CentOS nachgestellt haben und sie boten mir an, einen Austauschserver zu bekommen. Aufgrund der Prozesse sollte ich den alten Server kündigen und den neuen bestellen, sie würden dann an der gleichen Stelle einen neuen Server bereitstellen. Das hätte das Problem meiner Ansicht nach nicht gelöst.

Glücklicherweise kann man einen Server innerhalb von zwei Wochen stornieren, das habe ich gemacht. Dann habe ich einen neuen Server bestellt und darum gebeten ihn nicht im gleichen Rechenzentrum 20 bereitzustellen. Das dauert knapp 24 Stunden und, was soll ich sagen, im Rechenzentrum 21 gibt es das gleiche Problem.

Man, das nervt.

Also wieder storniert und neu bestellt und jetzt darauf geachtet, dass der Server in ein Rechenzentrum kommt, wo ich weiss, dass es funktioniert.

Das ist halt der Nachteil, wenn man zu einem Grosshoster geht und dort wirklich Probleme hat. Die grosse Anzahl an Systemen können nur durch einen standardisierten Prozess verwaltet werden. Lösungen, die ausserhalb dieser Prozesse liegen, funktionieren halt nicht. Nicht falsch verstehen, das ist kein Vorwurf, es geht nicht anders. Aber es nervt.

Perl 6 rechnet anders ...

Die Kommentare des Artikels Rechnen mit Python kann man vermutlich nur mit einer gehörigen Ladung Popcorn ertragen, vor allem der Teil, dass der Computer bestimmt, was mathematisch korrekt ist, hat Unterhaltungswert.

Damals habe ich schon angemerkt, dass Computer auch mit geschickteren Algorithmen rechnen könnten, um möglichst genau zu sein. Die Variante, die Perl 6 umsetzt, ist allerdings so einfach wie brillant. Werte mit Nachkommastellen werden einfach intern als Brüche (rationale Zahlen) gespeichert und so ist 90% des Rechnens einfache Bruchrechnung und damit genauer (und sogar korrekt) als das Rechnen mit Fliesskommazahlen. Allerdings ist das natürlich langsamer, daher kann man auch explizit festlegen, dass man Fliesskommaarithmetik möchte.

Das Beispiel aus dem verlinkten Artikel:

> 1100-1036.04
63.96

Gucken wir uns einmal die Datentypen an:

> say 1100.WHAT
(Int)
> say 1036.04.WHAT
(Rat)
> say (1100-1036.04).WHAT
(Rat)

Brüche haben einen Zähler und einen Nenner (Perl 6 kürzt automatisch):

> say 63.96.numerator
1599
> say 63.96.denominator
25
> say 63.96.nude
(1599 25)

Das ist alles nicht so wahnsinnig spannend. Wer allerdings programmiert, weiss, dass so etwas normalerweise als ungleich ausgegeben wird.

> my $a=1/6
0.166667
> my $b=1/3
0.333333
> if (4 * $a + $b == 1) {say "Ist gleich"} else {say "Ist ungleich"}
Ist gleich

Fliesskomma geht auch, aber hier wird für die Darstellung gerundet.

> say 1100e0-1036.04e0
63.96
> say (1100e0-1036.04e0).WHAT
(Num)

E-Mail, Kontakte und Kalender ...

Lange Jahre war ich mit Claws-Mail als Mailclient mehr als zufrieden und bin es heute noch. Die Filter- und anderen Konfigurationsmöglichkeiten sind unerreicht. Leider ist er nicht mehr auf der Höhe der Zeit.

Es gibt immer mehr HTML-Mails (die ich auch als HTML sehen möchte) und die meine Anforderungen über Mail hinaus sind gestiegen.

Ich bin auf der Suche nach einem "Personal Information Manager", der die folgenden Aufgaben in einer integrierten Oberfläche bereitstellt und soll unter KDE auf Linux laufen:

  • Pflicht: E-Mail (klar, oder?)
  • Pflicht: Anzeige von HTML-Nachrichten ohne Verrenkungen, gerne mit einmaliger (!) Nachfrage pro Kontakt ob Content nachgeladen werden darf.
  • Pflicht: Sollte nicht in die Knie gehen bei meinem Mailaufkommen (derzeit drei "echte Mailaccounts" via IMAP und zahlreiche Weiterleitungen) mit einigen hunderttausend gespeicherten Nachrichten.
  • Pflicht: Nutzung verschiedener Identitäten pro Mailaccount.
  • Pflicht: Filterung von eingehenden Mails, gerne auch mit Frontend für Sieve.
  • Pflicht: Verwaltung und Einbindung von Kontakten aus den externen Quellen ownCloud und Google Contacts.
  • Pflicht: Gleiches - ownCloud und Google Calendar - gilt für Kalender, hier kommen aber noch öffentliche ICS-Dateien dazu.
  • Kür: Speicherung von Antworten im gleichen Ordner wie die Mail, die auf die geantwortet wird.
  • Kür: Vergabe von Verarbeitungsregeln für Ordner wie beispielsweise "Verschiebe alle Nachrichten, die älter sind als 365 Tage in den Archivordner (der in einem anderen Mailaccount zu finden ist)" oder "Lösche alle Nachrichten aus dem Gesendet-Ordner, die an Mailinglisten gingen".
  • Kür: Usenet-Client

Die "Kür-Anforderungen" resultieren aus Funktionen, die ich Claws-Mail genutzt habe.

Getestet habe ich die integrierten KDE-Anwendungen KMail, KOrganizer, KAddressbook und KNode, aber die waren für die Anzahl der verwalteten Mails zu langsam und mit intensivem Filtern unbenutzbar. Der Featureset hat ansonsten dem entsprochen, was ich mir vorstelle.

Momentan teste ich Mozilla Thunderbird.

Perl 6 installieren ...

Da es noch kein Release von Perl 6 gibt, ist eine Installation via GitHub mit den Skripten von Tadeusz Sośnierz die schnellste Variante.

Tadeusz schlägt vor die Installation ins Verzeichnis ~/.rakudobrew zu packen, das gefällt mir nicht so gut.

mkdir ~/workspace
cd workspace
git clone https://github.com/tadzik/rakudobrew.git rakudobrew.git
cd rakudobrew.git
export PATH=~/workspace/rakudobrew.git/bin:${PATH}

Das export PATH=... würde ich auch gleich in die ~/.bashrc packen.

Mit dem folgenden Kommando wird ein Perl 6 gebaut, das dauert ein paar Minuten funktioniert aber zuverlässig.

rakudobrew build moar

Der neue Paketmanager von Perl 6 heisst Panda, diesen würde ich im nächsten Schritt gleich mitinstallieren.

rakudobrew build-panda

Da Perl 6 einen interaktiven Interpreter enthält, der aber noch nicht in der Historie "blättern" kann, kommt noch linenoise dazu. Ich möchte Euch bitten vor dem Schritt einmal perl6 aufzurufen, um zu sehen, wie schnell der Interpreter startet.

Nach der Installation von linenoise braucht der Interpreter deutlich länger, da muss sich noch etwas tun.

panda install linenoise

Und jetzt: Viel Spass mit Perl 6.

Swiss Perl Workshop Reprise ...

Zeit für eine kleine Zusammenfassung des Swiss Perl Workshops dieses Jahr.

Der Workshop ist jetzt schon über vier Wochen vorbei und er wirkt für mich immer noch nach. Ich habe viele nette Leute neu kennengelernt und alte Bekannte wieder getroffen. Interessant war es, einmal die Berühmtheiten aus der Perl-Szene zu sehen und mit Ihnen reden zu können.

Allen voran ist natürlich die "Legende" Larry Wall zu nennen - ja, es gibt ihn wirklich, aber auch die Core-Developer von Perl 6 wie Jonathan Worthington (DER Core-Entwickler und Macher von hervorragenden Tutorials), Will "Coke" Coleda (hat Larry Eure Fragen gestellt), Paul Cochrane (promovierter Physiker, Erfinder des Warp-Drives), Stefan Seifert, Vende Thiel, Sue Spence, Carl Mäsak, Elizabeth Mattijsen, Tadeusz Sośnierz (Installskript für Perl 6 aus den Quellen), Tobias Leich, Timo Paulssen, Wendy van Dijk und viele andere mehr, die man über die Suche finden kann (Suchfelder leer lassen, um alle zu finden).

Dank der vielen Sponsoren konnten wir die Reise- und Hotelkosten einiger Core-Entwickler übernehmen. DANKE!

Matthias (der leider nächstes Jahr nicht mehr dabei ist), Roman und ich haben den Workshop organisiert, wobei Matthias den Löwenanteil an IRC-Kommunikation getragen hat, da er tagsüber die Möglichkeit hatte, mitzulesen und zu schreiben.

Das Programm war sehr vielfältig und interessant, allerdings habe ich leider nur zwei Teile wirklich komplett wahrnehmen können, zum Einen das Interview von Larry Wall mit Will Coleda und zum Anderen den ersten Teil des Perl 6 Workshops von Jonathan Worthington.

Dass die ganze Veranstaltung ein so grosser Erfolg war, liegt ganz besonders auch daran, dass wir mit Daniela, Anja mit Ronja und Christoph ein hervorragend gutes und motiviertes Küchenteam hatten, die für uns gekocht (und gespült) haben. Danke!

CAs hinzufügen ...

Für den Fall, dass das noch jemand anderes benötigt.

Um andere Certificate Authorities (CAs) zu Linux hinzuzufügen, sind nur kleine Schritte nötig. Hier einmal am Beispiel CAcert.

Debian:

curl http://www.cacert.org/certs/root.crt -o /usr/local/share/ca-certificates/cacert_root.crt
curl http://www.cacert.org/certs/class3.crt -o /usr/local/share/ca-certificates/cacert_class3.crt
update-ca-certificates

CentOS:

update-ca-trust enable
curl http://www.cacert.org/certs/root.crt -o /etc/pki/ca-trust/source/anchors/cacert_root.crt
curl http://www.cacert.org/certs/class3.crt -o /etc/pki/ca-trust/source/anchors/cacert_class3.crt
update-ca-trust extract

ACHTUNG: In jedem Fall sollte vor dem Ausführen von update-ca-certificates bzw. update-ca-trust extract die Fingerprints der Zertifikate überprüft werden.

Perl ...

In den kommenden Tagen werde ich ein paar Artikel zu Perl und insbesondere auch zu Perl 6 veröffentlichen. Um aufkommenden Diskussionen vorzubeugen, muss ich hier einmal betonen, dass Perl aufgrund von schlechtem Marketing und einer viel zu frühen Ankündigung von Perl 6 sehr viel an Boden verloren hat und meiner Meinung nach diesen auch nicht mehr aufholen wird.

Die Rolle der Programmiersprache bzw. Skriptsprache, die überall installiert ist, hat zum Einen die immer stärker werdende Bash und zum Anderen Python übernommen. Tatsächlich finde ich auch, dass Python eine sehr "schöne" Programmiersprache ist (an dieser Stelle sei erwähnt, dass ich eher Skripter als Programmierer bin).

Ja, Ruby spielt auch noch eine Rolle, aber meiner Meinung nach eher oder stärker bei Webanwendungen als in der Systemadministration (meinem Arbeitsfeld). Ausnahmen wie Puppet bestätigen die Regel.

Bei grösseren Anwendungen könnte Perl 6 tatsächlich auch wieder eine Rolle spielen. Warum ich das vermute, werde ich vielleicht in den folgenden Artikeln darlegen können.

Ein grosses und nicht zu unterschätzendes Plus von Perl ist allerdings die internationale Perl-Community, die einfach nur grossartig ist und die uns Events wie den Swiss Perl Workshop 2015 mit Perl 6 Hackathon durchführen lässt und Gäste aus der ganzen Welt anzieht. Die Community bewegt mich auch dazu, mich weiter für Perl einzusetzen und eine Rolle im Perl-Verein Schweiz zu übernehmen.

Durch die grossartigen Sponsoren, die auch zu einer gut funktionierenden Community gehören, konnten wir die Reisekosten der Perl 6 Core Entwickler übernehmen und hatten so unter anderem auch Larry Wall zu Gast. Zum diesjährigen Swiss Perl Workshop wird es auch einen Artikel geben.

Ich muss gestehen, dass mir andere Communities neben denen von Fedora, Ubuntu und Perl gar nicht auffallen, was aber auch an meinem begrenzten Blickfeld liegt. Wenn Ihr das anders sehr, bin ich für Kommentare hier sehr dankbar.