© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB

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. Если у вас возникнут вопросы, правки к статье или еще что-то то пишите. Постараюсь ответить всем.

Комментарии

Комментарии

Только авторизованные пользователи могут оставлять комментарии.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь
15 июля 2018 г. 20:20
igorpodoba

C++ - Тест 003. Условия и циклы

  • Результат 92баллов,
  • Очки рейтинга8
15 июля 2018 г. 20:17
igorpodoba

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

  • Результат 91баллов,
  • Очки рейтинга8
14 июля 2018 г. 7:47
igorpodoba

C++ - Тест 003. Условия и циклы

  • Результат 71баллов,
  • Очки рейтинга1
Последние комментарии
14 июля 2018 г. 18:49
Евгений Легоцкой

Qt/C++ - Урок 049. QTranslator - динамический перевод мультиязычного приложения на Qt

У меня на руках есть один проект, где какие-то потуги с переводами и подключением этого добра в CMAKE делались.Но там файл перевода добавляется прямо в ресурсы проекта. То есть бинарных qm файл...
14 июля 2018 г. 18:35
Евгений Легоцкой

Django - Урок 036. Как добавить аутентификацию через социальные сети. ВКонтакте

Не, не будет, в данной батарейке уже есть необходимый функционал по разрулированию этой проблемы. Аутентификации из разных социальных сетей будут сливаться на один аккаунт. Так что всё нормаль...
14 июля 2018 г. 4:17
Gerych

Django - Урок 036. Как добавить аутентификацию через социальные сети. ВКонтакте

Мне интересно что будет если в обеих сетях в авторизации одинаковый еmail. Не выведет ли ошибку ?
13 июля 2018 г. 11:55
Arrow

Qt/C++ - Урок 049. QTranslator - динамический перевод мультиязычного приложения на Qt

Хорошая статья. Только один вопрос как это сделать для CMake? Интересует именно запись в CMakeList TRANSLATIONS += QtLanguage_ru.ts CODECFORSRC = UTF-8 П...
Сейчас обсуждают на форуме
14 июля 2018 г. 18:56
Евгений Легоцкой

Как сделать пустое поле в QDateEdit

Слишком много возни, чтобы подробно объяснить, что нужно сделать.... тем более, что у вас ещё зависимость на базу данных... Для начала нужно наследоваться от QCalendarWidget, посколь...
12 июля 2018 г. 15:02
незнаток

Перенос значений таблицы в другую таблицу

void Opisanie::perevod(){ QString mil; int mf = ui->table1->rowCount(); for(int ik = 0; ik < mf; ik++) { QString tu = ui->table1->model()->data(ui...
12 июля 2018 г. 7:46
Евгений Легоцкой

OpenSSL на Windows10

Совсем забыл. Вот в этом посте есть ссылка на скачивание openssl библиотек для msvc-2015
11 июля 2018 г. 16:05
Ruslan Polupan

Наследование от QLineEdit

Из опыта разработки в нашей конторе (для программирование хобби я техподдержка): Если есть возможность переложить логику приложения на базу данных то это лутший вариант. Т.е. использовать по м...

Рекомендуемые страницы