ubuntuusers.de

🛈 Aktuell gibt es im Wiki ca. 750 Artikel, die nur für Xenial getestet sind. Dies entspricht ca. 10 % aller Wikiartikel. Damit diese im nächsten Frühjahr nicht alle archiviert werden müssen, ist eure Mithilfe gefragt!

Neueste Artikel

gestern

Wir sind mittlerweile im Jahr 2020 angekommen. Podcasts haben sich mehr oder weniger durchgesetzt und sehr viele Leute hören nicht nur Podcasts, sondern produzieren auch selbst welche. Vor allem im Tech-Bereich gibts es gefühlt schon fast mehr als genug…

Nichtsdestotrotz – oder gerade deswegen? – dachten sich Dirk Deimeke und ich: Es wird Zeit, dass wir auch mal einen Podcast starten. Den Gedanken und die Pläne dazu hatten wir eigentlich schon vor zwei Jahren. Aber aus diversen Gründen wurde daraus erstmal nichts und wir haben es aufgeschoben. Jetzt ist aber endlich so weit.

Mittlerweile haben wir auch schon die nullte und die erste Folge veröffentlicht. In der nullten Episode erzählen wir von unseren Plänen für den Podcast.

Spoiler: es geht nicht (ausschließlich) um Open Source, sondern vor allem um Tech, aber auch um Produktivitäts- und IT-Karriere-Themen.

Die erste reguläre Episode behandelt das Thema „GitOps“ und „Keine Zeit haben“. Wie ihr aus dem Titel dieses Blogposts erkennen könnt, lautet der Name des Podcasts „TILpod“ und dieser ist unter TILpod.net erreichbar. Bevorzugt natürlich auch überall da, wo es Podcasts gibt. Die nächste, und somit zweite Episode, erscheint am 1. Januar 2021. Wir peilen also ein monatliches Release an. Hört gerne rein und lasst und Feedback da.

Links

3. Dezember 2020

Die MZLA Technologies Corporation hat mit Thunderbird 78.5.1 ein Update für seinen Open Source E-Mail-Client veröffentlicht.

Neuerungen von Thunderbird 78.5.1

Die MZLA Technologies Corporation hat Thunderbird 78.5.1 veröffentlicht und bringt damit wieder eine ganze Reihe von Fehlerbehebungen sowie kleineren Verbesserungen, die sich im Detail in den Release Notes (engl.) nachlesen lassen. Auch eine Sicherheitslücke wurde in Thunderbird 78.5.1 behoben.

Der Beitrag Thunderbird 78.5.1 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

Werbeblocker zu nutzen ist heutzutage reine Selbstverteidigung. Schließlich geht es nicht nur um optische Nervereien oder Popup-Bomben wie vor 20 Jahren, sondern um Tracking und Profilbildung. Problematisch wird es, sobald man den Browser verlässt. Hier schließt KDE mit einem Adblocker für KDEPIM eine Lücke.

Tracking tritt schließlich nicht nur beim "freien" surfen im Internet auf, sondern kann überall erfolgen. Im Heimnetz mag da ein Pi-Hole helfen, aber unterwegs sieht das schon wieder anders aus. Unter Linux gibt es kaum Werbung in Programmen und massenhaftes Abgreifen von Telemetriedaten ist auch kein großes Problem. Wobei es durchaus prominente Gegenbeispiele wie z. B. Firefox gibt aber das sei nur am Rande erwähnt. Zwei relevante Baustellen sind aber E-Mails und RSS-Feeds. Erstere können bei HTML Mails und etwaigen nachgeladenen Bildern ausgewertet werden und Letztere enthalten inzwischen oftmals rudimentäre Browser, da viele Feeds nur noch gekürzt ausgeliefert werden. Hier bietet KDE mit dem integrierten Adblocker einen Basisschutz gegen Werbung und Tracking.

Bei den meisten Distributionen dürfte es mit KDEPIM automatisch mitinstalliert werden, ansonsten empfiehlt es sich nach einem Paket mit dem Namen kdepim-addons oder ähnlich zu suchen.

Die Einstellungen finden sich etwas versteckt in KMail unter Einstellungen / Module ganz unten.

Es wäre natürlich nicht KDE, wenn es alles fehlerfrei funktionieren würde. Der kleine Fallstrick ist erst die Option zu aktivieren und anschließend per OK zu bestätigen. Anschließend öffnet man das Modul wieder und fügt Filterlisten hinzu. Unterlässt man diesen Zwischenschritt, lassen sich keine Filterlisten hinzufügen. Bei den Listen hat man eine recht große Auswahl, ich persönliche habe jetzt mal EasyList und die Extraliste für Deutschland ausgewählt.

Dieses Modul ist schon für KMail sehr nett, aber da es sich auf die Webengine bezieht, steht es auch in Akregator zur Verfügung. Hier befreit es wirkungsvoll von den ganzen Werbebannern und Trackern, die zunehmend sogar in Volltextfeeds eingebunden werden.


Bilder:
Einleitungsbild und Beitragsbild von von 200 Degrees via pixabay 

"

2. Dezember 2020

Seit einem Monat gibt es den Raspberry Pi in einer Desktop-Ausführung. Das Gerät ist in eine Tastatur integriert, was Erinnerungen an die Home-Computer-Zeit wach werden lässt. Der Computer wird nicht zufällig mitten in der Corona-Epidemie ausgeliefert: Die Raspberry-Pi-Foundation hofft, dass das Gerät kostengünstig für das Home Schooling verwendet werden kann.

Heute ist der vor genau einem Monat bestellte Raspberry Pi 400 endlich eingetroffen. Der erste Eindruck: Eine verblüffend große, schwere Schachtel. Das Gewicht erklärt sich durch das beigelegte Einsteigerhandbuch, die Größe durch die vielen, z.T. einzeln verpackten Komponenten: Computer, Maus, Netzteil, HDMI-Kabel. Die 16 GiB große SD-Karte mit vorinstalliertem Raspberry Pi OS steckt bereits im Gerät.

Der Raspberry Pi samt Zubehör

Für alle, die nicht schon ein Dutzend Testberichte gelesen haben, nochmals kurz die Eckdaten:

  • Tastatur mit integrierten Raspberry Pi 4B
  • 4 GiB RAM
  • SoC: BCM2711 mit 1,8 GHz (der Raspberry Pi 4B läuft mit nur 1,4 GHz)

Hardware

Das Erscheinungsbild des Rechners ist sympatisch. Ich finde, das Himbeer-Rosa passt zum Raspberry Pi.

Die Tastatur ist OK, kann aber vom Ansprechverhalten nicht mit meinem persönlichen »Goldstandard«, der alten USB-Alu-Tastatur von Apple, mithalten. Beim Tastaturlayout irritiert die Platzierung der Tasten Fn, Ctrl und Alt. Sowohl mein Lenovo-Notebook als auch die schon erwähnte Mac-Tastatur verwenden eine andere Reihenfolge. Ich weiß nicht, wem ich die Schuld geben soll, aber es wäre einfach praktisch, wenn nicht jede Tastatur sein eigenes Layout verwenden würde.

Positiv: Mit Fn+F10 kann der Rechner aus- und später wieder eingeschaltet werden. Die Tastenkombination muss einige Sekunden lang gedrückt werden. Es besteht also keine Gefahr, das Gerät versehentlich auszuschalten.

Irritierend: Sämtliche Kabel (Maus, HDMI, Stromversorgung) sind unangenehm dick und steif.

Der Raspberry Pi 400 (oben) und die Apple-Alu-Tastatur

Schnittstellen

