Реклама

SNAP Урок 01. Что такое snap и простой пример сборки пакета

snap

Всем привет.

Давно уже планировал написать пару статей на тему сборки самодостаточных пакетов snap.

Если кто не в курсе, то технология snapcraft это сборка пакета на подобии *.deb или *.rpm . Но за небольшим отличием, snap пакет полностью самодостаточен. То есть ему от системы ничего вообще не нужно.  На данный момент пакеты snap поддерживают такие дистрибутивы как Arch , Debian, Fedora , Gentoo и само собою сам родоначальник данной технологии Ubuntu . Есть еще около 5-6 дистрибутивов которые поддерживают, но я их не проверял. На форумах пишут, что работает)).

В данной статье я немного опишу конфигурационный файл для сборки.

Для того чтобы собрать snap пакет требуется иметь установленными в системе snapd и snapcraft.

  1. snapd - утилита для работы с установкой и  управление готовых пакетов.
  2. snapcraft - утилита для сборки своих приложение в пакет snap.

После того как вы установите все нужно для работы создадим каталог для нашей работы и в нем файл snapcraft.yaml или в консоли snapcraft init и тогда получим дефолтный файл в каталоге snap который будет выглядеть так:

name: my-snap-name # you probably want to 'snapcraft register <name>'
version: '0.1' # just for humans, typically '1.2+git' or '1.3.2'
summary: Single-line elevator pitch for your amazing snap # 79 char long summary
description: |
This is my-snap's description. You have a paragraph or two to tell the
most important story about your snap. Keep it under 100 words though,
we live in tweetspace and your description wants to look good in the snap
store.

grade: devel # must be 'stable' to release into candidate/stable channels
confinement: devmode # use 'strict' once you have the right plugs and slots

parts:
my-part:
# See 'snapcraft plugins'
plugin: nil

Опишу в кратце некоторые пункты файла:

  1. Name - Имя пакето которое будет присвоено ему после создания
  2. ersion - После названия пакета идет версия, нужно будет если вы планируете обновлять ваше приложение
  3. Description - Описание вашего приложения что будет показываться в консоли
  4. Confinement - Механизм ограничения для работы пакета
  5. Architectures - тут все понятно. архитектура пакета. так же будет указываться в названии пакета
  6. Apps - Это может быть приложение графичекое, или консольная команда и запуск демона(сервис).
  7. Parts - Это часть конфига что будет обрабатывать snapcraft

Теперь набираем в консоли команду snapcraft то мы на основе данного конфигурационного файла получим наш первый пакет с именем my-snap-name_0.1_amd64.snap

Несколько консольных команд которые будут полезны для изучения и ознакомления:

snap find - список доступных пакетов snap

sudo snap install <имя_пакета> - установка пакета. нужны права рута

sudo snap refresh <имя_пакета> - обновление пакета

snap list - список всех установленных пакетов snap в системе

sudo snap remove <имя_пакета> - удаление пакета

snap changes - очень полезная утилита, показывает информацию о всех изменения. (установка, обновление, удаление)

В следующей статье мы разберем уже на примере моего маленького графического приложения написанного на Qt настройки, установку и запуск из любого места в системе.

P.S. Если у вас возникнут вопросы, правки к статье или еще что-то то пишите. Постараюсь ответить всем.

Реклама

Комментарии

Комментарии

Только авторизованные пользователи могут оставлять комментарии.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь
  • JaJay
  • 17 декабря 2017 г. 5:16

C++ - Тест 002. Константы

  • Результат 58 баллов
  • Очки рейтинга -2
  • JaJay
  • 17 декабря 2017 г. 4:55

C++ - Тест 001. Первая программа и типы данных

  • Результат 93 баллов
  • Очки рейтинга 8
  • JaJay
  • 17 декабря 2017 г. 4:48

C++ - Тест 001. Первая программа и типы данных

  • Результат 66 баллов
  • Очки рейтинга -1
Последние комментарии
  • EVILEG
  • 7 декабря 2017 г. 9:47

Django - Урок 011. Добавление комментариев на сайт с Django

Визуальный пример чего? комментариев? При ответе на конкретный комментарий рядом с ником отвечающего будет стрелочка и указание ник другого пользователя. Который будет ссылкой на коммента...

  • Bernar
  • 7 декабря 2017 г. 9:24

Django - Урок 011. Добавление комментариев на сайт с Django

есть визуальный пример ?

  • EVILEG
  • 6 декабря 2017 г. 11:30

Django - Урок 011. Добавление комментариев на сайт с Django

Да, так будет даже лучше, я на сайте уже обновил до такого вида код Вот это уже не нужно if request.method == 'POST': Поскольку Вы и так используете метод post, то есть эта про...

  • Bernar
  • 6 декабря 2017 г. 11:19

Django - Урок 011. Добавление комментариев на сайт с Django

сделал немного по другому class EArticleView(View): template_name = 'knowledge/article.html' comment_form = CommentForm def get(self, request, *args, **kwargs): ...

Сейчас обсуждают на форуме
  • EVILEG
  • 16 декабря 2017 г. 17:23

Пауза в многопоточности

QFuture, который возвращается QtConcurrent::map имеет методы pause() и resume() и теоретически должен поддерживать этот функционал. Но для Qt...

  • Миша
  • 15 декабря 2017 г. 11:26

Как найти в QVector макс и мин

Спасибо

  • Galant
  • 14 декабря 2017 г. 19:58

LPT

Понял! Спасибо!

  • EVILEG
  • 14 декабря 2017 г. 13:38

QCustomPlot можно ли построить прерывистую линию на одном графике?

Во-первых: В pro файле проект по идее достаточно указать следующий define для включения возможности рендеринга через OpenGL DEFINES += QCUSTOMPLOT_USE_OPENGL И во вторых:...

  • EVILEG
  • 13 декабря 2017 г. 8:05

В многопоточности выполнять действие только в одном из потоков

Статическиe методs QThread::currentThread(); и QThread::currentThreadId() могут возвращать указатель на поток и его handle id соответственно. Можете попробовать через как...