Skip to content

Bloggeburtstag Nummer 14 ...

Stell Dir vor es ist Bloggeburtstag und niemand geht hin. ;-)

Gestern wurde "Dirks Logbuch" 14 Jahre alt, es hat sich in diesen 14 Jahren eine Menge innerhalb und ausserhalb des Blogs getan. Damit meine ich nicht nur die Betriebssysteme, Datenbanken und PHP-Versionen, die das Blog in der Zwwischenzeit gesehen hat - natürlich hat sich auch die Blogsoftware verändert.

Anfänglich habe ich einmal jeden Tag einen Beitrag veröffentlicht, das habe ich sehr lange beibehalten können, allerdings waren die Inhalte auch entsprechend, nun ja, flach ... (mit wenigen Ausnahmen).

Mittlerweile ist die einzige Konstante der (fast) jeden Freitag erscheinende Linkdump.

Ich würde gerne wieder mehr im Blog machen, komme nur leider aufgrund anderer Prioritäten nicht dazu. Vielleicht ändert sich das auch noch einmal. Ich habe viele Ideen, muss sie nur einfach auch umsetzen.

Danke Euch Lesern, dass Ihr das Blog und damit auch mich so lange schon begleitet. Ich mag den Austausch mit Euch sehr, weshalb die Kommentarfunktion auch so unbeschränkt wie möglich betrieben wird.

Region Settings ...

fedora Das bezieht sich jetzt nicht nur auf XFCE, aber da ist es mir aufgefallen ...

XFCE bietet keinen Dialog, um die Region-Settings anzupassen, ich habe gerne mein System in Englisch und die Regionaleinstellungen auf Deutsch oder der Schweizer Variante von Deutsch (Uhrzeit im 24 Stunden Format, Dezimaltrenner, ...).

Die Einstellungen kann man in der Datei /etc/locale.conf vornehmen, standardmässig ist nur die erste Zeile gesetzt:

LANG="en_US.UTF-8"
LC_COLLATE="de_CH.UTF-8"
LC_CTYPE="de_CH.UTF-8"
LC_TIME="de_CH.UTF-8"
LC_NUMERIC="de_CH.UTF-8"
LC_MESSAGES="en_US.UTF-8"


Weitere Informationen dazu gibt es unter System Locale and Keyboard Configuration.

Da ich das nur auf Desktop-Systemen so mache, bin ich noch nie darüber gestolpert.

Nextcloud-Client unter XFCE ...

fedora Ich habe den Nextcloud-Client aus den Fedora-Repositories installiert, Fedora liefert Version 2.5.2 aus.

Leider musste ich nach jedem Neustart den Login und das Passwort für die drei Accounts, die ich synchronisiere, neu eingeben, was ziemlich nervig ist.

Das Paket libgnome-keyring schafft da Abhilfe.
$ sudo dnf install libgnome-keyring

Neues Tablet ...

android Seit dem 30. April besitze ich ein neues Tablet, es ist ein Samsung Galaxy Tab S5e mit Book Cover Keyboard (ich habe leider keinen Link dazu auf den offiziellen Seiten) geworden.

Interessant, dass es knapp 14 Monate gedauert hat, ein Ersatz für mein altes Tablet zu finden, Details zum Verlust des alten Tablets hier. Wider Erwarten ist es doch ein Samsung Tablet gworden. Der Markt für Android Tablets mit Displays um 10 Zoll oder grösser ist halt relativ beschränkt.

Die Zeit habe ich mit einem iPad Pro (12.9 Zoll, 2. Generation), was mir gute Dienste geleistet hat, aber sehr einschränkend ist, wenn man die Freiheit unter Android gewohnt ist. So lassen sich aufgrund von Restriktionen im Apple Store beispielsweise keine Plugins in Firefox installieren oder Firefox als Default-Browser des Systems nutzen.

Das User Interface des Tablets ist ... nun ja ... bunt und sehr gewöhungsbedürftig. Das Display ist klasse und gestochen scharf. Die Tastatur ist unerwartet gut, ich muss nur noch meine grossen Hände trainineren, damit umzugehen, aber das Tippen geht - mit gelegentlichen falschen Tastendrücken - gut "von der Hand".