Im Prinzip hat der Raspberry Pi 400 dieselben Schnittstellen wie ein Raspberry Pi 4B, aber es gibt ein paar kleine Abweichungen:

  • Eine USB-2-Buchse fehlt. (Die wird intern für die Tastatur verwendet.)
  • Der Audio-Ausgang (3,5mm) fehlt. Der Raspberry Pi 400 kopiert hier das iPhone :-(
  • Der Anschluss für die Kamera fehlt.

Bei den letzten beiden Punkten kann man argumentieren, dass man die Anschlüsse beim Desktop-Einsatz ohnedies nicht braucht. Andererseits: Eine selbstgebaute Webcam für Video-Konferenzen und die Möglichkeit, einen alten Kopfhörer anzuschließen, wären gerade für’s Home Office oder Home Schooling durchaus praktisch. Ein USB-Headset tut’s natürlich auch.

Ärgerlich: Die verbliebene USB-2-Buchse, wo man in der Regel die Maus anschließen wird, befindet sich ganz links. Zumindest für Rechtshänder wäre ganz rechts vernünftiger.

Ein Blick auf die Schnittstellen

Persönlich bin ich immer noch der Meinung, eine normale HDMI-Buchse wäre gescheiter als zwei HDMI-Mini-Buchsen, aber sei’s drum: Wer den Raspberry Pi 400 als Kit bestellt, bekommt immerhin ein passendes HDMI-Kabel mitgeliefert. Hilfreich wäre eine Nummerierung der Buchsen (1, 2, noch besser: Main, Secondary). Dann wüsste man, welche der beiden Buchsen man verwenden soll. Ein Wechsel im laufenden Betrieb funktioniert nicht — da heißt es neu starten …

Tipp: Die richtige HDMI-Buchse ist die, die sich näher beim USB-C-Stromanschluss befindet.

Die GPIO-Anschlüsse sind verfügbar. Wer den Pi 400 zum Basteln verwenden will, sollte die GPIO-Anschlüsse mit einem Flachbandkabel nach außen führen und mit einem Breadboard-Adapter verbinden.

Software

Auf dem Raspberry Pi 4 läuft das vertraute Raspberry Pi OS (ehemals Raspbian) im 32-Bit-Modus. Mit 4 GB RAM fühlen sich viele Programme deutlich flüssiger an — wenn sie einmal laufen. Der Startprozess ist — bedingt durch die SD-Karte — lahm wie eh und je.

Grundsätzlich ist der Pi 400 wegen der etwas höheren Taktfrequenz schneller als der Pi 4B. Aber während mich die Geschwindigkeit des Pi 4Bs nie gestört hat (weil das für mich ein Bastelrechner ist, oder weil ich ihn ohnedies über ein Terminal steuere), fühlt sich der Pi 400 langsam an. (Ich weiß, das klingt absurd.) Aber der Pi 400 ist für den Desktop-Einsatz gedacht, und so habe ich ihn auch getestet: Webbrowser gestartet, versucht auf YouTube ein Video anzusehen (hat funktioniert, aber nicht im Vollbildmodus), LibreOffice gestartet, Gimp installiert und ebenfalls gestartet etc. Im Prinzip alles OK, aber eben auch alles spürbar langsamer als auf meinen anderen Rechnern. Das Speichern einer großen PNG-Bitmap in Gimp dauert gefühlt ewig.

Raspberry Pi Desktop auf einem 4k-Monitor

Angesichts des Preises ist das Jammern auf hohen Niveau. Aber persönlich wollte ich auf dem Pi 400 nicht dauerhaft arbeiten. Und ich habe Zweifel, ob Schulkinder damit glücklich würden. Für Video-Konferenzen, womöglich mit Microsoft Teams im Webbrowser, ist der Pi 400 definitiv nicht das ideale Gerät.

WLAN-Probleme

Während meines Tests ist ein Problem aufgetreten, das ich nicht lösen konnte: Der Pi 400 war nicht in der Lage, eine WLAN-Verbindung zu der weniger als einen Meter entfernten FritzBox herzustellen. Der Verbindungsaufbau zu einem anderen Access Point gelang aber problemlos. Merkwürdig. Mein Pi 4B macht diesbezüglich keine Probleme.

Fazit

Die schwierige Frage ist: Für wen ist dieser Computer eigentlich gedacht? Bastler werden damit nicht glücklich werden; der »normale« Raspberry Pi 4B ist in diesem Fall vorzuziehen. Desktop-Anwender werden aber wohl auch nicht laut »Hurra!« schreien, wenn sie ernsthaft auf diesem Gerät arbeiten müssen.

Toll:

  • Der Preis
  • Ansprechendes Gehäuse
  • Absolut lautlos
  • Endlich mit Ein/Aus-Schalter (Fn+F10)

Nicht so toll:

  • Als Desktop-Rechner lahm
  • Für Video-Konferenzen ungeeignet
  • Aktuell schwer lieferbar
  • Merkwürdige Schnittstellenauswahl und -platzierung
  • Nichts für Bastler

1. Dezember 2020

Notizen will man gerne auf jedem Gerät dabei haben, je nach gespeicherten Informationen handelt es sich dabei aber um nichts was man einer Public Cloud anvertrauen möchte. Synology bietet für solche Zwecke mit der Notes Station eine adäquate Lösung.

Bei der Notes Station handelt es sich um eine Anwendung wie Drive oder der Kalender. Der Name deutet aber schon an, dass sie zu den Legacy-Anwendungen gehört. In einer Reihe mit abgekündigten bzw. ersetzten Sachen wie der Cloud Station. Die Notes Station wird aber noch gepflegt und ist nicht offiziell abgekündigt, weshalb - mangels Alternativen - ein Einsatz immer noch ratsam ist.

Nach der Installation kann man die Notestation entweder direkt in der Übersicht des DSM aufrufen oder via Desktopanwendung, sowie natürlich den obligatorischen Apps für iOS und Android. Die Desktopanwendung steht für Linux, macOS und Windows zur Verfügung. Leider integriert sie sich optisch nicht sonderlich gut in die jeweilige Desktopumgebung.

Der Funktionsumfang ist ansonsten allerdings sehr gut. Es lassen sich Notizen vielfältig formatieren und in verschiedenen Notizbüchern anlegen. Die üblichen Ordnungsfunktionen wie Tags, Verknüpfungen mit Standorten etc. sind vorhanden. Die Notizbücher können bei Bedarf auch frei gegeben werden. Zusätzlich eignet sich das Programm als ToDo-Verwaltung. Hier macht sich aber die fehlende Desktopintegration bemerkbar, was sich bei Benachrichtigungen etc. äußert.

Zwischen Desktopanwendung und mobilen Apps herrscht Feature-Parität, was sehr schön zu sehen ist. Leider gibt es die Android App nur im Play Store, wodurch Anwender mit AOSP+F-Droid Kombinationen außen vor sind (oder sich die App über Umwege holen müssen).


Bilder:
Einleitungs- und Beitragsbild von talha khalil via pixabay 

"

Und noch eine Kryptowährungsnachricht, heute sicherlich die letzte. ;)

Ethereum, ebenfalls eine Open Source-Kryptowährung, die ihren Fokus auf Smart Contracts in einer Form von „Cloud Computing für alle (und mit allen, die eine Node betreiben)“ legt, hat die Phase 0 des Umstiegs auf Ethereum 2.0 abgeschlossen.

Dabei geht es darum, vom Proof-of-Work (PoW) auf den Proof-of-Stake (PoS) umzustellen. Kurz zusammengefasst, was die beiden Konsensalgorithmen bedeuten: beim Proof-of-Work muss jeder Block „gemined“ werden, also eine bestimmte Nonce ermittelt werden, mit der der kryptographische Hash des Blocks eine bestimmte Anzahl an führenden Nullen hat (siehe auch mein Video dazu). Das Suchen dieser Nonce verursacht einen gewissen Aufwand und es gilt im Protokoll der Branch als „wahr“, in den der meiste Aufwand gesteckt wurde. Anders Proof-of-Stake: hier können kapitalstarke Nutzer ihre Ether in einen Contract einzahlen und somit das Privileg erhalten, den nächsten Block auszuwählen. Konkret nimmt man an einer Art Lotterie teil und hat die Chance, als Gewinner einer Ziehung den nächsten Block zu bestimmen. Hält man sich dabei an vorher aufgestellte Regeln, erhält man einen Anteil der Transaktionskosten, hält man sich nicht an die Regeln, wird (soweit mir bekannt mindestens ein Teil) des eingezahlten Geldes einbehalten. Soviel zu den Anreizen des Konzepts.

Heute fiel der Startschuss für die Migration von Proof-of-Work zu Proof-of-Stake, die noch einige Jahre andauern wird. Der erste Block wurde um ca. 13:00 deutscher Zeit „validiert“, wie es zukünftig statt „gemined“ heißt.

Es gibt nun für diese spezielle Beacon Chain, in der das Proof-of-Stake-Verfahren abläuft, einen eigenen Explorer, der unter beaconscan.com erreichbar ist.

Die Umstellung auf Proof-of-Stake wird nun schon seit gut 6 Jahren vorangetrieben. Die ersten Konzepte hierzu stammen aus dem Jahr 2014. Vom neuen Konsensalgorithmus wird sich ein geringerer Ressourcenaufwand erhofft, um die Skalierbarkeit zu gewährleisten.

Quelle: Cointelegraph

Kurze News aus der Welt der Kryptowährungen: Libra, die durch den Facebook-Konzern bekanntgewordene Internetwährung, wird in Diem umbenannt. Dies wurde heute in Genf bekanntgegeben.

Mit der Namensänderung solle eine Unabhängigkeit signalisiert werden, so der CEO Stuart Levey. Diem ist lateinisch und bedeutet „Tag“. Momentan stehen weiterhin die Genehmigungen der Schweizer Behörde FINMA für eine Einführung des Tokens aus.

Zum Projekt gehört die gleichnamige in Rust geschriebene und unter der Apache 2.0-Lizenz lizenzierte Software, die weiterhin unter https://github.com/libra/libra abgerufen werden kann. Die Namensänderung wird zeitnah auch dort umgesetzt.

Diem verfolgt weiterhin das Ziel, eine sichere Komplementärwährung aufzubauen, die von Nutzern und Unternehmen auf der ganzen Welt eingesetzt werden kann.

weitere Quelle: Reuters

Vor einigen Monaten habe ich in einem kleinen Artikel auf eine bedenkliche Funktion im Pi-Hole hingewiesen (siehe: Pi-Hole - Angriff auf die Privatsphäre im Netzwerk). Die Reaktionen fand ich sehr überraschend, zeigen sie doch ein offensichtliches Haltungsproblem auf.

Es ging um den Query-Log. Eine Funktion, bei der das Pi-Hole simplifiziert gesagt protokolliert was so aufgerufen wird. Eine Funktion, deren Aktivierung auch renommierte Blogger empfehlen. Im Klischee wohnen Nerds natürlich in Kellern ohne Fenster und haben keine Familie. In der Realität sieht das halt meist anders aus und solche Veränderungen am Heimnetz betreffen nicht nur den "Netzadministrator", sondern auch alle Mitnutzer. Meist also Familie, Mitbewohner und ggf. Freunde, sofern diese Zugang bekommen. Ich gab zu bedenken, dass auch diese Menschen ein Recht auf Privatsphäre haben und das Pi-Hole eine ziemlich einfache Lösung (deshalb ist ja gegen Tracking auch so beliebt) zur Überwachung des Netzwerkes ist. Natürlich gibt es dazu auch zig andere Lösungen, aber kaum eine wird so oft und so prominent - vor allem auch dezidiert für Laien - im Internet beworben und kann bei Amazon zusammen geklickt werden.

