#linux #snapcraft
#linux #snapcraft
Вопрос:
Я тестирую новый инструмент для упаковки Linuxhttp://snapcraft.io/create
В нем есть некоторая документация, но она не очень зрелая и содержит не все.
Что я пытаюсь сделать, так это сгенерировать пакет для моего двоичного файла, который скомпилирован с использованием Qt Framework, таким образом, это зависит от загрузки файлов .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 , может быть настолько сложной. Как я должен сделать это правильно?
Комментарии:
1. Если необходимыми библиотеками являются пакеты .deb, Snapcraft может загрузить их с помощью
stage-packages
, см.: snapcraft.io/docs/reference/plugins/common