Die Grösse des Geräts ist prima, aber das Gewicht ist gefühlt höher als ich gedacht habe.

(Ich finde gerade spannend, dass mein Tablet mit Tastatur, mein Handy und meine "not so smart" Watch in Summe weniger kosten als das Handy eines Arbeitskollegen).

Zurück auf liquidprompt ...

linux Nachdem ich jetzt rund 1,5 Jahre Powerline genutzt habe, bin ich mit der Neuinstallation zurück auf Liquidprompt gewechselt.

Es gibt drei Gründe dafür: Zum Einen ist Liquidprompt deutlich schneller als Powerline und das merke ich sofort. Zum Anderen merkt man Powerline an, dass es "eigentlich" für die ZSH gemacht wurde und die Bash, na ja, rudimentärer unterstützt wird, weil sie vermutlich deutlich weniger Möglichkeiten für den Prompt bietet als ZSH. Weiterhin ist die Konfiguration deutlich einfacher ...

Wermutstropfen ist, dass das Projekt Liquidprompt nur sehr langsam bis gar nicht weiterentwickelt wird. Die ältesten nicht gelösten "Issues" sind knapp sieben Jahre alt.

Aber es tut seinen Job und das sogar sehr schnell und gut.

Fedora 30 ...

fedora Trotz der wirklich guten Erfahrungen, die ich mit dem Update von Fedora gemacht habe, habe ich mit der Version 30 - "aus Gründen" - eine komplette Neuinstallation gemacht.

Neben der "Datenhygiene" war dieses Mal der Grund, dass ich das Desktop Environment von KDE nach XFCE gewechselt habe.

Einer der Hauptgründe ist, dass ich kaum KDE-eigene Programme genutzt habe und gefühlt jede Tastenkombination mit einer Funktion belegt ist. XFCE ist deutlich schlanker, was die Menge der mit installierten Software betrifft und der weitgehende Verzicht auf Desktop Effekte macht die Arbeit gefühlt schneller.

Ich will nicht verhehlen, dass ich verärgert darüber bin, dass sich bei Borgbackup ein alter Fehler eingeschlichen hat, interessanterweise hat die Installation via pip in einem "Virtual Environment" auch nicht funktioniert. Wenn ich wieder zu Hause bin, werde ich einen Bugreport erstellen.

Am Rande bemerkt, bei Linux ist so etwas relativ leicht machbar.

devLUG ...

linux

Diesen Beitrag möchte ich gerne einmal nutzen, um über die devLUG zu informieren.

Die devLUG ist eine deutschsprachige "virtuelle" Linux User Group mit realen Menschen (deshalb ist das "virtuell" in Anführungszeichen).

Das Ziel der devLUG ist die Erstellung, Verbreitung und Förderung von Free/Libre Open Source Software (kurz FLOSS), insbesondere aber nicht ausschliesslich im Zusammenhang mit Linux­basierenden Betriebssystemen und Distributionen.

Um dieses Ziel zu erreichen, bedient sich der Verein moderner Kommunikationsmittel, die auf Verbindungen über das Internet basieren.

Wir sind in der devLUG an einen Punkt gekommen, ernsthaft über eine Vereinsgründung nachzudenken. Ohne die Gründung kommt es immer wieder zu Situationen in denen es aus verschiedenen auch rechtlichen Gründen nicht weitergeht.

Selbstverständlich bringt die Gründung eines - vielleicht sogar gemeinnützigen - eingetragenen Vereins einige Nachteile mit sich, jedoch denken wir, dass die Vorteile für die devLUG überwiegen.

Die "Aktiven" unter uns haben sich schon mal Gedanken gemacht, was sie in der devLUG sehen und was das Ziel sein soll.