Darum soll es aber heute nicht gehen. Ich weiß nicht, wo der Artikel verlinkt wurde (ich sammel schließlich keine Daten über meine Leser und erstelle keine Statistik), aber nur wenige Blogposts bekommen nach so vielen Monaten noch Kommentare oder spülen E-Mails in mein Postfach. Die Kommentare kann ja jeder lesen, die E-Mails gingen in eine ähnliche Richtung. Alles frei nach dem Motto: Böse, das ist was Google, Microsoft, Apple & Co machen - ich habe keine bösen Absichten, sondern will mich schützen.

Wenn man als Datenschutzbeauftragter tätig war, weiß man wie weit verbreitet diese Einstellung ist. Daten fallen durch unsere digitalen Arbeitsprozesse heute massenhaft an, dort wo sie noch nicht anfallen, kann man sie meist schnell erzeugen und sie sind mit wenig Aufwand und Kosten auswertbar. Das weckt unfassbar viele Begehrlichkeiten. Hier der Abteilungsleiter, der gerne etwas mehr über das Arbeitsverhalten seiner Angestellten wissen möchte, dort eine Teamleiterin mit Auswertungswünschen über Kunden/Benutzer oder auch nur der oder die Angestellte, der/die den neuen Freund der Tochter über die Kundendatenbank sucht. Alle sind immer komplett erstaunt, wenn man als Datenschutzbeauftragter ein vehementes "Nein" zu den Plänen sagt und auf die Rechte der Betroffenen verweist. Gut, ehrlicherweise sagt man selten "nein", sondern verweist auf die notwendige Zustimmung von Betriebsrat/Personalrat und der Rechtsabteilung, was ungefähr das gleiche bedeutet. Man hat doch nichts Böses im Sinne.

Kaum jemand sagt von sich selbst, dass er Daten mit bösen Absichten erhebt. Jeder hat gute Absichten oder gibt diese wenigstens vor. Die Kette derjenigen, die so argumentieren reicht hier tatsächlich von den Geheimdiensten über die großen Konzerne bis zum normalen Menschen in seiner Funktion als Arbeitnehmer oder Privatperson, sobald sie über einen kleinen Datenbestand mit den personenbezogenen Daten Dritter verfügt. Die digitale Welt ist nämlich nicht so böse geworden, weil dort eine böse Verschwörergruppe am Werk ist (so etwas glauben nur Anhänger von Verschwörungserzählungen) sondern weil viele Akteure mit zu wenig Problembewusstsein aktiv sind oder im Zweifelsfall Datenschutz/Privatsphäre geringer gewichten als andere Faktoren.

Am Beispiel des Pi-Hole: Das Interesse, wenig Daten an Google oder Microsoft zu schicken überwiegt scheinbar nach Meinung vieler das Recht der Mitnutzer meines Netzwerks auf Privatsphäre.

Also überspitzt gesagt: Das Problem bist Du!


Bilder:
Einleitungsbild und Beitragsbild von von 200 Degrees via pixabay

"

30. November 2020

Tracebacks helfen in Python beim Aufspüren von Fehlern nach einer nicht abgefangenen Exception. Nachteil ist allerdings, dass die standardmäßige Ausgabeform dieses Hilfsmittels nicht so aussagekräftig ist wie z. B. eine GDB-Session: so werden nur der Aufrufstack sowie die konkrete Exception angezeigt.

Oftmals ist man allerdings an bestimmten Variablen interessiert, die einen bestimmten edge case erzeugen, der zum Absturz führt. Mit klassischen Tracebacks kommt man da nur schwerlich weiter und behilft sich, indem man eigene Ausnahmebehandlungen (except) einfügt, welche dann z. B. die Variablen im Fehlerfall anzeigen.

Es gibt allerdings auch weitaus angenehmere Möglichkeiten, um dies umzusetzen. Zwei beispielhafte Tools möchte ich euch kurz in diesem Artikel vorstellen. Hierzu verwende ich folgendes Programm, welches bei bestimmten Werten zu einer ZeroDivisionError-Exception führt.

# hier werden dann die traceback helper importiert

def foo(x, y):
    z = y - 3
    return bar(x, z)

def bar(x, y):
    return baz(x, y + 1)

def baz(x, y):
    return x / y

foo(1, 2)

traceback_with_variables

traceback_with_variables ist ein Python-Package, welches die oben angesprochene Exception-Meldung gegen eine andere austauscht. Der Fokus liegt hierbei auf der Anzeige der Variablen. So werden direkt im Traceback alle relevanten Variablen im Kontext für jedes Element im call stack angezeigt, sodass edge cases klar identifziert werden können.

Der Einsatz dieses Packages gestaltet sich relativ einfach, da nur ein Import genügt, um die Funktionalität zu aktivieren:

from traceback_with_variables import activate_by_import

Diese Tracebacks sehen dann folgendermaßen aus.

Traceback with variables (most recent call last):
  File "/tmp/demo.py", line 15, in <module>
    foo(1, 2)       
      __name__ = '__main__'
      __doc__ = None
      __package__ = None
      __loader__ = <...>  # gekuerzt fuer den Blog
      __spec__ = None   
      __annotations__ = {}
      __builtins__ = <module 'builtins' (built-in)>
      __file__ = '/tmp/demo.py'
      __cached__ = None
      activate_by_import = <> <...>  # gekuerzt fuer den Blog
      foo = <function foo at 0x7f65076ca040>
      bar = <function bar at 0x7f65073a2670>
      baz = <function baz at 0x7f65073a2820>
  File "/tmp/demo.py", line 7, in foo
    return bar(x, z) 
      x = 1
      y = 2
      z = -1
  File "/tmp/demo.py", line 10, in bar
    return baz(x, y + 1)
      x = 1         
      y = -1
  File "/tmp/demo.py", line 13, in baz
    return x / y        
      x = 1
      y = 0   
builtins.ZeroDivisionError: division by zero

Stackprinter

Ein weiteres Package, welches in ähnlicher Art und Weise hilft, ist stackprinter. Stackprinter muss zur Aktivierung importiert und manuell aktiviert werden:

Dieses Python-Package zeigt ebenfalls für jede Aufrufebene die Variablen im Kontext an, ergänzt dies allerdings bereits in der Standardkonfiguration um Codesnippets, sodass das Debugging ebenfalls deutlich vereinfacht werden kann. Somit wird ein Komfort ermöglicht, der sonst nur von z. B. IDEs bekannt ist.

Tracebacks sehen dann so aus:

File "/tmp/demo.py", line 15, in <module>
    11   
    12   def baz(x, y):
    13       return x / y
    14   
--> 15   foo(1, 2)

File "/tmp/demo.py", line 7, in foo
    5    def foo(x, y):
    6        z = y - 3
--> 7        return bar(x, z)
    ..................................................
     x = 1
     y = 2
     z = -1
    ..................................................

File "/tmp/demo.py", line 10, in bar
    9    def bar(x, y):
--> 10       return baz(x, y + 1)
    ..................................................
     x = 1
     y = -1
    ..................................................

File "/tmp/demo.py", line 13, in baz
    12   def baz(x, y):
--> 13       return x / y
    ..................................................
     x = 1
     y = 0
    ..................................................

ZeroDivisionError: division by zero

Sentry

Während die obigen Python-Packages besonders bei der Entwicklung helfen, ist Sentry konzeptionell eher für die Fehlersuche in Production-Umgebungen gedacht. Hier werden die Fehler an eine Webanwendung gemeldet, von wo aus der Traceback samt Codeauszug analysiert werden kann. Auf Programmseite kommt das Sentry Python SDK dann zum Einsatz.

Sentry ist weitaus aufwändiger zu installieren, soll allerdings an dieser Stelle nicht unerwähnt bleiben.

Fazit

Für das klassische Debugging auf dem Terminal gibt es einige Packages, die die Standard-Exception-Meldung gegen eine eigene austauschen können und somit die Entwicklung weiter vereinfachen. Dabei gibt es verschiedene Lösungen, die auch verschieden komplex implementiert werden können. Am Ende kommt es jedoch auf die persönlichen Präferenzen sowie auf die Umgebung an, in der die Tracebacks angezeigt bzw. gesammelt werden sollen.

Einer der zentralen Bestandteile der E-Mail Verschlüsselung mittels OpenPGP/GPG basierte auf dem Web of Trust. Im Gegensatz zur Konkurrenz S/MIME setzte man eben nicht auf ein hierarchisches Zertifikatssystem. Das Web of Trust scheiterte spektakulär 2019.

Damals wurden nämlich die SKS-Keyserver über die öffentliche Schlüssel verteilt werden konnten gezielt angegriffen (siehe: Kommentar: OpenPGP Keyserver - Letzte Zuckungen). Kernproblem: Die Software zum Betrieb der Keyserver war quasi unwartbar. Die Entwicklercommunity veröffentlichte deshalb ein neues Keyserver-Modell, das sich durch eine Mailadressenüberprüfung auszeichnete und keine Signaturen mehr verteilte (eben die Abschaffung des Web of Trust).

Ich konnte mir schon damals folgenden Kommentar nicht verkneifen:

