正在运行prime

正在运行prime

我的 snap 安装应用程序是一个 wxWidgets 应用程序。它在编译和链接后运行良好,但从 snap 安装后就无法正常工作。我假设当我输入应用程序的名称时,也许“snapd”会运行目录下的包装器/snap/<myappname>/x1/。无论如何,我得到了...

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?

我唯一的猜测是,并非所有依赖项都可以/snap/<mayappname>/x1/usr/lib/x86_64-linux-gnu/通过 snap install 找到并放置在目录中。我尝试用两种方式来测试这个假设。首先,在安装之前运行目录,但错误无法在那里重现prime。其次,将我认为需要的库复制到所述目录中,但它是只读的,即使我在安装过程中将 snapcraft 限制更改为devmode并使用该--devmode标志,即使我尝试以 root 身份运行。chmod 777 .

如果有人有兴趣看看我的这个愚蠢的项目,可以从...克隆它。

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

snapcraft.yaml 文件配置为在 scons 上运行。我不会尝试在项目根目录中使用 snapcraft。在尝试之前,我将 snapcraft.yaml 文件复制到其他目录。

我已经走了很长一段路,感觉离真正让这件事成功已经很近了......只是一个接一个的障碍......我很差劲。

答案1

因此,让我们来分析一下这个问题,因为这里存在很多问题:

正在运行prime

当你prime直接从经典系统运行时,你会看到经典系统拥有的所有库,所以这实际上并不是最好的方法。当作为折断在这种情况下,实际看到的根文件系统是ubuntu-corecore

为了体验该环境的感觉,最好进入该环境的 shell,你可以通过运行以下命令进行操作:

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

只读快照

在为实际快照安装时,快照会挂载到squashfs,此文件系统是只读的,因此您无法写入和修改已安装的快照。

在开发过程中,最好从项目目录中执行以下任务:

snap try prime [--devmode]

通过这样做,您可以实时编辑目录来prime测试事物的变化。

启动应用程序

模块加载警告并不是那么糟糕,它们也发生在一些快照上。糟糕的是它找不到显示器。为了快速启动,可以使用桌面启动器,它可以让您快速启动。

它们是作为零件提供的,为了了解它是如何与 snapcraft 一起工作的,运行

snapcraft update
snapcraft search desktop

要查看其中一个函数的parts作用,请运行

snapcraft define <part-name>

有关桌面启动器的更多信息,请访问https://insights.ubuntu.com/2016/07/06/ubuntu-app-developer-blog-announcing-new-snap-desktop-launchers/

相关内容