Aktivitäten rund um Linux und FLOSS (Free/Libre Open Source Software), Nutzung von digitalen Möglichkeiten zur Kommunikation, Aktivitäten können Workshops, Anleitungen, Hilfe (zur Selbsthilfe), Podcasts, ... sein. Ziel ist es von und miteinander zu lernen, Linux User Groups im deutschsprachigem Raum miteinander zu vernetzen, Synergien zu nutzen, dezentrale Strukturen aufzubauen.

Wir wollen versuchen, uns kleine Ziele zu setzen welche auf virtuellen Stammtischen besprochen werden können. Dies können kleine online Workshops sein oder vieles andere mehr.

Wenn jemand Interesse an der Gründung eines Vereins für die virtuelle Linux User Group hat, kann sich einfach hier melden oder uns im IRC-Kanal #devlug aufFreenode (hinter dem Link verbirgt sich ein Webchat) vorbeischauen.

Einen Stammtisch gibt es auf Freenode in dem angegebenen Kanal, jeweils um 20:30 Uhr und alle zwei Wochen im Wechsel Dienstag / Donnerstag. Die nächsten Termine sind: 30. April, 16. Mai, 28. Mai, 13. Juni. Generell gibt es aber immer jemanden, der im Freenode-Kanal #devlug ansprechbar ist. Wir freuen uns auf Euren Besuch.

Ein Friendica-Forum wartet ebenfalls auf Euren Besuch.

Matomo entfernt ...

Nach vielen, sehr vielen - ich vermute mehr als zehn - Jahren der Benutzung von Piwik bzw. Matomo habe ich die Installation gelöscht.

Tatsächlich war es so, dass ich schon lange nicht mehr in die Statistiken geschaut habe.

Bei mir hat jede Domain und Subdomain vom Webserver eigene Logfiles, das macht die Fehlersuche deutlich leichter. Ich muss mal schauen, ob ich so etwas wie GoAccess benutze, um die Logs aufzubereiten. Da bin ich mir noch unsicher.

Was benutzt Ihr?

Mein Arbeitsplatz ...

linux

Systemadministrator (aktueller "Jobtitel Senior System Engineer Linux/Unix") bin ich schon relativ lange und so lange ich diesen Job mache, so lange schraube ich und verbessere mein Arbeitssetup.

Das berufliche "Virtual Desktop"-Betriebssystem ist leider Windows, aktuell in der Version 10, via Thin Client, wobei ich bis auf Mailclient und Webbrowser (via SSL Interception Proxy) nur Zugriff auf die Linux- und Solaris-Infrastruktur benötige.

Dafür habe ich sehr vieles ausprobiert. Wir haben einen Remote Desktop mit NoMachine, den ich lange genutzt habe - vor allem, da ich ihn auch über beide Monitore strecken kann - aber so richtig warm geworden bin ich damit nicht. In einem anderen Kontext nutzen wir xrdp und auch X2Go habe ich getestet. Auf der Gegenseite läuft jeweils ein Red Hat Enterprise Linux 7 mit KDE 4 als Desktop (privat bin ich auf Fedora 29 mit KDE Plasma).

Nach allem Hin und Her bin ich mittlerweile bei PuTTY und - falls ich wirklich einmal (sehr selten) Grafik brauche - XMing, das reicht für mich völlig aus.

In PuTTY gibt es vier Settings, die ich jedem empfehlen möchte, der ernsthaft damit arbeitet.

  1. Unter Window / Behaviour habe ich "Full screen und Alt-Enter" gesetzt, damit lässt sich PuTTY in einem rahmenlosen Vollbild-Fenster betreiben.
  2. Unter Window / Selection ist die "Action of mouse buttons" auf "xterm (Right extends, Middle pastes)" gesetzt. Ihr wisst schon ... alter Sack ... Schwierigkeiten umzugewöhnen ... besser es funktioniert so wie auf jedem gewohnten Linux Desktop.
  3. Ebenfalls unter Windows / Selection gibt es den Punkt "Paste to clipboard in RTF as well as plain text" - gerade in Verbindung mit Outlook als Zwangsclient hilft das sehr, formatierte Dinge (inklusive Farben) aus der Shell zu pasten.
  4. Unter Connection / SSH / X11 muss natürlich "Enable X11 forwarding" eingeschaltet sein, sonst wird das nichts mit XMing.