Durch die Dezentralisierung des Protokolls dauert es aber viel zu lange bis diese Entwicklungen beim Anwender ankommen. Alle Implementierungen müssen schließlich die voreingestellten Keyserver auswechseln. Selbst wenn die Entwickler das wirklich machen (was noch nicht gesichert ist) dauert es Jahre bis das alle Anwender erreicht - sofern diese überhaupt noch ihre Clients aktualisieren bzw. überhaupt noch aktiv gepflegte Programme nutzen.

Ich hab die letzten Wochen ein paar Neuinstallationen mit verschiedenen Linux Distributionen vorgenommen (siehe: Erfahrungen mit dem ASUS ZenBook 14 UM425IA). Außer Manjaro setzen alle Distributionen bei der zentralen Schlüsselverwaltungssoftware von KDE, namens Kleopatra, immer noch auf SKS-Keyserver. Das bedeutet erstens niemand hat Upstream etwas an den Standardkonfigurationen geändert hat und sich auch niemand bei den Distributionen die Arbeit machen wollte.

Bei ein bisschen Recherche konnte ich nur feststellen, dass wohl Enigmail damals schnell reagiert hat. Wie da der aktuelle Stand ist bleibt aber unklar, da die OpenPGP-Integration in Thunderbird kürzlich massiv umgebaut wurde (siehe: Thunderbird nun offiziell mit OpenPGP). Wie das bei den anderen Implementierungen aussieht kann ich nicht sagen. Vielleicht weiß dazu hier jemand mehr?

Das soll jetzt kein Plädoyer für S/MIME sein, denn dort gibt es ebenfalls große Probleme (siehe: S/MIME - Eine Verschlüsselungsoption weniger). Es zeigt halt einfach wie Tod das ganze Konzept inzwischen ist. Man kann es gleich neben dem Pendant für Echtzeitkommunikation XMPP beerdigen.

"

