it-swarm.com.de

Fehler beim Laden des GTK-Moduls für eine App, die über eine Snap-Installation installiert wurde und ansonsten einwandfrei funktioniert

Meine snap-installierte App ist eine wxWidgets-Anwendung. Es läuft nach dem Kompilieren und Verknüpfen einwandfrei, funktioniert jedoch nicht, wenn es einmal von einem Snap aus installiert wurde. Ich gehe davon aus, dass, wenn ich den Namen meiner App eingebe, "snapd" den Wrapper unter dem Verzeichnis /snap/<myappname>/x1/ ausführt. In jedem Fall bekomme ich ...

Gtk-Message: Failed to load module "overlay-scrollbar"
Gtk-Message: Failed to load module "gail"
Gtk-Message: Failed to load module "atk-bridge"
Gtk-Message: Failed to load module "unity-gtk-module"
23:11:06: Error: Unable to initialize GTK+, is DISPLAY set properly?

Meine einzige Vermutung ist, dass nicht alle Abhängigkeiten gefunden und durch die Schnellinstallation in das Verzeichnis /snap/<mayappname>/x1/usr/lib/x86_64-linux-gnu/ gestellt werden. Ich habe versucht, diese Hypothese auf zwei Arten zu testen. Zunächst müssen Sie vor der Installation das Verzeichnis prime verlassen, aber der Fehler ist dort nicht reproduzierbar. Und zweitens, indem ich die von mir als notwendig erachteten Bibliotheken in dieses Verzeichnis kopiere, sie jedoch schreibgeschützt sind, auch wenn ich die Snapcraft-Beschränkung auf devmode ändere und während der Installation das Flag --devmode verwende. und selbst wenn ich versuche chmod 777 . als root zum laut schreien.

Wenn jemand Interesse hat, sich mein dummes Projekt anzuschauen, kann es von ...

http://github.com/spencerparkin/RubiksCube.git

Die Datei snapcraft.yaml ist so konfiguriert, dass keine Scons mehr vorhanden sind. Ich würde nicht versuchen, in der Projektwurzel Snapcrafting. Ich kopiere die snapcraft.yaml-Datei in ein anderes Verzeichnis, bevor ich das versuche.

Ich habe einen weiten Weg zurückgelegt und fühle mich so nah dran, dieses Ding zum Laufen zu bringen ... nur eine Straßensperre nach der anderen ... ich scheiße.

2
Spencer Parkin

Nehmen wir also dieses Beispiel, da es hier viele Probleme gibt:

Laufen von prime

Wenn Sie prime direkt von Ihrem klassischen System aus ausführen, sehen Sie alle Bibliotheken, über die Ihr klassisches System verfügt. Dies ist also nicht der beste Weg, dies zu tun. Bei Ausführung als Snap ist das tatsächlich angezeigte Root-Dateisystem in diesem Fall ubuntu-core oder core.

Um herauszufinden, wie sich die Umgebung anfühlt, ist es möglicherweise besser, in eine Shell für diese Umgebung zu springen. Führen Sie dazu Folgendes aus:

snap run --Shell <snap-name>.<app-name>

Schreibgeschützt

Bei der Installation von Snaps für einen tatsächlichen Snap handelt es sich um eine Einbindung in ein squashfs. Dieses Dateisystem ist schreibgeschützt und der Grund, warum Sie keine Änderungen am installierten Snap vornehmen und schreiben können.

Während der Entwicklung ist es möglicherweise besser, dies aus Ihrem Projektverzeichnis heraus zu tun:

snap try prime [--devmode]

Auf diese Weise können Sie in Ihrem prime -Verzeichnis Live-Änderungen vornehmen, um Variationen von Dingen zu testen.

Starten der App

Die Warnungen zum Laden des Moduls sind nicht so schlimm, sie treten auch bei einigen Snaps auf. Was ist schlecht ist, dass es keine Anzeige finden kann. Für einen schnellen Einstieg gibt es Desktop-Starter, mit denen Sie ziemlich schnell gebootet werden können.

Sie werden als Teile geliefert, um ein Gefühl dafür zu bekommen, wie dies mit Snapcraft funktioniert

snapcraft update
snapcraft search desktop

Und um zu sehen, was einer dieser parts macht, renne

snapcraft define <part-name>

Weitere Informationen zu Desktop-Startprogrammen finden Sie unter https://insights.ubuntu.com/2016/07/06/ubuntu-app-developer-blog-announcing-new-snap-desktop-launchers/

1
sergiusens