Skip to content

Applikationen unter Linux am Beispiel CentOS

centos Aus CentOS 8 wird CentOS Stream.

Über die Meldung, dass CentOS 8 zugunsten von CentOS Stream einstellt, habe ich mich sehr geärgert. Ich war sogar richtig gehend angepisst.

CentOS war immer die Möglichkeit, eigene Dinge auf Red Hat Kompatibilität zu testen, ohne Subskriptionskosten (für das Patching) bezahlen zu müssen.

Leider hat es das CentOS-Team mit der Version 8 nicht geschafft, zeitnah auf Updates und Hotfixes durch Red Hat zu reagieren und ist aus diesem Grund auch nicht mehr meine Distribution der Wahl. Mein Kram wird im Lauf der nächsten Wochen und Monate auf Ubuntu LTS migriert.

Machen wir uns aber bitte nichts vor. CentOS ist keine "schöne" Linux-Distribution. Das Tooling ist nicht so berühmt. Durch die lange Unterstützung und die durch Red Hat versprochene API-Kompatibilität über die ganze Laufzeit veraltet Software in Red Hat Enterprise Linux (RHEL) und damit auch in CentOS sehr schnell. (Gilt übrigens für andere paketbasierte Distributionen im gleichen Mass, die helfen sich nur mit häufigeren Releases).

RHEL (CentOS) möchte man eigentlich nur aus genau einem Grund einsetzen, nämlich, dass nahezu jede Business-Software für RHEL zertifiziert wird. Und aufgrund der versprochenen Kompatibilität ist es nahezu garantiert, dass sie auch über die komplette Laufzeit das Major-Releases von zehn Jahren bzw. 13 Jahren mit extended Support auch lauffähig bleibt.

Wenn man aktuelle Open-Source-Software auf CentOS einsetzen möchte, so konnte man sich nur dadurch behelfen, dass man entweder darauf vertraut hat, dass die irgendwann in den Software-Kollektionen aufgeschlagen ist, da wurde sie dann "neben" der Basisinstallation installiert oder dass man externe Repositories verwendet hat. Bei meinen Servern habe ich beispielsweise PHP aus den Remi Repositories, sowie Docker und MariaDB direkt vom Hersteller bezogen.

Das hat auch Red Hat erkannt und mit Version 8, Modules oder "Application Streams" eingeführt. Hier gibt es eine sehr gute englischsprachige Erklärung dazu. Kurz zusammengefasst, lassen sich mit diesem Konzept mehrere Versionen der gleichen Software parallel installieren und auch benutzen.

Vermutlich hat dieses neue Konzept die Ressourcen vom CentOS-Projekt gesprengt, ich habe keinen Beweis für diese Vermutung. Für mich ist dieses Konzept aber nur ein Zwischenschritt auf dem Weg, das Basis-Betriebssystem komplett vom Applikationsteil zu trennen.

Im Grossen und Ganzen: Kernel, Netzwerk, Infrastruktur (Backup, Authentifizierung, ...) macht die Distribution und den ganzen Rest können Applikationen alleine besser.

Wenn wir die Distributionen nur als stabile Basis ansehen, auf der wir Dienste mit den Hersteller-Repositories (Docker, MariaDB, ...) oder Snaps, Flatpaks und AppImages oder Containern (Docker, Podman, ...) aufsetzen, dann würden wir allem gerecht werden.

Es entspricht einer Trennung von Applikation und Plattform, die in vielen Firmen trotz DevOps immer noch betrieben wird. DevOps bezieht sich im Grossen und Ganzen auch mehr auf Applikationsentwicklung und -betrieb. DevOps (oder EngOps) für die Plattformentwicklung ist davon getrennt.

Wenn wir diese Sichtweise weiterspinnen, werden paketbasierte Linuxdistributionen obsolet.

Wohin das in Summe führen kann, sehen wir mit Kubernetes (und OpenShift) oder durch den Einsatz von Containern (mit Docker oder Podman oder ...).

Kubernetes ist es egal, auf welchem linuxbasierten OS es läuft, wenn die Voraussetzungen gegeben sind. Den Leuten, die Kubernetes benutzen (nicht verwalten), ist die komplette Infrastruktur darunter egal, so lange das Cluster zur Verfügung steht.