Apropos XMing, das wird über einen Shortcut mit folgenden Parametern gestartet: Xming.exe :0 -clipboard -multiwindow -xkblayout ch -xkbvariant de

Was das ganze Setup aber zu meiner Administrationslösung macht, ist tmux. Meine Konfiguration findet Ihr am Ende das Artikels. Vielleicht erläutere ich sie einmal in einem weiteren Blogposting.

Bis vor kurzem habe ich immer ClusterSSH benutzt, wenn ich auf mehreren Systemen gleiche Befehle ausführen musste. Das hat auch mit XMing super funktioniert, bringt aber eine Inflation an Fenstern mit sich.

Daher bin ich richtig froh, dass ich tmux-xpanes entdeckt habe. Das Tools ist mit einer Fullscreen Terminal-Session via tmux einfach unschlagbar.

Meine zwei Monitore sind jetzt wie folgt aufgeteilt. Der linke Monitor trägt den ganzen Windows-Kram und der rechte eine PuTTY-Session im Fullscreen mit tmux. Das ist für mich perfekt.

# .tmux.conf
# Dirk Deimeke

set -s escape-time 1
set -g base-index 1
setw -g pane-base-index 1

bind r source-file ~/.tmux.conf \; display "Reloaded!"
bind S set-window-option synchronize-panes

bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

bind -r C-h select-window -t :-
bind -r C-l select-window -t :+

bind -r H resize-pane -L
bind -r J resize-pane -D
bind -r K resize-pane -U
bind -r L resize-pane -R

set -g default-terminal "xterm-256color"

set -g status-fg black

setw -g window-status-fg black
setw -g window-status-bg default
setw -g window-status-attr dim

setw -g window-status-current-fg white
setw -g window-status-current-bg red
setw -g window-status-current-attr bright

set -g pane-border-fg green
set -g pane-border-bg black

set -g pane-active-border-fg white
set -g pane-active-border-bg yellow

set -g message-fg white
set -g message-bg black
set -g message-attr bright

#### COLOUR (Solarized 256)

# default statusbar colors
set-option -g status-bg colour235 #base02
set-option -g status-fg colour136 #yellow
set-option -g status-attr default

# default window title colors
set-window-option -g window-status-fg colour244 #base0
set-window-option -g window-status-bg default
#set-window-option -g window-status-attr dim

# active window title colors
set-window-option -g window-status-current-fg colour166 #orange
set-window-option -g window-status-current-bg default
#set-window-option -g window-status-current-attr bright

# pane border
set-option -g pane-border-fg colour235 #base02
set-option -g pane-active-border-fg colour240 #base01

# message text
set-option -g message-bg colour235 #base02
set-option -g message-fg colour166 #orange

# pane number display
set-option -g display-panes-active-colour colour33 #blue
set-option -g display-panes-colour colour166 #orange

# clock
set-window-option -g clock-mode-colour colour64 #green
 

Vereine, die FLOSS-Dienste hosten ...

Weil ich in der letzten Zeit häufiger mit Menschen darüber diskutiert habe, kommt hier eine kurze Liste von Organisationen, die Dienste auf Basis von FLOSS (Free/Libre Open Source Software) anbieten. Anbieter ohne Impressum habe ich bewusst nicht aufgeführt.

Einer der grössten Vereine ist Framasoft in Frankreich, sie bieten unglaublich viele Dienste an.

Da wollte ich gar nicht hin ...

Jetzt bin ich mit Gib XMPP eine Chance ... genau an dem Punkt, an dem ich nicht sein wollte.

Conversations als Android-Client ist grossartig, aber jede Bemühung, mehrere Devices auf die gleichen verschlüsselten und unverschlüsselten Chats zugreifen zu lassen, schlägt fehl.

"Archiving" ist selbstverständlich eingeschaltet.

