Kurztipp: VirtualBox meldet „Can’t find help file“

Problem: VirtualBox meldet unter Ubuntu-Linux 22.04.4 „Can’t find help file“.

Ein „strace virtualbox“ liefert

access("/usr/share/doc/virtualbox/UserManual_C.qhc", F_OK) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden)
access("/usr/share/doc/virtualbox/UserManual.qhc", F_OK) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden)

Und in der Tat, unter /usr/share/doc/virtualbox/ liegt nur „UserManual.pdf“ aber nichts mit Endung „qhc“

Es scheint ein Bug zu sein, beim Packaging wurden die benötigten Dateien irgendwie vergessen.

Lösung: Direkt von virtualbox.org das zur Version passende deb-Package herunterladen, die UserManual-Dateien herausfummeln (z.B. mit dem Midnight Commander „mc“) und in /usr/share/doc/virtualbox/ ablegen.

Kurztipp: XFCE über xrdp

Neues Notebook mit vorinstalliertem Ubuntu Desktop und nachinstalliertem xubuntu-desktop: Beim Remote-Zugriff über RDP erscheint jedoch nur ein Login ohne Auswahlmöglichkeit des Window-Managers, und in meinem Falle wurde immer der Ubuntu-Desktop gestartet.

Abhilfe: Man erzeuge eine ~/.xsession und schreibe „startxfce4“ hinein.

echo "startxfce4" > ~/.xsession

Nach der nächsten Anmeldung startet dann der XFCE-Desktop.

Siehe auch: Kurztipp: KDE über xrdp

Kurztipp: PDF in JPG umwandeln

Um ein PDF in JPG(s) umzuwandeln, braucht es unter Linux nicht viel und lässt sich auch wunderbar für Scripting nutzen:

pdftoppm foo.pdf | convert - bar.jpg

pdftoppm (aus den poppler-utils) wandelt PDF in Portable Pixmap um, liest in dem Beispiel die Datei foo.pdf und schreibt das PPM auf die Standardausgabe.

convert (aus dem ImageMagick-Paket ) liest von der Standardeingabe und wandelt (bei einseitigen PDF) in bar.jpg um, bei mehrseitigen PDF in bar-0.jpg, bar-1.jpg, bar-2.jpg, …

Mittels entsprechender Optionen – und convert kennt dutzende! – kann man natürlich auch gleich Einfluss auf das zu erzeugende JPG nehmen. Hier ein Beispiel, wie man (ein) Vorschaubildchen mit 240 Pixel Breite erzeugen kann:

pdftoppm foo.pdf | convert - -geometry 240 thumb-bar.jpg

Links:

Lazarus, UTF8, Firebird und Default Character Set NONE

Ich habe in den letzten Tagen ein wenig mit Lazarus herumgespielt, um damit eventuell (auf Linux) portierbare Frontends für alte, existierende Datenbanken zu bauen. Dabei bin ich über die Problematik gestolpert, dass Lazarus standardmäßig überall mit UTF8 arbeitet, die alten Datenbanken sich aber um Zeichensätze nicht gekümmert haben. Alte Frontends liefen unter Windows irgendwie mit einem Zeichensatz vergleichbar (identisch?) mit ISO Latin 1 (a.k.a ISO 8859-1), der Firebird-Datenbank war es eh egal, was an Zeichen rausgeholt und darin gesichert wurde, kurzum: passte alles. Mit Lazarus/UTF8 und alten Datenbankinhalten in Latin-1 wird alles ein wenig herausfordernder. Aber letztlich ist das alles nichts wirklich Wildes, wenn man weiß, wie es funktioniert.

Man hat drei Möglichkeiten, mit dieser Herausforderung umzugehen:

  1. Für neue Projekte legt man die Datenbank selbst („create database ‚/path/to/db/foobar.fdb‘ default character set UTF8;“) und alle Spalten („foo varchar(42) character set UTF8“) direkt als UTF8 an. Dann muss man im mit Lazarus und den Firebird/Interbase-Datenbankkomponenten gebauten Frontend (so gut wie nichts) beachten.
  2. Ältere Datenbanken konvertiert man komplett mit allen Spalten und allen Inhalten von NONE auf UTF8. Dann hat man wie oben im Frontend auch Ruhe, aber solch eine Konvertierung kann in Arbeit ausarten.
  3. Oder man lässt die alte Datenbank in Ruhe und sorgt im neuen Frontend an den entscheidenden Stellen manuell für eine Zeichensatzumwandlung.

Für den dritten Fall ist Folgendes zu tun (ohne Anspruch auf Vollständigkeit):

  • TIBConnection: Die Datenbankverbindung auf CharSet:= ‚ISO8859_1‘ setzen und mittels UseConnectionCharSetIfNone:= True eine automatische Umwandlung von Datenbankinhalten für die visuellen Datenbankkomponenten aktivieren. In einem DBGrid beispielsweise werden deutsche Umlaute dann richtig dargestellt (stünde das hingegen auf False, dann sähe man nur Fragezeichen statt Umlauten)
  • uses … LConvEncoding
  • Bei jeder TSQLQuery müssen Zeichenketten aus dem Frontend in Richtung Datenbank mittels UTF8ToISO_8859_1() umgewandelt werden. Wer sich SQL-Statements also zusammenbaut und dafür die Inhalte von Eingabefelder verwendet, muss die erst einmal durch die Zeichensatzumwandlung jagen.