Und, die alten erinnern sich, das hatten wir schon einmal, aber nicht ganz so ausgereift.

Java hat den Ruf (weitestgehend) plattformunabhängig zu sein. Klar, dafür muss man mit der Runtime (JRE) oder dem JDK auch ein halbes OS mitinstallieren. Darauf kann man Applikationsserver wie Tomcat, JBoss, Weblogic, Websphere, ... betreiben und auch da gab es das Versprechen, sich nicht um die darunter liegenden Schichten kümmern zu müssen.

Meiner Meinung nach wurde dieses Versprechen nie komplett eingelöst, obwohl sehr viele gute Konzepte vorhanden waren.

Mit Containern und Orchestrierungslösungen sind wir aber der Erfüllung dieses Versprechens einen Schritt näher gekommen.

Bin an Euren Meinungen und einer Diskussion darüber sehr interessiert.

Server OS LifeCycle

linux

Meine Server laufen seit etwa fünf Jahren unter CentOS 7. In der Zeit gab es ordentlich Updates und tatsächlich keine Probleme, die auf der Software basierten.

Eigentlich läge damit CentOS 8 als neues Betriebssystem für die Server nahe. Allerdings schreibt schon Michael Kofler, dass CentOS 8 über sechs Wochen ohne Updates war und wirft Oracle Linux in die Waagschale.

Das hört sich auf den ersten und zweiten Blick komisch an, ist es auch. Aber Oracle bietet sein Linux als FLOSS-Lösung an, die gratis ist, solange man kein System hat, bei dem man für den Support durch Oracle bezahlt. In dem Fall werden alle Instanzen kostenpflichtig. Komisches Modell, oder?

Nebenbei: Ich nutze sehr gerne VirtualBox, ebenfalls von Oracle, da muss man aufpassen, dass sich die Lizenzbestimmungen mit der Nutzung des Extension Packs ändern.

Also, was tun?