Unter iOS habe ich ChatSecure und den Testflight von Monal versucht, neben dem, dass die Nachrichten nicht angezeigt werden, funktioniert auch die Synchronisierung nicht gut. Ich bekomme Benachrichtigungen zum Teil Stunden nachdem ich sie auf dem Android-Handy hatte.

Unter Linux habe ich Kopete und Gajim versucht, auch das zeigt mir nicht alle Nachrichten an.

Ohne die Möglichkeit, auf die Chatverläufe von verschiedenen Devices zuzugreifen, kann ich XMPP nicht brauchen.

Für mich haben Matrix (via Riot), RocketChat und Mattermost bis jetzt am Besten von den FLOSS-Lösungen funktioniert.

Bin über Feedback oder Hinweise, was ich anders oder besser machen kann, sehr dankbar.

Datenbankbackup mit MyDumper unter CentOS 7 ...

centos

Zum Backup meiner Datenbanken benutze ich schon seit Jahren MyDumper und das MyLoader-Tool. Der grosse Vorteil von MyDumper neben der Geschwindigkeit durch Parallelisierung ist, dass alle Datenbanktabellen in einzelnen Dateien vorliegen und so leicht modifiziert werden könnten.

Höhere Geschwindigkeit bedeutet auch, dass man öfter Backups machen kann (bei mir alle vier Stunden).

MyDumper muss selber übersetzt werden, wenn es nicht in der Distribution dabei ist. Den Anfang bildet dass Holen des Quelltextes:

$ git clone https://github.com/maxbube/mydumper.git mydumper.git

Danach setzen wir die Variablen für das Übersetzen des Quelltextes.

$ export CC=/home/dirk/workspace/sclgcc.bash
$ export CXX=/home/dirk/workspace/sclc++.bash
$ export MAKEFLAGS="-j $(lscpu | awk '/^CPU\(s\)/ {print $2}')"

Die ersten beiden Variablen habe ich im gestrigen Artikel erwähnt.

Die MAKEFLAGS sorgen dafür, dass make mit mehreren Threads arbeitet. Ich nehme dafür die Anzahl der CPUs, die mir das System meldet.

$ yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel

Nachdem wir neben dem C++ Compiler, Make und CMake die Vorbedingungen installiert haben, kann es auch schon losgehen.

$ cd /home/dirk/workspace/mydumper.git
$ git clean -dfx
$ cmake . -DMYSQL_LIBRARIES_mariadb:FILEPATH=/usr/lib64/libmariadbclient.a -DWITH_SSL=OFF -DBUILD_DOCS=off
$ make
$ sudo make install

Das "git clean" räumt unter anderem die Reste von alten Übersetzungsversuchen auf. Guckt Euch bitte die Parameter gut an, bevor Ihr das in Repos macht, in denen Ihr Schreibrechte besitzt.

Da auf meinen Servern die aktuelle stabile Version von MariaDB arbeitet und ich ebenfalls den MariaDB-Client installiert habe, muss cmake das auch mitteilen.

Der Backup-User benätigt in der Datenbank "nur" Select-, Reload und Lock Tables Berechtigungen.
CREATE USER 'b2'@'localhost' IDENTIFIED VIA mysql_native_password USING 'kryptisches Passwort';
GRANT SELECT, RELOAD, LOCK TABLES ON *.* TO 'backup'@'localhost' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

Nachdem jetzt alles fertig ist, kann das folgende Backupskript seinen Dienst tun.

#!/bin/bash
# db-backup.bash
set -o errexit

BACKUPDB_DIR="/srv/bak/dumps"
DB_USERNAME="backup"
DB_PASSWORD="kryptisches Passwort"
THREADS=$(lscpu | awk '/^CPU\(s\)/ {print $2}')

cd ${BACKUPDB_DIR}

/usr/local/bin/mydumper --user ${DB_USERNAME} --password ${DB_PASSWORD} --threads ${THREADS}

find ${BACKUPDB_DIR} -type d -name 'export*' -mtime +1 -exec xargs rm -r '{}' \+

