Мое установленное 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
флаг во время установки, и даже если я попытаюсь сделать это 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, запустите
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/