К основному контенту

Как купить КАСКО на новый автомобиль – советы специалистов

Как создать Snap пакет Ubuntu 1604

Технология Snap разработанная в Canonical для облегчения установки программного обеспечения в дистрибутиве Ubuntu появилась совсем недавно. Она разрабатывалась на протяжении последних нескольких лет, но только к релизу Ubuntu 16.04 стала более-менее готова к использованию широкой аудиторией.

Основное преимущество Snap, это возможность установки программ без зависимостей. Все необходимые программе библиотеки находятся уже в пакете с программой и для ее запуска ничего не требуется от системы. При обновлении вам достаточно обновить один snap пакет, не обновляя всю систему, а при сбоях и ошибках можно откатить пакет до предыдущей версии. Сейчас ходит много споров по поводу того действительно ли хороша технология snap или нужно от нее отказаться в пользу deb пакетов. Но все это покажет время и тестирование, а в этой статье мы рассмотрим создание snap пакетов. Тем более, что создавать их немного проще, чем те же самые deb пакеты. Создание Snap пакетов в Ubuntu 16.04

Чтобы создать snap пакет мы будем использовать специальный инструмент - Snapcraft. Это официальный инструмент для создания snap пакетов, который позволяет разработчику упаковывать программы собирая необходимые файлы по всей системе. Snapcraft позволяет не только копировать файлы, но и скачивать исходники и собирать программу.

В этой статье мы рассмотрим как создавать snap пакеты на примере небольшого приложения Samplenote.

Сначала нам нужно установить Snapcraft. Чтобы получить самую новую версию добавим к нашей системе PPA:

sudo add-apt-repository ppa:snappy-dev/tools

Теперь обновим список пакетов и установим программу:

sudo apt-get update $ sudo apt-get install snapcraft

Когда завершится установка Snapcraft можно переходить к получению исходников программы. Сначала скачаем исходники из GitHub и распакуем их:

wget https://github.com/Automattic/simplenote-electron/releases/download/v1.0.1/Simplenote-linux-x64.1.0.1.tar.gz $ tar xvzf Simplenote-linux-x64.1.0.1.tar.gz

Поскольку программу не нужно компилировать наша задача немного облегчается. Переходим в папку с программой и инициализируем там окружение сборки Snapcraft:

cd Simplenote-linux-x64

snapcraft init

После выполнения последней команды, в папке появится файл snapcraft.yml. С помощью редактирования этого файла мы и настроим процесс создания нашего пакета snap. Нам понадобится файл такого содержания:

name: simplenote version: 1.0.1 summary: The simplest way to keep notes. description: The simplest way to keep notes. Light, clean, and free. apps: simplenote: command: usr/bin/wrapper plugs: - unity7 - opengl - network parts: simplenote: plugin: copy stage-packages: - libnss3 - fontconfig-config - gnome-themes-standard files: Simplenote: Simplenote wrapper: usr/bin/wrapper icudtl.dat: icudtl.dat snapshot_blob.bin: snapshot_blob.bin natives_blob.bin: natives_blob.bin resources*: resources libnode.so: usr/lib/x86_64-linux-gnu/libnode.so libffmpeg.so: usr/lib/x86_64-linux-gnu/libffmpeg.so

Первые четыре строчки - это информация о самом пакете, название программы, версия и краткое и полное описание.

Command - это команда запуска программы, мы будем использовать скрипт warpper, потому, что нам нужно указать дополнительные переменные окружения.

plugs - это интерфейсы, которые может использовать программа. Дело в том, что программы snap работают в изолированной среде, откуда они не могут получить доступ к оборудованию и персональным данным. Чтобы наша программа могла нормально работать ей нужно дать доступ к интерфейсу opengl, unity7 и network.

Посмотреть доступные интерфейсы, и программ, которые их используют можно выполнив команду:

snap interfaces

В разделе parts мы указываем сами файлы программы. А если точнее, то что нужно сделать snapcraft при создании пакета. Поскольку нам ничего компилировать не нужно, мы будем использовать плагин copy, для копирования файлов. Файлы, которые нужно скопировать, перечислены в разделе files. Там есть не только исполняемые файлы, но и все необходимые библиотеки, так что программа получит все необходимые ей компоненты.

Формат записи такой:

файл_в_системе: адрес_файла_в_пакете_snap

Есть одна нестандартная запись:

resources*: resources

Символ подстановки * позволяет скопировать весь каталог. Чтобы не копировать все файлы из системы, мы можем в секции site-packages сказать программе, какие пакеты следует установить в пакет snap, в нашем случае это libnss3 , fontconfig-config и gnome-themes-standard.

Чтобы посмотреть какие библиотеки использует программа, можно воспользоваться командой:

ldd Simplenote | grep Simplenote

libnode.so => /home/sergiy/test/Simplenote/Simplenote-linux-x64/./libnode.so (0x00007f05fb477000) libffmpeg.so => /home/sergiy/test/Simplenote/Simplenote-linux-x64/./libffmpeg.so (0x00007f05f61ec000)

Обратите внимание, эти библиотеки поставляются вместе с программой, а поэтому нам нужно прописать их в конфигурационном файле snapcraft.yaml. Все остальные библиотеки доступны в системе и будут обнаружены snapcraft автоматически.

Далее создадим файл wrapper:

!/bin/sh export FONTCONFIG_PATH=$SNAP/etc/fonts export FONTCONFIG_FILE=$SNAP/etc/fonts/fonts.conf export XDG_DATA_HOME=$SNAP/usr/share export LD_LIBRARY_PATH=$SNAP_LIBRARY_PATH:$SNAP/usr/lib/x86_64-linux-gnu/ exec "$SNAP/Simplenote" "$@"

Здесь нет ничего сложного, обычный скрипт на Bash. Мы устанавливаем пути для шрифтов, и указываем программе где нужно искать библиотеки, чтобы libnote.so и libffmpeg.so были успешно найдены. А последняя строка запускает на выполнение simplenote.

Дальше осталось сделать этот файл исполняемым:

chmod +x wrapper

Для начала сборки пакета выполните:

snapcraft

Сборка может занять кое-какое время, а после завершения сборки вы сможете установить пакет:

sudo snap install simplenote_1.0.1_amd64.snap

Для запуска программы вы можете воспользоваться обычной командой:

simplenote

Вот и все, программа установлена и работает. Точно такой же способ создания snap пакетов вы можете использовать для упаковки своих программ.

Выводы

Несмотря на то, что snap довольно спорная технология, ее уже используют многие разработчики программ, в том числе разработчики популярного браузера Firefox. Если вы разрабатываете свое программное обеспечение, то вполне можете создать snap пакеты. Учитывая, что snap скоро будет поддерживать и другие дистрибутивы, то это вполне неплохая затея. Более подробную информацию вы можете получить в официальной документации по snapcraft.

Комментарии


Дистанционная компьтерная помощь, удаленная компьютерная помощь онлайн.

Популярные сообщения из этого блога

Лучшие плагины для OBS Studio

Open Broadcast Software или OBS - это свободное программное обеспечение с открытым исходным кодом для стриминга аудио и видео данных в сеть интернет. Программа полностью кроссплатформенная и может работать в Windows, Linux или MacOS. Это отличная альтернатива для таких программ, как Wirecast и XSplit. OBS использует для вещания стандартный протокол обмена сообщениями в реальном времени, а поэтому может транслировать данные в любой сервис, поддерживающий это, например, Yotube. Несмотря на широкие возможности OBS, программа поддерживает еще и множество плагинов. В этой статье мы рассмотрим лучшие плагины для OBS Studio, которые вы можете использовать. Содержание статьи: Лучшие плагины OBS Studio 1. Browser Source Plugin 2. Video Source Plugin 3. Simple Scene Switcher 4. DirectShow Audio Source 5. CLR Browser Source 6. OBS Remote 7. AMD Advanced Media Framework Encoder 8. Text Source Plugin Выводы Лучшие плагины OBS Studio Чтобы найти плагины OBS Studio для Video пользователям пр…

Установка операционной системы Raspberry pi 3

Raspberry Pi - это недорогой микрокомпьютер, который  помещается на ладони и может сделать очень многое. На основе этого микрокомпьютера можно создавать как серьезные проекты, по управлению умным домом, так и использовать в качестве медиацентра или даже легковесного домашнего компьютера с Linux. В одной из предыдущих статей мы подробно рассматривали начало работы с Raspberry Pi 3, как подключить устройство и что для этого необходимо, сейчас же остановимся более подробно на такой задаче, как установка операционной системы Raspberry Pi 3. Здесь используется процессор на архитектуре ARM, а значит вы можете установить любой поддерживаемый ARM дистрибутив, или же созданный специально для Raspberry дистрибутив Raspbian. Содержание статьи: Установка системы Raspberry с помощью NOOBS 1. Подготовка SD карты 2. Загрузка образ NOOBS 3. Запись на SD карту 4. Запуск системы Установка системы Raspberry из образа 1. Загрузка образа 2. Запись образ на карту Выводы Установка системы Raspberry …

Подключение OneDrive в Linux

OneDrive (Ранее известный как SkyDrive) это популярное облачное хранилище файлов от Майкрософт. Сейчас OneDrive бесплатно предоставляет 7 гигабайт пространства новым пользователям. Как вы знаете OneDrive хорошо интегрирован с другими продуктами компании  Microsoft. В OneDrive Также есть официальный клиент который автоматически загружает ваши видео и фотографии с камеры в облако. Но к сожалению этот клиент недоступен для операционных систем семейства Linux. Но не все так плохо. Сообщество открытого программного обеспечения уже нашло решение. Это opedrive-d от Boilermaker. Запустившись как демон программа автоматически синхронизирует локальную папку с облаком OneDrive. Содержание статьи: Установка Onedrive-d в Linux Настройка Синхронизация локальной папки с OneDrive Установка Onedrive-d в Linux Несмотря на то что onedrive-d разрабатывается для Ubuntu/Debian, CentOs/Fedora/RHEL поддерживается тоже хорошо. Для установки достаточно набрать несколько команд: $ git clone https://gith…