WICHTIG: Am Ende des Skripts werden alle Backups gelöscht, die älter sind als ein Tag.

Aktueller C-Compiler auf CentOS 7 ...

centos

Spannend, ich hätte schwören können, dass ich das schon einmal im Blog hatte, kann einen entsprechenden Artikel aber leider nicht finden.

Ein Weg, einen aktuellen C-Compiler auf CentOS zu installieren sind die offiziell unterstützten SoftwareCollections, für unseren Fall insbesondere das Developer Toolset 7. Die achte Version gibt es schon für Red Hat Enterprise Linux 7, wird also in den nächsten Wochen auch in CentOS 7 verfügbar sein.

Zuerst werden die Software Collections aktiviert und aktualisiert

$ sudo yum install centos-release-scl
$ sudo yum update

Installation des entsprechenden Pakets mit allen Abhängigkeiten

$ sudo yum install devtoolset-7-gcc-c++
Welche Software Collections installiert sind, bekommt man übrigens mit dem Kommando scl --list heraus.

Eine Shell mit aktivierter Software Collection starten

$ gcc --version | head -1
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)

$ scl --list
devtoolset-7

$ scl enable devtoolset-7 bash

$ gcc --version | head -1
gcc (GCC) 7.2.1 20170829 (Red Hat 7.2.1-1)

Neuen Compiler per Default aktivieren

Da man nicht jedes Mal eine neue Shell nutzen möchte, hilft der folgende Weg, das zu verwirklichen.

Wrapper Skripte für GCC und C++

#!/bin/bash
# sclgcc.bash

COMMAND="gcc $@"
scl enable devtoolset-7 "$COMMAND"
#!/bin/bash
# sclc++.bash
COMMAND="c++ $@"
scl enable devtoolset-7 "$COMMAND"

Setzen der Environment-Variablen, die cmake und make benutzen

$ export CC=/home/dirk/bin/sclgcc.bash
$ export CXX=/home/dirk/bin/sclc++.bash

Podcast-Hosting-Software gesucht ...

podcast

Vielleicht könnt Ihr mir helfen.

Momentan bin ich auf der Suche nach einer Podcast-Hosting-Software. Sie sollte folgende Eigenschaften haben:

  • Kein Wordpress, ich habe wirklich keine Ahnung von Wordpress und keine Zeit mich so einzuarbeiten, dass ich es sicher hosten kann und die Plugins zur Verfügung habe, die es meiner Ansicht nach für ein Blog oder einen Podcast braucht.
  • Gerne einen statischen Bloggenerator (am liebsten in Bash, Perl, PHP oder Python).
  • Kommentare sind Pflicht, meinetwegen auch durch eine selbst gehostete Kommentarfunktion.
  • Serverseitig kein Ruby, generell wäre mir eine der Skriptsprachen, in denen ich mich bewegen kann (siehe oben), lieb, aber das ist nicht zwingend.
  • Schön, aber nicht verpflichtend wäre der Podlove-Player.

DeimHart haben wir mit "meiner Blogengine" Serendipity betrieben. Leider ist der Podcast-Support immer noch sehr rudimentär, was der kleinen Zahl an Entwicklern geschuldet ist.

Gutes Markdown schreiben ...

Für einfache Texte nutze ich Markdown als Auszeichnungssprache. Das, was ich brauche, lässt sich dmit sehr gut umsetzen. Wenn es mehr sein müsste, würde ich vermutlich AsciiDoc oder reStructuredText verwenden.

Eigentlich möchte ich Markdown auch im Blog benutzen, aber über dreitausend alte Artikel möchte ich nicht gerne konvertieren.

Markdown hat sich an vielen Stellen als Standard für einfache Texte etabliert, daher lohnt sich die Beschäftigung damit. Die Beschreibung des Standard ist bei Daring Fireball zuf finden. Es gibt auch eine Seite über GitHub Flavored Markdown. Ein einfaches Markdown-Cheatsheet hilft beim Einstieg.

Heute habe ich mit markdownlint für mich vernünftig klingende Regeln für gute Markdown-Texte gefunden.