Eventuell schreibe ich es demnächst noch ausführlicher auf, aber der geneigte Lazarus-Programmierer sollte vielleicht damit schon auf den richtigen Lösungsweg kommen.

Links:

Kurztipp: no matching host key type found

Nach dem Upgrade auf Ubuntu 22.04. scheitert erneut der Zugriff per ssh auf eine VM mit einem Uralt-SCO-Unix, in diesem Falle mit folgender Fehlermeldung:

$ ssh vmsco
Unable to negotiate with 192.168.47.11 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
lost connection

Warum auch immer (bestimmt aus Sicherheitsgründen) übermittelt ssh den id_dsa.pub nicht mehr an den SSH-Server. Abhilfe:

Beim einmaligen Zugriff erweitert man den Aufruf von ssh/scp um eine Option:

$ ssh -oHostKeyAlgorithms=+ssh-dss vmsco

Um die Option dauerhaft zu setzen, packe man diese in die globale SSH-Konfiguration für den Namen und die IP-Adresse des SSH-Servers (die alten Optionen stammen noch aus dem älteren Tipp):

$ sudo vi /etc/ssh/ssh_config.d/vmsco.conf

Host vmsco
  HostKeyAlgorithms +ssh-dss
  KexAlgorithms +diffie-hellman-group1-sha1
  Ciphers +aes128-cbc

Host 192.168.47.11
  HostKeyAlgorithms +ssh-dss
  KexAlgorithms +diffie-hellman-group1-sha1
  Ciphers +aes128-cbc

Kurztipp: KDE über xrdp

Ich habe auf einem Rechner mit Ubuntu 22 sowohl XFCE als auch KDE als Desktop installiert. Beim Remote-Zugriff über RDP erscheint jedoch nur ein Login ohne Auswahlmöglichkeit des Window-Managers und in meinem Falle wurde immer XFCE gestartet.

Abhilfe: Man erzeuge eine ~/.xsession und schreibe „startplasma-x11“ hinein.

echo "startplasma-x11" > ~/.xsession

P.S.: Ich werde dennoch bei XFCE bleiben. KDE hat zwar mehr Bling Bling, aber bei XFCE muss ich für manche Dinge einfach weniger herumklicken.

Nextcloud nach Ubuntu-Upgrade kaputt

Nach einem „do-release-upgrade“ von Ubuntu 18.04 auf Ubuntu 20.04 lief die auf diesem System installierte Nextcloud nicht mehr. „Internal Server Error“ hieß es lapidar, die Log-Einträge im Apache-Error-Log waren auch nicht sehr erhellend.

Es zeigte sich, dass vorher vorhandene und auch nachher weiter benötigte PHP-Module vom Ubuntu-Updater nicht wieder installiert wurden. Nach Installation von „php-mysql“ und „php-xml“ kam wenigstens die Nextcloud-Seite wieder hoch und zeigte an, welche weitere PHP-Module alle noch fehlten.

In meinem Falle musste ich die folgenden Module wieder installieren und den obligatorischen Neustart des Apache durchführen:

sudo apt install php-mysql php-xml php-zip php-mbstring php-gd php-curl 
sudo service apache2 restart

Dann war wieder alles gut.

Kurztipp: no matching key exchange method found

Noch eine kleine Begleiterscheinung die nach dem Upgrade auf Ubuntu 20.04 aufgetreten ist: Ein SSH zu einer VM mit einem Uralt-SCO-Unix scheitert mit folgender Fehlermeldung:

$ ssh vmsco
Unable to negotiate with 192.168.47.11 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1

Abhilfe: Für den Host und seine IP-Adresse die alten, mittlerweile als unsicher erachteten Verbindungsparameter aktivieren, die Ubuntu per Default nicht mehr verwendet:

$ sudo vi /etc/ssh/ssh_config.d/vmsco.conf

Host vmsco
  KexAlgorithms +diffie-hellman-group1-sha1
  Ciphers +aes128-cbc

Host 192.168.47.11
  KexAlgorithms +diffie-hellman-group1-sha1
  Ciphers +aes128-cbc

Links:

Kurztipp: Legitimierung Farbprofil / farbverwaltendes Gerät

Nach den beiden Kurztipps zum NetworkManager (hier und hier) hier nun noch ein Tipp der Sorte, wie man nervende PolicyKit-Warnungen weg bekommt.

Nach dem Upgrade auf Ubuntu 20.04. und dem Login innerhalb einer Remote-Session über XDMCP poppten nacheinander folgende Warnmeldungen auf und verlangen die Kennworteingabe:

Nach den Erfahrungen der älteren Tipps habe ich einfach geraten und folgende Dateien mit entsprechenden Inhalten angelegt. Und was soll ich sagen, es hat funktioniert, yipeeh!

Legitimierung ist zur Erstellung eines farbverwaltendes Geräts notwendig

$ sudo vi /etc/polkit-1/localauthority/50-local.d/52-allow-color-manager-create-device.pkla

[Network Manager all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.settings.modify.system;org.freedesktop.color-manager.create-device
ResultAny=no
ResultInactive=no
ResultActive=yes

Legitimierung ist zum Erstellen eines Farbprofils erforderlich

$ sudo vi /etc/polkit-1/localauthority/50-local.d/53-allow-color-manager-create-profile.pkla

[Network Manager all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.settings.modify.system;org.freedesktop.color-manager.create-profile
ResultAny=no
ResultInactive=no
ResultActive=yes