私の 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 によってディレクトリ内に見つかって配置されるわけではないということです。この仮説を 2 つの方法でテストしようとしました。1 つ目は、prime
インストール前にディレクトリから実行することですが、バグはそこでは再現されません。2 つ目は、必要なライブラリだと信じていたものを上記のディレクトリにコピーすることですが、インストール中に snapcraft 制限を変更してフラグdevmode
を使用しても--devmode
、そしてなんとchmod 777 .
root として試しても、読み取り専用です。
私の馬鹿げたプロジェクトを見てみたいという方がいらっしゃいましたら、ここからクローンできます...
http://github.com/spencerparkin/RubiksCube.git
snapcraft.yaml ファイルは scons から実行するように設定されています。プロジェクト ルートで snapcrafting を試してはいけません。試す前に snapcraft.yaml ファイルを他のディレクトリにコピーします。
私は長い道のりを歩んできましたし、実際にこのことがうまくいくことにかなり近づいていると感じています...ただ、次から次へと障害が立ちはだかるだけです...私はダメです。
答え1
ここでは多くの問題があるので、これを分解してみましょう。
逃げるprime
クラシックシステムから直接実行すると、prime
クラシックシステムにあるすべてのライブラリが表示されるため、実際には最善の方法ではありません。スナップこの場合、実際に表示されるルートファイルシステムはubuntu-core
または ですcore
。
環境がどのような感じか体験するには、その環境のシェルにジャンプする方がよいでしょう。そのためには、次のコマンドを実行します。
snap run --shell <snap-name>.<app-name>
読み取り専用スナップ
実際のスナップ用にインストールされたスナップは にマウントされますがsquashfs
、このファイルシステムは読み取り専用であり、インストールされたスナップに書き込みや変更を加えることができない理由です。
開発中は、プロジェクト ディレクトリから実行する方がよい場合があります。
snap try prime [--devmode]
そうすることで、prime
ディレクトリをリアルタイムで編集し、さまざまなバリエーションをテストすることができます。
アプリを起動する
モジュール ロードの警告はそれほどひどいものではありません。一部のスナップでも発生します。問題なのは、ディスプレイが見つからないことです。すぐに開始するには、非常に高速にブートストラップできるデスクトップ ランチャーがあります。
これらは部品として配送され、スナップクラフトでどのように動作するかを確認するために、
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/