@makenow

Как правильно делать сборку для snap (snapcraft.yaml)?

Кто-то шарит как правильно делать сборку для snap (snapcraft.yaml)?

Суть: есть уже готовый бинарь из https://gitlab.com/go-apps-XnjRcS/password-generator, который нужно упаковать в snap, но я ещё не разобрался как правильно это сделать. Получаю runtime ошибки связанные с gtk. Ссылка на сам snapcraft.yaml https://gist.github.com/7274b07cb1491b79005e28a6f6...

97997030_2854713881315512_64960457835974
  • Вопрос задан
  • 260 просмотров
Решения вопроса 1
@klirichek
Полагаю, там должно быть достаточно просто прописать extension (если программа в итоге "общается" с gtk/qt, а не прямо висит на голых иксах). Ну и прописать соответствующий лаунчер (без него обычно бывают разные странные спец. эффекты, вроде невозможности авторизоваться). Что-то вроде:
apps:
  my-part:
    command: desktop-launch $SNAP/bin/passgen2
    extensions:
      - gnome-3-28
...


Ну и собирать такие вещи лучше итеративно; в процессе придёт понимание, чего не хватает.
Скорее всего на базе гнома из кучи ваших либ больше ничего не понадобится (т.е. stage-packages может "похудеть" или вообще исчезнуть)
Запускаем `snapcraft try`. Он проходит по всем стадиям, и готовит папку prime. Дальше подключаем её с помощью `snap try` - получаем гибкий снап, который одновременно и приложение, и папка, куда можно лазить и что-то менять (добавлять/настраивать) прямо на лету. Потом обкатанные настройки прописываем в сам скрипт снапкрафта. Confinement, кстати, изначально лучше поставить devmode. Тогда приложению открыт доступ повсюду. И потом с помощью snappy-debug в параллельной консоли смотреть, куда оно на самом деле лазает, и, соответственно, какие plugs ему надо прописать, чтобы оно успешно взлетело в strict.

(например, с вашим файлом приложение надо будет вызывать как 'passgen2.my-part' - подозреваю, что вы не этого хотели добиться, и поэтому эта часть будет меняться. А если запускать полный ребилд snapcraft - по каждому чиху - это медленно и грустно).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы