Technik

Amazon: Dieses Video ist derzeit nicht verfügbar

28. März 2023 · Anwendungen · andreas · 7 Kommentare

Seit letztem Jahr begrüßt uns Amazon Prime Video in schöner Unregelmäßigkeit beim Versuch, ein Video zu Streamen, mit dem Hinweis “Dieses Video ist derzeit nicht verfügbar.”.

Dieses Video ist derzeit nicht verfügbar.

Leider ist die Fehlermeldung recht generisch gehalten und liefert keinerlei Anhaltspunkte, wo man mit der Ursachenforschung bzw. Fehlerbehebung ansetzen könnte: Ein Problem hier vor Ort? Technische Probleme bei Amazon? Oder eine ganz andere Ursache?

Aus diesem Grund hatten wir beim ersten Auftreten des Fehlers den Support von Amazon kontaktiert, wo sich ein hilfsbereiter Mitarbeiter der Sache annahm. Im Dialog stellte sich recht schnell unsere aktuelle IP-Adresse als mögliche Ursache heraus, welche die Systeme von Amazon irgendwo in den USA verorteten - eine Behauptung, die ich nach Blick aus dem Fenster ganz klar verneinen konnte.

Die Lösung war recht einfach und hat auch bei erneutem Auftreten der Meldung bisher zuverlässig geholfen: im Menü der heimischen FRITZ!Box auf “Internet” / “Online-Monitor” wechseln und dort “Neu verbinden”. Mit der neu zugewiesenen IP-Adresse waren dann die vorher nicht verfügbaren Videos wieder abspielbar.


Robert Beckebans RBDOOM-3-BFG

6. März 2023 · Spiele · andreas · Kein Kommentar

Was mit Quake 2 funktioniert, funktioniert auch mit Doom 3 - zumindest mit der Doom 3 BFG-Edition. Für diese wurde das ursprüngliche Doom 3 nicht nur überarbeitet, sondern auch um die Missionspakete “Resurrection of Evil” und “The Lost Mission” sowie die Vorgängerspiele Doom und Doom 2 ergänzt.

Die am weitesten verbreitete Portierung der Spiele-Engine stammt von Robert Beckebans, der das Projekt “RBDOOM-3-BFG” bis heute kontinuierlich pflegt und auftretende Fehler bereinigt.

RBDOOM-3-BFG is based on DOOM-3-BFG and the goal of this port is to bring DOOM-3-BFG up to latest technology in 2023 making it closer to Doom 2016 while still remaining a DOOM 3 port regarding the gameplay. [Quelle]

Die benötigten Dateien können entweder direkt von der Projektseite auf Github heruntergeladen oder - sofern verfügbar - aus den offiziellen Paketquellen einer Linux-Distribution installiert weden:

$ sudo apt install rbdoom3bfg

Wie üblich sind bei der Spiele-Engine keinerlei Inhalte enthalten, diese müssen zusätzlich bereitgestellt werden. Der einfachste (legale) Weg führt entweder über einen Kauf bei Steam oder GOG.com, die weitere Vorgehensweise ist auf der Projektseite beschrieben.

Sofern die Installationsdatei von GOG.com vorliegt, kann diese auch - statt wie empfohlen umständlich über Wine installiert - direkt mit “innoextract” entpackt und anschließend verwendet werden:

$ innoextract setup_doom_3_bfg_1.14_\(13452\).exe

Sobald die Spieldaten entpackt wurden, können diese an einen beliebigen Ort “MEIN-PFAD” kopiert werden:

$ mkdir -p /MEIN-PFAD/Doom3BFG/
$ cp -r --preserve=timestamp app/base /MEIN-PFAD/Doom3BFG/

Anschließend sollte noch das Konfigurationsverzeichnis erzeugt und eine “autoexec.cfg” darin abgelegt werden, welche die Sprache auf die gewünschte Version setzt - bei den Installationsdateien von GOG.com wird sonst automatisch “Japanisch” als Standardsprache gewählt.

$ mkdir -p ~/.local/share/rbdoom3bfg/base/
$ echo 'seta sys_lang "english"' >> ~/.local/share/rbdoom3bfg/base/autoexec.cfg

Dann kann Doom 3 BFG gestartet werden, wobei zu beachten ist, daß es keinerlei Parameter gibt, um das Datenverzeichnis anzugeben. Das ausführbare “rbdoom3bfg” ist im Ordner “MEIN-PFAD” zu starten.

Wer möchte, kann sich den Start noch mit Hilfe einer “.desktop”-Datei erleichtern.

$ cp --preserve=timestamp app/language_setup.png /MEIN-PFAD/Doom3BFG/

$ vi ~/.local/share/applications/Doom3BFG.desktop

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Doom 3 BFG
Exec=/usr/games/rbdoom3bfg
Icon=/MEIN-PFAD/Doom3BFG/language_setup.png
Path=/MEIN-PFAD/Doom3BFG/
Terminal=false
Categories=Game

Auch hier ist “MEIN-PFAD” mit dem oben gewählten Pfad zu ersetzen.

Optional: AppArmor Profil

