新しい Linux パッケージ ツールhttp://snapcraft.io/create/を試しています。
いくつかのドキュメントがありますが、あまり成熟しておらず、すべてが含まれているわけではありません。
私がやろうとしているのは、Qt フレームワークを使用してコンパイルされたバイナリのパッケージを生成することです。したがって、.so ファイルのロードに依存します。snapcraft にこれらすべての依存関係をプルしてプログラム階層 (マウントされた squashfs) に追加するよう説得する方法をドキュメントで見つけることができませんでした。
したがって、「一時的に修正する」ために、バイナリでlddを実行し、これを単独で実行する非常に不十分なシェルスクリプトをハッキングしました。実際にすべての必要なライブラリがイメージに含まれているため、その「一種」は機能しますが、プログラムはそれらを見つけることができません。それらのほとんどには独自のパスがあり、ルート lib フォルダーにないためです。/usr/lib
プログラムを起動しようとしたときに発生するエラーの例は次のとおりです。
/snap/huggle/x1/usr/bin/huggle: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory
しかし、ライブラリはそこにあります:
/snap/huggle/x1/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
それを見つける方法がわからないだけです。一方で、snapcraft が非常にシンプルで馬鹿げたパッケージング ツールとして宣伝されていることを考えると、C++ バイナリをパッケージ化するような単純なものがこれほど複雑になるのは非常に奇妙に思えます。これを適切に行うにはどうすればよいですか?