Beim Aufsetzen von Bullseye habe ich so eine rundumsorglos iso genommen (firmware-bullseye-DI-alpha2-amd64-netinst.iso) und dabei eine mit asiatischen Manuals (+ de und en) erwischt :-(

Wenn ich richtig aufgepasst habe, ist  localepurge nun leicht anders zu handhaben.

Es dient ja dazu unbenutzte Manual Seiten und etc von Fremdsprachen zu entfernen und nur die ausgewählten zu erhalten.

Beim Installieren von  localepurge wird man gefragt, ob man es mit dpkg benutzen will.

Sagt man da ja, tut es nichts für bereits installierte Pakete, was nicht in meinem Sinne ist, also dpkg-reconfigure localepurge aufrufen "Nein" auswählen, dann in der Console starten und dann wieder mit dpkg-reconfigure localepurge den dpkg Support wieder einschalten.

Ergebnis hier: 

Total disk space freed by localepurge: 790128 KiB

29. November 2020

Version 8 der speziell für Webseiten beliebten Programmiersprache ist erschienen. In diesem Artikel werden wir einen kurzen Blick auf die Neuerungen werfen.

PHP sollte den meisten ein Begriff sein. Ursprünglich angedacht als Werkzeug zur Verarbeitung von Formulardaten, ist die Programmiersprache heute weit verbreitet und schwer aus dem Internet wegzudenken. Applikationen wie WordPress, MediaWiki, phpMyAdmin, phpBB, aber auch Internetportale wie Facebook basieren zu einem Großteil auf dieser Skriptsprache.

Nun wurde Version 8 veröffentlicht. Das PHP-Team präsentiert die wichtigsten Änderungen auf einer eigens dazu eingerichteten Webseite. Werfen wir einen kleinen Blick auf die Änderungen.

Die Änderungen im Kurzüberblick

Eines der Aushängeschilder ist der neue Just-in-time-Compiler (JIT), der Performanceverbesserungen ermöglichen soll. Diese Verbesserungen können allerdings anwendungsabhängig sein.

Viele der neu eingeführten Features sind schon von anderen Programmiersprachen bekannt. So werden sog. named arguments eingeführt, die stark an die keyword arguments aus Python erinnern. Damit wurde eine Alternative zu den klassischen positionsabhängigen Argumenten geschaffen, sodass ab sofort Funktionsaufrufe so gestaltet werden können, dass die Bedeutung der einzelnen Argumente sofort deutlich wird.

Die Arbeit mit Klassen wurde in zweierlei Hinsicht verbessert: zum einen verbindet die neue constructor property promotion Ideen aus C++ und Python, bei der die Klassenattribute ausschließlich als Parameter im Konstruktor deklariert und mit Standardwerten versehen werden können. Somit entfällt die Deklaration in der Klasse und die Wertzuweisung im Rumpf des Konstruktors.

Zum anderen verbessert PHP 8 die Typsicherheit in Klassen. Mit den union types können mehrere erlaubte Typen für eine Variable festgelegt werden.

Zwei weitere Verbesserungen sind die aus Rust sowie vielen funktionalen Programmiersprachen bekannten match expressions, die eine Alternative zur switch-Anweisung darstellt. Weiterhin wird der nullsafe operator $foo?->bar?->baz eingeführt, der if (... !== null)-Kaskaden ersetzen soll.

Während die bisher aufgezählten Änderungen Ergänzungen oder Vereinfachungen für die Sprache darstellen, enthält dieser Release auch breaking changes, mit denen vor allem die API geradegerückt wird: so wird ein String-Zahl-Vergleich nun nicht mehr pauschal mit true beantwortet, sondern nur noch, wenn der String als Zahl umgewandelt im Vergleich wahr ist. Das würde z.B. auf 0 == "0", aber auch 0 == "0.0" zutreffen. Dieses Verhalten erinnert an JavaScript mit den beiden Operatoren == (Vergleich mit erlaubter Umwandlung) sowie === (Vergleich ohne erlaubte Umwandlung).

Darüber hinaus wurden Typfehler konsistenter gestaltet sowie eine Vielzahl an kleineren Änderungen eingearbeitet.

Einschätzung

PHP begleitet mich nun seit mittlerweile 10 Jahren. Dabei hat die Sprache in diesen Jahren einen bemerkenswerten Wandel hingelegt. Angetreten als simples Server Side Scripting reift die Sprache in den letzten Jahren aus und wird für größere Projekte attraktiver, wobei aus meiner Sicht besonders das verbesserte Typensystem dazu beitragen kann.

Von starker und statischer Typisierung ist diese Sprache noch ein gutes Stück entfernt, was Vor- und Nachteile haben kann. Eine Möglichkeit anzubieten, auf Wunsch statischere Typisierung zu nutzen, ist allerdings begrüßenswert – dass String-Zahl-Vergleiche trotzdem noch schwächer typisiert bleiben, aber schade.

Entscheidend bei der Verbreitung wird allerdings auch der Fakt sein, dass bestehender Code aufwändiger auf PHP 8 migriert werden muss als es noch bei vorherigen Versionen der Fall war. An dieser Stelle sei auch an Python erinnert, wo die Migration von Version 2 auf 3 noch nach 10 Jahren und einem knapp seit einem Jahr nicht mehr unterstütztem Versionsstrang noch immer andauert.

PHP sichert mit Version 8 seine Existenz für die nächsten Jahre und versucht von Erfahrungen anderer Programmiersprachen zu lernen, wie die Implementierung der match expressions zeigt. Bis von diesen Verbesserungen die Entwickler allerdings profitieren, kann es noch dauern, da zwar vor einigen Tagen mit der Veröffentlichung der Startschuss gegeben wurde, die Verfügbarkeit in Distributionen und bei Webhostern allerdings noch auf sich warten lassen kann.

Moderne Prozessoren haben mehrere Core und so sollte man auch dieses Möglichkeiten nicht ungenutzt brach liegen lassen zum Beispiel mit den standard Kompressionsprogrammen. Damit können Dateien, wie z.B. Tar Archive wesentlich schneller komprimiert werden. Natürlich zum Preis von einer höheren Prozessorlast. Also je nach System sollte evaluiert werden, ob das ein Vorteil oder ein Nachteil ist.

Hier eine kleine Liste von alternativen Kompressionsprogrammen mit Multicore bzw Multithreading Fähigkeiten, die das entsprechende Format des Originals schreiben und lesen können. Und noch weitere

 

 

Will man diese Kompressionsalgorithmen bei tar integrieren, so lautet eine Aufrufzeile z.B. so

tar -I pigz -cf Archive.tar.pigz /FilesNdirectories/toBe/Archived/

 

 

26. November 2020

Da Bullseye nun im ersten Freeze angekommen ist(²), habe ich auf meinem Laptop PCLinuxOS wieder runtergeworfen und nun parallel zu Buster Bullseye installiert.

Dabei habe ich natürlich wieder allerlei Dinge einstellen und feintunen müssen, weil ich absichtlich eine Neuinstallation mit frischem Home machen wollte.

Ausser den emails, also alles was thunderird im .icedove installiert und runtergeladen hat, das wollte ich behalten.

Leider sind die Buster und Bullseye Versionen nicht einfach kompatibel und führten dazu, dass alle emails erneut runtergeladen werden mussten.

Nach einigem Probieren habe ich dann aufgegeben, ich werde thunderbird nun nur noch im Bullseye aufrufen.

Steam lasse ich hier mal aussen vor, das funktioniert wegen fehlender i386 libs in Zusammenhang mit dem neuesten NVIDIA Treibern (noch) nicht.

Edit: Doch, heute probiert apt install nvidia-driver-libs:i386

steam geht. Guckst du hier: wiki.debian.org/Steam

Hier die einzelnen Punkte, die ich konfiguriert habe:

Default Einstellung ist wayland, doch damit habe ich einen schwarzen Bildschirm nach dem Standby bedingt durch Nvidia  und habe keinen Weg gefunden das zu umgehen. Deshalb habe ich am Greeter bei den Sessions Xorg genommen. Damit ist es wieder wie früher. Auf meinem T500 ist wayland dagegen OK, hat ja auch nur die Intel Grafik.

Sind hier Links, dann geht es zum detailliertern Eintrag im Blog

  • Terminal
  • gnome
    flameshot an eine Tastenkombination binden
    Vorgabe-Anwendungen einstellen und anderes
  • chromium
    früher habe ich das AddOn umatrix benutzt, nun den privacy Badger (www.eff.org/privacybadger
  • webcam XC1506
    apt install bison (wenn die Kamera während der Hardware Erkennung nicht eingechaltet war)
  • email
    Neuinstallation, also altes Profile gelöscht, war mir zu anstrengend
    Thunderbird Filter übernehmen.
  • Drucker DCP-7055 
  • cups installieren
  • Die Pakete von Brother runterladen https://support.brother.com
    und installieren (dpkg -i hat bei mir gereicht)
    cupswrapperDCP7055-2.0.4-2.i386.deb
    brscan4-0.4.9-1.amd64.deb
    dcp7055lpr-2.1.0-1.i386.deb
    brother-udev-rule-type1-1.0.0-1.all.deb
    Testseite Drucken und Scannen ging dann ohne weitere Klimmzüge
  • Labeldrucker QL-500
    ql550lpr-1.0.1-0.i386.deb
    ql550cupswrapper-1.0.1-0.i386.deb
    Dabei entdeckt: templateql500.tar.gz Nett :-)
    Es gibt übrigens eine Meckermeldung, die darauf schliessen lässt, dass es nicht ewig mehr auf diesen Wege geht:
        Restarting cups (via systemctl): cups.service.
    
        lpadmin -p QL-550 -E -v usb:/dev/usb/lp0 -P /usr/share/cups/model/Brother/brother_ql550_printer_en.ppd
    
        lpadmin: Printer drivers are deprecated and will stop working in a future version of CUPS.
    
        Restarting cups (via systemctl): cups.service.
    
    
  • Nautilus Scripte aus meiner Sammlung installieren, die liegen ja seit langem hier: ~/.local/share/nautilus/scripts
    Damit die funktionieren noch ein ​
    apt install zenity exiftool imagemagick
    absetzen.
  • dmesg auch als nicht priviligierter user nutzen: Zum ausprobieren nur mal für die aktuelle Sitzung:#sysctl kernel.dmesg_restrict=0
    Dauerhaft: ​
    Anlegen einer Conf Datei für sysctl:
        # cat /etc/sysctl.d/10-local.conf 
        
    kernel.dmesg_restrict = 0

 

Wird noch ergänzt, wenn mir noch etwas auffällt.

(²) Ps: Der Artikel wurde am 11.11. begonnen

Das mit dem ersten Freeze ist natürlich Blödsinn, der Soft Freeze ist ja erst im Februar (2021-02-12), keine Ahnung warum ich das schrieb... Wunschdenken?

Die letzten 4 Jahre habe ich Linux mehr oder minder von der Seitenlinie betrachtet. Es gab viele Releases, viele Blogposts, vermutlich sind 20 Distributionen dazu gekommen, aber wirklich viel passiert ist eigentlich nicht. Jedenfalls nicht in den von mir genutzten Bereichen.

Wie man hier im Blog lesen konnte, hatte ich Linux natürlich noch im Einsatz. Virtuelle Maschine sind aber eine relativ isolierte Arbeitsumgebung und ansonsten lief das System vor allem auf betreuten Geräten. Da setze ich meist auf LTS Distributionen (siehe: Linux - Eine sichere Basis). Bei solchen Distributionen erwartet man Stabilität und keine Quantensprünge, dementsprechend fand ich die zögerliche Entwicklung vollkommen normal. Bei der Abwehrhaltung einiger Nutzer kam es mir sogar ganz recht, keine Veränderungen sind da gewünscht, Updates ungern gesehene Gäste. Mit meinem neuen Notebook bin ich jetzt aber mit Tumbleweed quasi wieder direkt nach vorne in die Entwicklungskette gegangen (siehe: Erfahrungen mit dem ASUS ZenBook 14 UM425IA). Ich fühle mich ein wenig so, als ob die Zeit stehen geblieben wäre.

Wie schon im Artikel zum Asus Notebook geschrieben, ist die Hardware-Unterstützung der einzige Punkt an dem ich vorbehaltlos einen Fortschritt konstatiere. Kein Vergleich zu 2007 oder auch 2015, wo eine Neuanschaffung ohne vorherige intensive Prüfung unangenehme Überraschungen bringen konnte. Heute kann man sich den Luxus leisten und sagen, dass man NVIDIA wegen der proprietären Treiber nicht mag - vor 13 Jahren war man froh, wenn es überhaupt Treiber gab.

Das Thema Grafik führt leider zur ersten großen Baustelle: Wayland. Ich war zwar darauf vorbereitet, hier kein perfektes System vorzufinden (siehe: Der Linux Desktop am Tropf einer einzigen Firma) aber schon ein wenig schockiert, wie schlimm es um die Benutzbarkeit bestellt ist. Zumindest was KDE Plasma betrifft. Eigentlich wollte ich ja von KDE weg (siehe: Tschüß KDE), nur leider basiert elementary OS immer noch auf 18.04 und das klappt mit meiner Hardware nicht. Die Entwickler von eOS haben übrigens Wayland schon mal offiziell auf "ferne Zukunft" verschoben. Vielleicht kommt das dann zusammen mit Xfce  - oder Microsofts eigener Linux-Distribution, die sie alle in den Sack steckt. Zurück zu KDE: Die Wayland-Unterstützung ist auch bei ganz aktuellen Versionen bestenfalls im Alpha-Stadium. Mausklicks werden oft nicht erkannt, Programme wie KMail stürzen zuverlässig ab, die Zwischenablage ist ein Glücksspiel. Ausgehend von der bisherigen Entwicklung wird das noch Jahre dauern, bis das stabil läuft.

Im Gegensatz zu Kube ist das aber schon ein Fortschritt. Kontact und Akonadi ist eine katastrophale Fehlentwicklung gewesen. Das hatten auch einige bei KDE erkannt und deshalb wurde 2016 Kube ins Leben gerufen. Man wollte aus den Fehlern lernen und KDE mit einer zeitgemäßen Groupware-Lösung versorgen. Einige KDEPIM-Entwickler entschieden sich aber erst einmal an der Kontact/Akonadi-Konstruktion weiter zu arbeiten. Was ein Glück, denn ohne sie hätte KDE gar nichts. Kube ist der BER des KDE-Projekts, leider nur ohne finale Einweihungsparty. Nach Jahren der Entwicklung hat man einen rudimentären E-Mail Client, einen Kalender und kriegt so einmal pro Jahr eine kleine Veröffentlichung hin. Prognose: Da kommt nichts mehr.

Eine mit viel weniger Tamtam angekündigte Entwicklung ist aber inzwischen einfach nur toll: KDEconnect. Idee, Stabilität und Funktionsumfang mit der man sein Android in den KDE Desktop integriert, ist schlicht toll. Das ist sogar noch mal besser als die Integration des iPhones in den macOS-Workflow. Hat sich GNOME natürlich prompt geschnappt und ebenfalls umgesetzt.

KDE macht ansonsten sehr den Eindruck, im Wartungsmodus zu sein. Bei Plasma hat man die Benutzerführung verschlimmbessert und augenscheinlich viel in die Stabilität gesteckt. Insbesondere das UX-Design ist nun aber vor allem anders, jedoch kaum besser als vor 4 Jahren. Selbst nach einer Woche finde ich die Art Kontrollleisten zu modifizieren und Plasmoide zu platzieren, nicht sonderlich selbsterklärend. Fenster öffnen sich zudem immer noch an den unmöglichsten Orten und immer in der falschen Größe. Nahezu jedes Dialogfenster muss erst einmal in der Größe angepasst werden, bevor man den Inhalt (be)greifen kann. Allerdings immer noch besser als bei KeePassXC, wo die Einstellungen immer noch inline im Programm aufgerufen werden. Die Entwickler scheinen ihre Benutzer wirklich zu hassen!

Das trifft auch auf viele Programme im Umfeld zu. Konversation, Dolphin, Akregator - es ist, als ob man eine Zeitkapsel findet. Die Programme funktionieren, aber sie haben kaum Weiterentwicklung erfahren. Wenigstens findet man sich dadurch schnell zurecht.

Was man bei solchen Dinosauriern wie KMyMoney nicht sagen kann. Das Programm begreift man nur nach Handbuchlektüre oder wenn man es - wie ich - schon immer benutzt hat und deshalb das komplexe Gegeneinanderspiel Zusammenspiel von aqbanking und KMyMoney begreift. Ich hatte mit der Idee geliebäugelt Moneyplex zu kaufen aber das Design schreckt schon ab und außerdem funktioniert KMyMoney - wenn man es erst mal zum laufen gebracht hat.

Aber hey, wenigstens gibt es einen neuen Mediaplayer. Heißt jetzt Elisa. Da könnte man bei KDE jetzt seit der katastrophalen Neuentwicklung von Amarok beim Wechsel auf KDE4 einen ganzen Stammbaum zeichnen. Juk, Cantata, Clementine, Strawberry - hab ich was vergessen? Elisa ist hübsch - stürzt nur leider ab wenn man zu viel scrollt. Naja dann höre ich halt nur die Alben in der ersten Zeile.

LibreOffice stürzt wenigstens nicht ab. Es ist aber beeindruckend, wie schwerfällig diese Suite auf brandneuer und relativ potenter Hardware läuft. Und das wo es doch bei jedem Release heißt man hätte jetzt endlich die Codebasis erneuert. Vielleicht sollte man in einen Mac Pro mit 28 Kernen investieren, um das flüssig auszuführen? Aber wenigstens gibt es nun eine semi-native Qt5-Oberfläche und mit drei konkurrierenden Benutzungskonzepten macht man doch irgendwie jeden unglücklich. Macht aber nichts, wusste ich vorher und 99,95 € in eine Softmaker Office 2021 Professional Lizenz sind gut investiertes Geld.

Wo wir schon beim Geld sind. Ich finde es unglaublich faszinierend wie schlecht das Angebot guter Scanner-Software mit OCR-Texterkennung ist. Und zwar weil Open Source mit z. B. Tesseract hier eine wirklich tolle Lösung hat, die in proprietärer Software super Ergebnisse liefert. Bei Linux bleibt da nur gscan2pdf und die Ergebnisse sind wirklich mau. Zum Glück kann man hier Vuescan nehmen

Alles in allem bin ich aber ganz zufrieden. Nach nicht einmal 2000 Jahren der Pflege, äh einer Woche der Einrichtung ist meine Linux-Arbeitsumgebung wieder voll funktionsfähig.


Bilder:

Einleitungs- und Beitragsbild von ar130405 via Pixabay 

"

25. November 2020

Linux (und Windows) Nutzer bezeichnen macOS gerne abfällig als goldenen Käfig. Mit diesem Mythos hatte ich mich hier schon mal theoretisch beschäftigt (siehe: macOS vs. Linux - Goldener Käfig gegen Freiheit?). Vergangene Woche habe ich meine Arbeitsabläufe wieder auf ein Linux-Gerät als primäres Arbeitsgerät verlagert (siehe: Erfahrungen mit dem ASUS ZenBook 14 UM425IA). Fazit: Es gibt keinen goldenen Käfig.

Der Umzug war absolut keine Herausforderung, so wie bereits im Juni 2018 theoretisch durchgespielt. Mein größtes Problem war tatsächlich, dass mein neues Gerät nur einen herkömmlichen USB-Anschluss hat und ansonsten nur mit USB-C Anschlüssen ausgestattet ist. Dadurch konnte ich ohne Adapter immer nur ein externes Speichermedium anschließen.

Wie man daran schon sieht, gab es keine nennenswerten Probleme.

Meine primäre Synchronisationsinstanz für Daten ist ein Synology NAS (siehe: Synology NAS I: Die Entscheidung für ein Synology NAS). Das war möglich, weil Apple bis heute moderne freie Schnittstellen in seinen Systemen implementiert. Anders als z. B. das in Open Source Kreisen so hochgelobte Android von Google, das man erst mittels Drittanbieter-Apps nachrüsten muss. E-Mails, Kontakte, Kalender und Aufgabenliste standen mir dank IMAP, CardDAV und CalDAV in Windeseile auf dem neuen Gerät zur Verfügung. Gleiches gilt selbstredend für die SMB-Freigaben.

Völlig unproblematisch war auch der Umzug meiner Keepass-Datenbank, da MacPass natürlich komplett kompatibel zu KeePassXC ist.

Etwas Arbeitsaufwand bereitete mir mein Homebanking. Unter macOS nutzte ich dafür das wirklich geniale MoneyMoney. Liebe Entwickler von KMyMoney, GnuCash, Moneyplex und Hibiscus: So geht UX-Design. Banking-Programme müssen nicht so wahnsinnig unlogisch strukturiert sein und so benutzerfeindlich. Aber das wusste ich vorher. Relevant ist etwas anderes: Dank OFX-Export ließen sich die Daten problemlos exportieren und fehlerfrei in KMyMoney importieren.

Ein bisschen nerviger waren da schon die RSS Feeds, da die Auswahl guter Feedreader bei Linux eher mäßig ist (siehe: Linux im Niedergang - Heute: FeedReader) und ich mit FreshRSS (siehe: RSS Feeds synchron halten mit FreshRSS) nicht den Darling TT-RSS nutze.

Der Rest war dann vor allem Fleißarbeit. Bei Firefox hätte man vermutlich das Profil mitnehmen können, aber hier habe ich die Gelegenheit nach all den Jahren mal zur Neueinrichtung genutzt, das IRC-Programm (natürlich Konversation!) einrichten und an die eigenen Wünsche anzupassen brauchte auch ein paar Gänge in die Einstellungen.

Warum war das so einfach? Weil die Frage, ob ein System zum Gefängnis wird, meist nicht vom System abhängt, sondern vom Anwendungsverhalten. Das Wichtigste ist erstens möglichst mit Programmen zu arbeiten, die auf Dateibasis arbeiten. Dabei ist es völlig gleichgültig, ob es sich um Open Source handelt oder nicht. Wenn man nicht mehr einfach an die einzelnen Dateien herankommt, ist man in einem Gefängnis bzw. hat erhebliche Migrationsprobleme. Klassische Problembereiche sind hier DMS-Software und Fotoverwaltungen. Zweitens sollte man möglichst auf Insellösungen verzichten. Auch hier ist es wieder egal, ob es Open Source Lösungen sind oder nicht. Ausgenommen ich bin selbst Programmierer und kann das Problem im Zweifelsfall für mich selbst beheben. Ein Programm, das nur unter Linux lauffähig ist, kann mich genau so an Linux fesseln, wie sein Pendant unter macOS.

Natürlich kann man macOS oder Apple nicht mögen, z. B. weil sie den Kapitalismus auf immer neue Spitzen treiben. Aber bitte lasst das Bild vom goldenen Käfig. Mit diesem Bild belügen sich nur jene, die eigentlich einen Mac wollen aber zu geizig oder zaghaft sind.


"

Thunderbird 78.5 Filter exportieen / importieren

Ich habe 2 Rechner mit derselben Version von Thunderbird (78.5) Bullseye.
Also physikalisch getrennt.
Nun würde ich gerne die Nachrichtenfilter vom Hauptrechner auf den anderen übertragen.

Wahrscheinlich muss ich mir aus dem .profile von thunderbird die richtige Datei suchen und kopieren.

Lösung 
Die Datei ist:msgFilterRules.dat

Sie liegt hier:
.thunderbird/123456789xxdefault/ImapMail/domain.de/msgFilterRules.dat
Für domain.de euren Provider eintragen, klar.

In diesem Artikel möchte ich diskutieren, ob die Nutzung der SSH-Client-Option ForwardAgent sicher und sinnvoll ist. Wie so häufig bei Themen der IT-Sicherheit geht es auch hier um die Abwägung zwischen Sicherheit und Bequemlichkeit.

Der SSH-Agent nimmt den privaten SSH-Schlüssel auf und stellt diesen für SSH-Verbindungen bereit, so dass nicht bei jeder neuen SSH-Verbindung die Passphrase eingegeben werden muss.

Dabei wird ein UNIX-Socket erstellt und in der Variablen SSH_AUTH_SOCK gespeichert. Der folgende Code zeigt dies beispielhaft:

$ echo $SSH_AUTH_SOCK
/run/user/1000/keyring/ssh

In der ssh_config(5) findet sich die Option ForwardAgent, mit deren Hilfe der SSH-Agent auf einen entfernten Rechner weitergeleitet werden kann. Ist diese Funktionalität aktiv, kann man sich mit dem im SSH-Agenten gespeicherten privaten SSH-Schlüssel zu einem entfernten Rechner verbinden und von dort aus unter Nutzung des gleichen Schlüssels Verbindungen zu weiteren Rechnern aufbauen.

In den meisten Linux-Distributionen ist diese Option standardmäßig deaktiviert, da sie ein potenzielles Sicherheitsrisiko darstellt. Gelingt es einem Benutzer, die Dateiberechtigungen auf dem entfernten Rechner zu umgehen, kann er den lokalen Agenten benutzen, um Operationen durchzuführen, die nur mit dem im SSH-Agenten gespeicherten SSH-Schlüssel möglich sind. Ich möchte dies im Folgenden an einem Beispiel veranschaulichen.

Die Umgebung

Für den Versuch kommen die drei Linux-Rechner host-a, host-b und host-c zum Einsatz. Auf allen drei Hosts existiert der User foo, welcher mittels sudo zum root werden kann. Darüber hinaus existiert auf host-b User bar, welcher ebenfalls mittels sudo zum root werden darf.

Gezeigt wird, wie bar durch Wechsel in den Kontext des Users root die Dateiberechtigungen für den Unix-Socket des SSH-Agenten von foo umgehen kann, um mit dessen Informationen eine SSH-Verbindung zu host-c herzustellen, was ihm sonst nicht gestattet ist.

Der Versuchsablauf

In diesem Abschnitt wird der Ablauf wiedergegeben, der dazu führt, dass bar Zugriff als foo auf host-c bekommt.

host-a

Auf host-a existiert ein Unix-Socket für den SSH-Agenten. Der User foo nutzt diesen, um eine Verbindung zu host-b aufzubauen. Dabei wird die Option ForwardAgent aktiviert:

foo@host-a:~$ echo $SSH_AUTH_SOCK
/run/user/1000/keyring/ssh
foo@host-a:~$ ssh -o ForwardAgent=yes  host-b
[...]
foo@host-b:~$

host-b

Wir sind jetzt via SSH als User foo auf dem host-b eingeloggt. Da wir die Weiterleitung des SSH-Agenten aktiviert haben, existiert jetzt auch hier ein entsprechender Unix-Socket. Die Dateiberechtigungen sind so gesetzt, dass nur foo darauf zugreifen darf. Der folgende Codeblock veranschaulicht dies.

foo@host-b:~$ echo $SSH_AUTH_SOCK
/tmp/ssh-fxwQXNlZrS/agent.32579
foo@host-b:~$ ls -ld /tmp/ssh-fxwQXNlZrS
drwx------ 2 foo foo 4096 Nov 24 14:47 /tmp/ssh-fxwQXNlZrS
foo@host-b:~$ ls -l /tmp/ssh-fxwQXNlZrS/agent.32579
srwxr-xr-x 1 foo foo 0 Nov 24 14:47 /tmp/ssh-fxwQXNlZrS/agent.32579

Neben foo ist auch User bar auf host-b eingeloggt. Die Variable SSH_AUTH_SOCK dieses Users ist leer und bar wird beim Versuch, sich mit host-c zu verbinden, zur Eingabe eines Passworts aufgefordert.

bar@host-b:~$ echo $SSH_AUTH_SOCK

bar@host-b:~$ ssh foo@host-c
foo@host-c's password:

bar@host-b:~$ ls -l /tmp
drwx------ 2 foo   foo   4096 Nov 24 14:56 ssh-fxwQXNlZrS
bar@host-b:~$ ls -l /tmp/ssh-fxwQXNlZrS
ls: cannot open directory '/tmp/ssh-fxwQXNlZrS/': Permission denied

Da bar das Kennwort von foo unbekannt ist, geht es auf diesem Weg nicht weiter. Jedoch kann bar erkennen, dass auf dem System ein Unix-Socket mit einem SSH-Agenten für foo existiert. Der nun folgende Codeblock zeigt, wie bar über einen Umweg den SSH-Agenten von foo nutzt, um sich mit host-c zu verbinden.

bar@host-b:~$ sudo -i
[sudo] password for bar:
root@host-b:~# ssh foo@host-c
foo@host-c's password:

root@host-b:~# SSH_AUTH_SOCK=/tmp/ssh-fxwQXNlZrS/agent.32579
root@host-b:~# export SSH_AUTH_SOCK
root@host-b:~# ssh foo@host-c
[...]
foo@host-c:~$

Der User bar hat es geschafft, sich als foo an host-c zu authentifizieren. Das ist foobar!

Schlussfolgerung

Der hier durchgeführte Versuch zeigt, dass die Option ForwardAgent ein Sicherheitsrisiko birgt, wenn es auf einem entfernten System Benutzer gibt, welche die Dateiberechtigungen, wie in diesem Artikel gezeigt, umgehen können.

Ich empfinde es daher als gut und sinnvoll, dass diese Option standardmäßig deaktiviert ist.

Kann man jedoch ausschließen, dass die Dateiberechtigungen umgangen werden, z. B. weil keine weiteren Nutzer auf dem entfernten Rechner existieren bzw. auf diesen zugreifen können, spricht in meinen Augen nichts dagegen, diese Option zu nutzen und sich den Alltag etwas komfortabler zu gestalten.

24. November 2020

Die letzten Jahre bestimmte den Apple Geräte meinen Arbeitsalltag. Als mobiler Begleiter ein MacBook Air, und auf dem Schreibtisch ein iMac. Nun zieht wieder ein "normales" Notebook in den Haushalt als Ersatz für das MacBook Air. Der Kauf war nicht leicht, aber Linux macht bei der Hardware wirklich kaum noch Probleme.

Wie man in den letzten Tagen lesen konnte habe ich gegenwärtig mit Apples Produktstrategie zu kämpfen (siehe: Ein paar Gedanken zu Apples M1). Den Weg zu eigenen Prozessoren finde ich nachvollziehbar, die Geräte aber so fest an das eigene Betriebssystem zu binden eher weniger. Eigentlich beabsichtigte ich diese Entwicklung aus zu sitzen, aber mein Leben hat meinem Nutzungsverhalten einen Strich durch die Rechnung gemacht. Ein potenter Arbeitsplatzrechner passt nicht mehr in mein aktuelles Pendlerdasein und das MBA ist als tägliches Arbeitstier einfach zu schwach auf der Brust.

Ich habe die letzten Jahre ja schon einiges an Hardware gekauft und darüber berichtet. Ich verlinke mal, weil meine Grundeinschätzungen sich nicht geändert haben:

Schon bevor ich auf Apple Hardware wechselte, war mir das Erscheinungsbild wichtig. Ich verstehe einfach nicht, warum ich 2000 € für ein ThinkPad ausgeben soll, das genau so ein Plastikhaufen ist, wie das 0815/Consumer Teil beim lokalen Elektronikgroßhandel. Seit sie bei Lenovo auch noch angefangen haben, in vielen Serien den Arbeitsspeicher und andere Sachen fest zu verlöten, ist auch das Argument der guten Wartbarkeit weggefallen.

Wirklich wichtig sind mir zudem gute Touchpads und lange Akkulaufzeiten. Bis heute ist mir nicht klar, warum das abseits von Apple kaum ein Hersteller hinbekommt. Gerade bei den hochpreisigen Business-Geräten darf man das doch eigentlich erwarten.

Relevant ist außerdem noch das Gewicht. Ich fahre kein Auto, sondern bin mit Fuß, Fahrrad und ÖPNV unterwegs und es macht auf die Dauer eben einen Unterschied, ob man 1,13 oder 2kg auf der Schulter hat. Vor allem im direkten Vergleich mit meinem Dell Latitude Arbeits-Notebook fällt mir das auf. Dieses ist ebenfalls ein 14" Modell aber gefühlt dreimal so schwer.

Außerdem wollte ich nach den Berichten der letzten Jahre, den guten Kritiken für AMD und den guten Erfahrungen mit dem Huawei-Notebook gerne ein Notebook mit AMD CPU/Grafikkartenkombination.

Nach langer Recherche entschied ich mich deshalb für ein ASUS ZenBook 14 UM425IA.

Kerndaten:

  • AMD Ryzen 7 4700U
  • 16 GB DDR4 RAM
  • AMD Radeon RX Vega 7
  • 512 GB SSD.
  • 14" Display mit FullHD Auflösung
  • 16 Stunden Akkulaufzeit

 

Das Notebook besteht aus Aluminium und ist sehr gut verarbeitet. Obwohl es ein 14" Display hat, ist es kleiner als mein MacBook Air, weil die Displayränder sehr schmal sind. Im Gegensatz zum Huawei ist die Webcam (1080p - der Seitenhieb auf die neuen MacBooks muss sein) trotzdem oberhalb des Displays eingebaut, was die ungünstige Froschperspektive wenigstens etwas abmildert. Die Tastatur hat ein gutes Tippgefühl, aber einen etwas längeren Hubweg als moderne Apple Notebooks. Ich persönlich mag das gerne. Gewöhnungsbedürftig ist die amerikanisierte Enter-Taste. Nach gut einer Woche hatte ich mich daran aber gewöhnt.

Bei der aktuellen Hardware war natürlich eine LTS Distribution keine Option. Ich habe mich daher für openSUSE Tumbleweed entschieden. Grundsätzlich dürfte jede Distribution mit einem Kernel >5.8 und einer aktuellen Mesa Version funktionieren. Dabei zeigt sich mal wieder, wie gut die Hardware-Unterstützung von Linux in den vergangenen Jahren geworden ist. Die komplette Hardware läuft nahezu ohne Nacharbeiten. Grafik, Displayhelligkeit, Tastaturbeleuchtung, Shortcuts, Touchpad - alles kein Problem. Sogar die Akkulaufzeit ist im Rahmen, obwohl ich hier noch nicht mal mit dem Feintuning begonnen habe.

Einziges Manko ist der Standby. Microsoft kam auf die tolle Idee, bei Windows einen neuen Sleep-Mode einzuführen, der auf Kosten des traditionellen S3 Mode geht. Wenn man keine entsprechende Option im Bios (hat das ZenBook leider mit der aktuellen BIOS Version nicht) hat, um das auszuschalten, muss man auf Standby verzichten. Das ist leider ein wirkliches Manko, da mit den Jahren als Apple-Nutzer zu einem wirklichen Standby-Junkie erzogen wird. Andererseits sind die Hoch- und Herunterfahrzeiten so kurz, dass ich damit leben kann. Zumal das Gerät im Idle mit abgeschalteten Display weniger als 4W braucht.


Bilder:

Einleitungs- und Beitragsbild von Megan_Rexazin via pixabay

"

22. November 2020

Ganz unabhängig von der aktuellen Weltlage arbeite ich mittlerweile seit April 2020 in einem All-Remote-Job. Was da jeder braucht, ist eine Webcam. Ich wollte eigentlich zu Beginn des Jobs eine neue Kamera kaufen. Blöd nur, dass die überall ausverkauft waren und wenn sie lieferbar waren, dann erst Monate später zu Wucherpreisen.

Für mich musste also kurzfristig eine Alternative her, die sich auch mittelfristig durchgesetzt hat. Die im Laptop verbaute Webcam ist leider ziemlich unbrauchbar.

Meine Alternative ist die Nutzung meiner DSLR, die ich eigentlich zum Fotografieren besitze. Konkret besitze ich eine Canon EOS 700D. Diese Anleitung hier dokumentiert wie man diese Kamera als Webcam unter Linux zum Laufen bringt. Leider ist das nicht ganz so einfach und hat ein paar Einschränkungen, aber dazu gleich mehr.

Die Kamera habe ich per Mini-USB an meinen Rechner angeschlossen. Zusätzlich wird noch eine dauerhafte Stromzufuhr gebraucht. In diversen Online-Shops existieren Batterie-Adapter, die man per USB mit Strom füttern kann. Dieses Teil kostet so knapp 20 bis 30 Euro.

Auf der Seite der Software werden prinzipiell drei verschiedene Anwendungen gebraucht. Die Paketnamen beziehen sich auf ArchLinux, bei anderen Distributionen sind die Paketnamen aber ähnlich.

  • gphoto2
  • gstreamer und gst-plugins-bad
  • v4l2loopback-dkms

Um genau zu sein, wird gphoto2 gebraucht, um das Kamerabild abzugreifen. Das muss dann an gstreamer gepipet werden, was den Videoinhalt dann in ein Video4Linux2 Loopback-Sink schickt. Anschließend ist die Kamera dann als Webcam verfügbar. Aber zunächst der Reihe nach.

Nachdem man sich die oben genannten Pakete installiert hat, wird durch die Installation von v4l2loopback-dkms ein Kernel-Modul kompiliert. Dies wird benötigt, damit man V4L2 Loopback Devices nutzen kann. Dies muss anschließend auch noch geladen werden:

$ sudo modprobe v4l2loopback devices=1 video_nr=10 card_label="Canon 700D" exclusive_caps=1

An dieser Stelle habe ich nicht nur das reine Modul geladen, sondern habe noch ein paar Optionen mitgegeben. devices gibt lediglich an, dass es sich um ein einzelnes Gerät handelt. Mit video_nr=10 gebe ich an, dass das Gerät unter /dev/video10 im System verfügbar ist. Mit card_label gebe ich hingegen schlicht den Namen an. Wichtig ist noch der Parameter exclusive_caps=1: Ohne diesen Parameter erkennt der Chrome die Kamera nicht als Webcam. Warum das so ist, hab ich nicht ganz verstanden, ist mir aber egal, solange es funktioniert. Im Firefox und in Zoom funktioniert das auch ohne diesen Parameter.

Nachdem also das Kernel-Modul geladen ist, muss ich folgenden Befehl verwenden, um das Gebastel zum Laufen zu kriegen:

$ gphoto2 --stdout --capture-movie | gst-launch-1.0 fdsrc ! decodebin3 name=dec ! queue ! videoconvert ! v4l2sink device=/dev/video10

Ein Nachteil dieser Methode ist, dass gphoto2 von der Kamera per USB nur das Preview-Bild holt und es dem Rechner rüberreicht. Das Preview-Bild ist das Bild, was auch auf dem eingebauten Display dargestellt wird. Das heißt in meinem Fall, dass das kein HD-Bild ist, sondern nur eine Auflösung von 960x640 hat. Für den Einsatz als Webcam ist das allerdings nicht weiter schlimm, da das Bild immer noch besser ist als bei einer Standard-Full-HD-Webcam. Meistens findet dann sowieso noch ein Herunterrechnen des Bildes statt.

Eine Alternative zu dieser Methode wäre die Nutzung einer HDMI-Capture-Card die das Signal vom HDMI-Ausgang in voller Auflösung abgreift. Da gescheite HDMI-Capture-Cards über 100 € kosten, hab ich getrost darauf verzichtet.

Um meinen Workflow ein wenig zu vereinfachen, lade ich das Kernel-Modul beim jeden Reboot automatisch und hab einen Alias gesetzt, um den langen Befehl schnell aufrufen zu müssen. Einfaches Plug-and-Play ist das nicht, komfortabel auch nicht. Aber es war eine einfache Lösung um den Kauf einer überteuerten und nicht-lieferbaren Webcam zu umgehen, da der Rest der Hardware schon vorhanden war. In der Dokumentation von gphoto auf gphoto.org sind alle Kamera-Modelle aufgelistet, die unterstützt werden.

Wordpress Login mit Touch-, FaceID oder Windows Hello nutzen

Wer, wie ich Wordpress Nutzer und zudem im Besitz eines Gerätes mit FaceID, TouchID oder Windows Hello ist sollte sich einmal das Plugin Passwordless WP anschauen, dass wie der Name schon suggeriert eine Anmeldung in Wordpress ohne Passwort ermöglicht.

Einmal eine der oben genannten Anmelde-Methoden registriert, kann man beim Login den User auswählen und wird anschließend vom Browser um Authentifizierung mittels Face-, TouchID oder Windows Hello gebeten.

Das ganze erfordert einen Browser der FIDO und WebAuthn unterstützt, mit Chrome, dem neusten Safari oder Firefox ist man da aber auf der sicheren Seite. Und, aber das sollte heutzutage selbstverständlich sein, eine mit SSL gesicherte Wordpress-Installation.

Wordpress an sich ist mittlerweile relativ sicher, das größte Einfallstor sind mittlerweile veraltete Plugin-Versionen. Nutzt solche Plugins also nur, wenn ihr entweder die Auto-Updates für Plugins aktiviert habt oder ihr regelmäßig nach Aktualisierungen schaut!

21. November 2020

Letztes Jahr hatte ich in https://fryboyter.de eine Suchfunktion eingebaut, die DuckDuckGo nutzt. So wirklich glücklich war ich damit nie, da ich somit auf Dritte angewiesen bin.

Daher habe ich vor ein paar Tagen die Suchfunktion umgebaut. Über https://fryboyter.de/search/ bzw. über das Lupen-Symbol im Footer der Seite ist nun die neue Suchfunktion erreichbar die unabhängig von Dritten ist. Intern wird hierfür eine JSON-Datei erzeugt, die als Datenquelle dient. Mittels eines kleinen Java-Scripts lässt sich diese Datei durchsuchen. Wer also die Suchfunktion nutzen will, muss Javascript aktivieren. Zumindest bei genannten Link.

Einen kleinen Nachteil hat das ganze natürlich auch. Die JSON-Datei wird auf den Rechner des jeweiligen Nutzers heruntergeladen, da die Suche lokal erfolgt. Hierbei werden aktuell etwas mehr als 300 kB übertragen. In Anbetracht dessen, dass heutzutage viele Internetseiten an sich um ein Vielfaches größer sind und die Datei nur bei Aufruf des genannten Links heruntergeladen wird, finde ich die Datenmenge vertretbar.

Die Änderung basiert auf der Anleitung von https://weitblick.org/post/simple-static-site-search-hugo-jamstack/. Vielen Dank dafür.

20. November 2020

Chirp ist ein mächtiges Stück Software zum konfigurieren und programmieren diverse Handfunkgeräte. Leider gibt es mit dem PPA des Maintainers Dan Smith gerade ein paar Probleme, so dass die Installation unter Ubuntu 20.04 Focal Fossa und den darauf aufbauenden Distributionen wie Linux Mint und elementary OS nicht ohne weiteres möglich.

Als Workaround bietet sich im Moment neben der manuellen Installation, die allerdings die Pakete python-serial und python-libxml2 voraussetzt, die Installation des flatpak-Paketes an.

Wer auf die klassische Installation über apt besteht, dem sei folgender Workaround empfohlen:

Die Installation des Chirp-Installationspaketes für Ubuntu 18.04 Bionic Beaver erfordert zunächst die Installation einiger Abhängigkeiten, die in Focal Fossa nicht mehr enthalten sind. Sie lassen sich via https://packages.ubuntu.com herunter laden:

cd ~/Downloads
wget http://de.archive.ubuntu.com/ubuntu/pool/main/s/suds/python-suds_0.7~git20150727.94664dd-5_all.deb
wget http://de.archive.ubuntu.com/ubuntu/pool/main/p/pyserial/python-serial_3.4-2_all.deb
wget http://de.archive.ubuntu.com/ubuntu/pool/universe/p/pygtk/python-gtk2_2.24.0-5.1ubuntu2_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/libx/libxslt/python-libxslt1_1.1.29-5ubuntu0.2_amd64.deb

Bei der Installation hilft uns dpkg:

sudo dpkg -i python-*

Nun kann das aktuelle Chirp-Daily-Paket für 18.04 aus dem PPA herunter geladen und installiert werden:

sudo dpkg -i chirp-daily_*

Sollten die Probleme mit dem PPA irgendwann behoben sein, reicht es das Paket chirp-daily zu deinstallieren und danach die nicht mehr benötigten abhängigen Python-Pakete entfernen

sudo apt remove chirp-daily
sudo apt autoremove

Danach muss das PPA installiert werden:

sudo add-apt-repository ppa:dansmith/chirp-snapshots

Nach einer Aktualisierung der Paketquellen kann chirp-daily dann hoffentlich einfach aus dem PPA installiert werden.

sudo apt install chirp-daily

18. November 2020

Die MZLA Technologies Corporation hat mit Thunderbird 78.5 ein Update für seinen Open Source E-Mail-Client veröffentlicht.

Neuerungen von Thunderbird 78.5

Mit dem Update auf Thunderbird 78.5 erweitert die MZLA Technologies Corporation einmal mehr die MailExtension-Schnittstellen und verbessert die OpenPGP-Unterstützung. Darüber hinaus wurden diverse Fehler-Korrekturen vorgenommen und Sicherheitslücken geschlossen. Eine vollständige Liste der Änderungen gibt es in den Release Notes (engl.).

Der Beitrag Thunderbird 78.5 veröffentlicht erschien zuerst auf soeren-hentzschel.at.