Optional kann auch noch ein AppArmor Profil erzeugt und in “/etc/apparmor.d” abgelegt werden. Folgendes Profil reicht (hier) aus, um RBDOOM-3-BFG mit einer NVidia-Graphikkarte zu spielen:

# 2023-03-02 athul/initial
#include <tunables/global>

/usr/games/rbdoom3bfg {
  #include <abstractions/X>
  #include <abstractions/base>
  #include <abstractions/audio>
  #include <abstractions/nvidia>

  deny network,
  @{HOME}/.local/share/rbdoom3bfg/** rwk,
  /MEIN-PFAD/Doom3BFG/** r,
  /sys/devices/** r,
  /var/lib/dbus/machine-id r,
  /proc/** r,
  /dev/nvidia* rw,
}

Zu beachten ist die Anpassung von “MEIN-PFAD” sowie das anschließende Neuladen der AppArmor-Profile, nachdem “rbdoom3bfg” hinzugefügt wurde.


Retrogaming mit Yamagi Quake II

26. Februar 2023 · Spiele · andreas · Kein Kommentar

Irgendwie fühlt es sich seltsam an, die Wörter Quake II und Retrogaming in einem Satz zu verwenden, aber Wikipedia sagt

häufig werden bereits Spiele bis zum Ende der 1990er Jahre als „retro“ angesehen [Quelle]

und somit fällt das Ende 1997 veröffetlichte Quake II wohl in diese Kategorie.

Trotz des für Software fast biblischen Alters können Spieleentwickler mit der Freigabe des Quellcodes der Spiel-Engine dafür sorgen, daß auch Jahrzehnte nach der Erstveröffentlichung ihre Werke ohne größere Klimmzüge (für den Endanwender) noch gespielt werden können. So auch Quake II, dessen Spiel-Engine auf unzählige Plattformen portiert wurde und inzwischen sogar im Webbrowser lauffähig ist.

Ein auf PCs weitverbreiteter Client für Quake II ist Yamagi Quake II, der für verschiedene Betriebssysteme verfügbar und auch bei vielen Linux-Disttributionen in den Standard-Paketquellenenthalten ist.

Screenshot

Wer das Rundum-Sorglos-Paket möchte, sollte das Paket “quake2” installieren, welches auch gleich den “game-data-packager” mitinstalliert. Dieser schnürt für eine ganze Reihe von Spielen mehr oder minder vollautomatisch aus bereits vorhandenen Spiel-Installationen oder Original-CDs installationsfähige Datenpakete, im Fall von Quake II werden bei Bedarf sogar die Daten der Demo heruntergeladen und paketiert.

Wer möchte, kann aber auch mit Hilfe einer Minimalinstallation und ein paar Befehlen auf der Kommandozeile eine spielfähige Installation erstellen. Die Anleitung hierfür bietet der Yamagi Quake II Installation Guide.

Wer das Original-Spiel nicht oder nicht mehr besitzt, kann sich mehr oder minder regelmäßig bei GOG.com für wenig Geld die Originalversion inklusive der offiziellen Missionspakete zulegen.

Die Installation des Yamagi-Clients erfolgt in diesem Fall ohne die “recommends”-Pakete

$ sudo apt install yamagi-quake2 --no-install-recommends

Anschließend kann mit Hilfe von “innoextract” das GOG-Installationspaket entpackt werden und die Dateien können in das Yamagi Quake II-Standard-Verzeichnis “~/.yq2/” kopiert werden.

$ sudo apt install innoextract
...
$ innoextract setup_quake2_quad_damage_2.0.0.3.exe
...
$ mkdir ~/.yq2/
$ cp -r --preserve=timestamp app/baseq2 ~/.yq2/
$ cp -r --preserve=timestamp app/music ~/.yq2/

Mit dem Aufruf von

$ /usr/lib/yamagi-quake2/quake2

wird Quake II gestartet. Wer die Dateien lieber an einer anderen Stelle in Dateisystem ablegen möchte, kann dies ebenfalls tun und muß den Aufruf des Clients um den Parameter “-datadir” ergänzen:

$ /usr/lib/yamagi-quake2/quake2 -datadir VERZEICHNISNAME

Um das Starten komfortabler zu gestalten, kann noch eine “.desktop”-Datei erstellt werden:

$ cp --preserve=timestamp app/goggame-1441704824.ico ~/.yq2/
$ vi .local/share/applications/Quake2.desktop

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Quake ][
Exec=/usr/lib/yamagi-quake2/quake2
Icon=~/.yq2/goggame-1441704824.ico
Terminal=false
Categories=Game

Das Kopieren der Missionspakete erfolgt analog zum Hauptspiel:

$ cp -r --preserve=timestamp app/rogue ~/.yq2/
$ cp -r --preserve=timestamp app/xatrix ~/.yq2/

Beim Aufruf des Clients ist noch ein “+set game rogue” oder “+set game xatrix” hinzuzufügen.


GRUB stellt Hintergrundbild nicht dar

23. Februar 2023 · Betriebssysteme · andreas · Kein Kommentar

Während auf anderen Geräten das GRUB-Menü in dem von Debian vorgesehenen Standard-Theme erstrahlte, wurde auf einem frisch installierten Laptop nur die Fallback-Darstellung in Cyan auf blauem Hintergrund gewählt:

GRUB Menu

Funktional ist dies zwar keine Einschränkung, aber die Neugier war geweckt und das “Warum?” wollte gelöst werden. Die Ausgabe von “update-grub” sah vollkommen normal aus, die Einbindung des Hintergrundbildes wurde auch explizit angezeigt:

$ sudo update-grub
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
...
done

Nachdem die in GRUB eingebauten Videotests alle erfolgreich waren und auch der Plymouth-Bootsplash wie erwartet angezeigt wurde, musste das Problem an einer anderen Stelle liegen - und so war es auch.

Den entscheidenden Hinweis lieferte der Debiag Bug Report #945404 “grub2-common: ‘/boot/grub/.background_cache.png’ is not created on LUKS encrypted system”: die Datenpartition des Laptops ist verschlüsselt und bei der Überprüfung des Hintergrundbildes erkennt das zuständige Skript nicht, daß beim Booten auf das Bild nicht mehr zugegriffen werden kann. Als möglicher Verursacher wurde Zeile 100 der Datei “/etc/grub.d/05_debian_theme” benannt:

It looks like the command ‘if is_path_readable_by_grub “${1}”; then’ in line 100 in ‘/etc/grub.d/05_debian_theme’ always returns “true”, and therefore ‘/boot/grub/.background_cache.png’ is never created. [Quelle]

“is_path_readable_by_grub” scheint entweder gar nicht zu funktionieren oder im konkreten Fall ein falsches Ergebnis zurückzuliefern.

	# Step #5: Check if GRUB can read the background image directly.
	# If so, we can remove the cache file (if any). Otherwise the background
	# image needs to be cached under /boot/grub/.
	if is_path_readable_by_grub "${1}"; then
		rm --force "${BACKGROUND_CACHE}.jpeg" \
			"${BACKGROUND_CACHE}.png" "${BACKGROUND_CACHE}.tga"
	elif cp "${1}" "${BACKGROUND_CACHE}.${reader}"; then
		set -- "${BACKGROUND_CACHE}.${reader}" "${2}" "${3}"
	else
		return 5
	fi

Als einfacher Test bzw. Workround wurde das Ergebnis der Abfrage durch “false” ersetzt

	if false; then

und die Konfigurationsdatei neu erzeugt:

$ sudo update-grub
Generating grub configuration file ...
Found background image: .background_cache.png
...
done

Nun wurde - wie erzwungen - davon ausgegangen, daß das Hintergrundbild zum Zeitpunkt des Bootens nicht lesbar sein würde und deshalb eine Kopie in einem für GRUB zugreifbaren Bereich erstellt.

Beim nächsten Bootvorgang wurde das GRUB-Menü dann auch mit Theme dargestellt. Ein vielleicht schönerer Workaround als die direkte Änderung der Datei “/etc/grub.d/05_debian_theme” ist im oben genannte Bug Report ebenfalls dargestellt.


Speicherort für GNOME Shell-Extension Schema-Dateien

19. Februar 2023 · Programmierung · andreas · Kein Kommentar

Eine selbsterstellte Erweiterung für die GNOME Shell funktionierte zwar einwandfrei, allerdings beschwerte sich der Dconf-Editor, daß die Konfigurations-Schlüssel trotz vorhandenener “schema”-Datei im Erweiterungsordner nicht von einem Schema definiert würden.

Screenshot

Beim Klick auf einen Schlüssel wurde zusätzlich eine erweiterte Fehlermeldung angezeigt:

Kein Schema verfügbar. Ein Schema beschreibt die Verwendung eines Schlüssels und Dconf-Editor kann kein Schema finden, das diesem Schlüssel zugeordnet ist.

Zur Lösung des Problems half ein Blick in die Dateiliste einer mit Debian mitgelieferten Erweiterung wie z.B. “Dash to Dock

/usr/share/glib-2.0/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml

Offensichtlich müssen die “schema”-Dateien in einem gesonderten Verzeichnis gespeichert werden. Für eine im Benutzerkontext installierte Erweiterung ist dies der Ordner “~/.local/share/glib-2.0/schemas” statt dem Systemordner “/usr/share/glib-2.0/schemas”

$ mkdir -p ~/.local/share/glib-2.0/schemas
$ cp org.gnome.shell.extensions.myscript.gschema.xml ~/.local/share/glib-2.0/schemas/org.gnome.shell.extensions.myscript.gschema.xml
$ cd ~/.local/share/glib-2.0/schemas
$ glib-compile-schemas .

Nach dem Anlegen des Ordners und dem Kopieren der Schema-Datei (wahlweise funktioniert auch das Setzen eines symbolischen Links) muß die Schema-Datei noch kompiliert werden, dann ist auch der Dconf-Editor zufrieden.

RTFM hätte hier auch ohne den Umweg über eine andere Erweiterung geholfen, denn die Hilfeseite zu “glib-compile-schemas” verrät bereits:

The usual location to install schema files is /usr/share/glib-2.0/schemas.