Der Vorteil von CentOS war und ist, dass es sehr lange (rund zehn Jahre) unterstützt wird und tatsächlich bin ich auch noch nicht in der Not zu wechseln. Der Support für CentOS 7 läuft erst am 30. Juni 2024 (Tabelle) aus, also erst in viereinhalb Jahren. Der Nachteil ist, dass CentOS über die Lebenszeit garantiert, API-kompatibel zu bleiben, was zum Teil in sehr alter Software resultiert (Tabelle bei DistroWatch. Das wiederum bedeutet, dass man reichlich Fremdrepositories verwenden muss - bei mir EPEL, die Remi-Repostitories für PHP und Repos für MariaDB - um halbwegs aktuelle Webanwendungen betreiben zu können. Das Web ist voll von Fragen, wie man eine bestimmte Software unter CentOS zum Laufen bekommt.

Also Plan A ist, bei CentOS zu bleiben. Die "Synergien" zwischen dem, was ich beruflich mache(n muss), nämlich Red Hat Enterprise Linux zu betreiben, und dem, was ich dann privat mache, sind schon sehr gross. Bedingung dafür wäre, dass es regelmässiger Updates gibt.

Plan B wäre, die Distribution zu wechseln, hier bieten sich quasi sofort Ubuntu und Debian an, wobei ich im Fall eines Wechsels zu Debian tendieren würde.

Es gibt natürlich noch einen Plan C, das wäre ein Docker (bzw. Podman) basiertes Setup. Mich würde sehr reizen, das mit Alpine Linux als Basis zu versuchen. Eine Alternative könnte sogar Fedora Core OS sein.

Kein Plan D, aber eine interessante Alternative könnte tatsächlich Fedora in der Server-Variante sein. Allerdings sind die Wechsel zwischen den halbjährlichen Releases schon sehr drastisch und bedürfen der ständigen Nacharbeit (vermute ich). Fedora auf dem Desktop ist super (langweilig), das funktioniert einfach richtig gut, selbst mit aktiviertem SELinux sind keine Nacharbeiten nötig.

Jetzt Ihr. Was wären Eure Empfehlungen? Viel wichtiger als "was" wäre mir das "warum" Ihr ein bestimmtes Server-OS empfehlt. FreeBSD oder OpenBSD wären auch noch nachdenkenswerte Varianten.

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

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
 

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

Apps für das Smartphone ...

android

Angestiftet von Thomas folgt hier eine Liste der Apps, die auf meinem Smartphone installiert sind und von mir auch genutzt werden.

Ich habe einmal nachgeschaut, die Android-Kategorie meines Blogs ist relativ verwaist, die letzte App-Übersicht ist von 2011 und für das Tablet von 2017.

Vielleicht fange ich einmal damit an, dass ich neben dem vorinstallierten Playstore von Google auch noch F-Droid verwende. Wenn ich eine neue App brauche, schaue ich zuerst dort bevor ich auf den Google Playstore zugreife. Bei vergleichbarer Funktionalität greife ich lieber zu FLOSS (Free/Libre Open Source Software).

Die folgende Liste habe mit Hilfe von List My Apps erstellt. Apps von Google gebe ich nur an, wenn ich sie auch wirklich benutze.

Die Liste ist richtig lang geworden.

Medienkonsum

  • Pocket Casts ist mein Hauptmedienprogramm, es bietet gegenüber anderen Lösungen die Möglichkeit der Synchronisation des Hörstatus, um auf der Sonos, iOS oder dem Webplayer weiterhören zu können.
  • Audible, ja, Hören spielt eine grosse Rolle auf dem Handy, ich mag Hörbücher.
  • Spotify löst Audible immer stärker ab, ich höre kaum Musik, dafür viele Wortbeiträge.
  • EasyRSS synchronisiert sich gegen eine selbstgehostete FreshRSS-Instanz.
  • wallabag ist die passende App zum selbstgehosteten Wallabag-Dienst.
  • MuPDF viewer zum Anschauen von PDFs.
  • Netflix, Smart TV und Sonos nutze ich auf dem Handy sehr selten.

Internet

Zu den folgenden Tools schreibe ich nichts, die sind eindeutig.

Chat und Messaging

Ich chatte sehr wenig, was dazu führt, dass ich pro Toll gerade einmal ein oder zwei Personen habe, mit denen ich mich austausche, SMS wird übrigens auch noch genutzt.

  • Riot.im wird immer mehr zu meinem Haupt-Messenger. Ende-zu-Ende-Verschüsselung und verschiedene Brücken, unter anderem zum IRC, machen Matrix zu einer echten Empfehlung.
  • Telegram nutze ich am zweithäufigsten, würde ich aber gerne einstellen.
  • Nextcloud Talk wird hoffentlich bald auch Benachrichtigungen können.
  • Threema und Threema QR Code Plugin
  • WhatsApp brauche ich nur für eine oder zwei handvoll Gruppenchats, vielleicht schaffe ich das mal in eine VM auszulagern und dann via Matrix zu verbinden.

Organisation

  • Bring! zur "Verwaltung" der Einkäufe.
  • Bitwarden ist mein Passwortmanager.
  • Business Calendar ist für mich der beste Kalender.
  • DAVdroid synchronisiert die Kalender und Kontakte meiner Nextcloud-Instanz mit dem Handy.
  • ICSdroid tut das gleiche für ICS-Kalender (da habe ich zwei).
  • Joplin für Notizen und kurzfristige Aufgaben, synchronisiert mit der Nextcloud.
  • Nextcloud synchronisiert meine Photos mit der eigenen Nextcloud-Instanz und verwaltet einen grossen Haufen an PDFs und E-Books. E-Books lese ich nicht mit dem Handy.

Verkehr und Karten

Social Media

Ich nutze alle drei sehr selten.

Sonstiges

  • ALDI TALK - mein Handy kann zwei SIM-Karten verwalten, Aldi-Talk nutze ich in Deutschland.
  • Authenticator zur Erzeugung des zweiten Faktors.
  • Bose Connect für Firmware-Updates meiner Kopfhörer.
  • Clash Royale ist eines der zwei Spiele, das ich ab und an spiele.
  • Gadgetbridge stellt die Verbindung zu meiner Amazfit Bip ("not so smart Watch") her.
  • MeteoSwiss für den Wetter bericht in der Schweiz.
  • PostFinance - Kontostand und Bezahlen per NFC.
  • Reise & Waren enthält die Zollbestimmungen der Schweiz.
  • SecureLogin gibt den zweiten Faktor für die Firma.
  • Stocard benutze ich für Boarding Passes und eine Kundenkarte.
  • Supercard, selten genutzte Kundenkarte.
  • WeatherPro für Wetterberichte ausserhalb der Schweiz.
  • Wetter notification für Wetter auf der Amazfit Bip, spielt mit Gadgetbridge zusammen.
  • ti5x, Taschenrechner und das erste programmierbare Gerät, das ich hatte.
  • Yafi ist das zweite Spiel, ich habe einen FICS-Account seit 1996.
  • Nutze ich sehr selten: Barcode Scanner, GoPro

Docker-Hilfe ist hilfreich ...

docker Prinzipiell finde ich es ja super, dass die Docker-Kommandos eine eingebaute Hilfsfunktion haben, aber manchmal ist die Hilfe schon anders als erwartet.

Ich war mir nicht sicher, ob ich zuerst den Quell- oder Zieltag angeben muss beim Docker-Tag-Kommando:

$ docker tag --help

Usage:  docker tag IMAGE[:TAG] IMAGE[:TAG]

Tag an image into a repository

Options:
      --help   Print usage

Hotel-WLAN ...

linux Am vergangenen Wochenende durfte ich einmal mehr in einem Hotel zu Gast sein, das ein kaputt konfiguriertes WLAN hatte. Manchmal frage ich, was die Dienstleister befürchten, wenn sie den Zugang so kastrieren.

Für mich ist elementar, dass ich via SSH auf meine Server zugreifen kann, aber Port 22 ausgehend war geblockt. Das habe ich relativ schnell in den Griff bekommen, in dem ich via "Remote Console" auf einem meiner Server sslh installiert habe. sslh nimmt Verbindungen auf Port 443 (https) an und entscheidet mit dem Handshake an welchen Dienst die Verbindung "übergeben wird". Das klappt problemlos und ziemlich gut, wenn der WLAN-Administrator nicht auf Protokollebene blockt.

Zugriff geht dann via:

ssh -p 443 user@sslh-server.example.net


Die Weiterverbindung auf andere Server lässt sich dann mittels folgendem Befehl realisieren (das geht auch transparent mit der unten aufgeführten Lösung):

ssh -o ProxyJump=user@sslh-server.example.net user@ziel.example.com


Für reine SSH-Verbindungen ist das prima, aber es gibt ja zum einen noch andere Dienste (unter anderem Usenet, Protokoll nntp, Port 119), die ich auch noch nutzen möchte.

Da kommt dann das Tool sshuttle zum Einsatz. sshuttle benutzt SSH, um darüber alle tcp-Verbindungen plus DNS mittels Paketfilterregeln weiter zu leiten. Um die lokalen Regeln anzupassen wird sudo-Zugriff auf den root-Account benötigt.

sshuttle --dns --remote=user@sslh-server.example.net:443 0/0


Für mich funktioniert das und es macht "falsch" konfigurierte Netzwerke benutzbar.

Powerline ...

linux Ich habe jetzt einmal meinen Prompt von Liquid Prompt auf Powerline umgestellt, weil es damit ein wenig konsistenter ist, da sowohl die Shell wie auch Vim und tmux unterstützt werden.

Bei Fedora 27 ist Powerline direkt dabei, bei CentOS muss man Powerline "von Hand" installieren, das Verfahren wird auch bei anderen Distributionen funktionieren.

Fedora 27:
dnf install powerline tmux-powerline vim-powerline
systemctl enable powerline
systemctl start powerline


CentOS 7:
yum install python-pip
pip install powerline-status

cd /usr/share/fonts
curl -LO https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf
fc-cache -vf /usr/share/fonts/

cd /etc/fonts/conf.d/
curl -LO https://github.com/powerline/powerline/raw/develop/font/10-powerline-symbols.conf


.bashrc
export POWERLINE_BASH_CONTINUATION=1
export POWERLINE_BASH_SELECT=1

# Fedora 27:
source /usr/share/powerline/bash/powerline.sh

# CentOS 7:
source /usr/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh


.vimrc
# Nur CentOS 7:
set rtp+=/usr/lib/python2.7/site-packages/powerline/bindings/vim/

# Fedora 27 und CentOS 7:
set laststatus=2


.tmux.conf
# Fedora 27:
source /usr/share/tmux/powerline.conf

# CentOS 7:
source /usr/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf