Вы когда-нибудь задумывались, почему в некоторых дистрибутивах Linux установка программного обеспечения настолько проста, в то время как в других это может быть довольно сложно? Разница заключается в формате пакета, который они используют. В некоторых дистрибутивах используются файлы.deb, а в других —.rpm.
Но что, если бы существовал формат пакета, который можно было бы использовать в любом дистрибутиве? Вот тут-то и пригодится Snapcraft. В этом руководстве вы узнаете, как установить и использовать Snapcraft для создания и установки пакетов моментальных снимков в Linux.
Читайте также: Как создать свое первое приложение для Linux с помощью Flutter
Что такое Snap-пакет?
Пакет Snap — это автономный пакет приложений, включающий все необходимые зависимости и библиотеки, что позволяет легко устанавливать и обновлять приложения, не беспокоясь о проблемах с зависимостями.
Зачем использовать пакеты Snap?
Использование моментальных пакетов имеет несколько преимуществ:
- Snaps легко установить и обновить. Вы можете установить пакет моментальных снимков с помощью одной команды, и снимки будут автоматически обновляться в фоновом режиме.
- Снимки
Contents
Что такое Snap-пакет?
у все зависимости включены в пакет Snap, риск конфликта зависимостей отсутствует. Кроме того, снимки изолированы от остальной части системы, поэтому они не могут получить доступ к вашим данным или другим приложениям в вашей системе.
- Вы можете установить свое любимое приложение в любой дистрибутив Linux, поддерживающий Snap.
Читайте также: Flathub или Snap Store: какой магазин приложений использовать?
Установка Snapd в Linux
Snapd — это демон, который позволяет устанавливать и использовать снимки. Его необходимо установить, прежде чем вы сможете использовать Snapcraft. Когда вы устанавливаете Snapd, он также устанавливает инструмент интерфейса командной строки (CLI) под названием snap
. Вы можете использовать этот инструмент для управления своими снимками.
Чтобы установить Snapd в Ubuntu, откройте терминал и введите следующую команду, указав свой пароль пользователя при появлении запроса.
sudo apt update -y && sudo apt install snapd -y
В CentOS вам необходимо включить репозиторий EPEL, прежде чем вы сможете установить Snapd. Для этого сначала введите в терминале следующую команду:
sudo dnf install epel-release -y && sudo dnf update -y
Затем установите Snapd с помощью приведенной ниже команды. При появлении запроса введите пароль пользователя sudo.
sudo dnf install snapd -y<Установка Snapd в Linux
coding="async" src="https://saintist.ru/wp-content/uploads/2024/05/snapscrat-install-snapd-centos.png" alt="Snapscrat Установка Snapd Centos">
В Fedora установите команду:
sudo dnf install snapd
В Arch Linux установить snapd из AUR . Ознакомьтесь с эти помощники AUR , чтобы упростить установку сторонних пакетов.
После завершения установки выполните приведенную ниже команду, чтобы включить системный модуль snapd.socket
. Это гарантирует, что демон Snapd запустится автоматически при загрузке вашей системы.
sudo systemctl enable --now snapd.socket
Создайте символическую ссылку между «/var/lib/snapd/snap» и «/snap», чтобы включить классическую поддержку Snap.
sudo ln -s /var/lib/snapd/snap /snap
Теперь, когда вы установили Snapd в свою систему Linux, проверьте версию Snapd с помощью приведенной ниже команды. Вы увидите результат, подобный следующему:
snap --version
Вы также можете проверить состояние службы Snapd с помощью следующей команды.
sudo systemctl status snapd
Установка Snapcraft
Прежде чем создавать пакеты моментальных снимков, вам необходимо установить Snapcraft, инструмент, используемый для создания пакетов моментальных снимков.
Чтобы установить Snapcraft в Linux, выполните следующую команду. Флаг classic
сообщает snap
использовать режим ограничения classic
. Этот флаг необходим, поскольку Snapcraft пока не поддерживает новый, более строгий режим ограничения.
sudo snap install snapcraft --classic
Убедитесь, что Snapcraft установлен, проверив номер версии.
snapcraft --version
Читайте также: Руководство для начинающих по написанию сценариев оболочки в Linux
Использование Snapcraft для создания пакета Snap
Теперь самое интересное: использование Snapcraft для создания пакета Snap для приложения. В этом уроке мы создаем базовую привязку hello-world, простую привязку, которая печатает «Hello, world!» когда вы его запустите. После завершения этого руководства примените тот же процесс для создания снимков для ваших собственных приложений.
Для простоты нижеприведенные шаги проведут вас через процесс создания снапа в Ubuntu. Те же действия можно применить и к другим дистрибутивам Linux.
Начало проекта для вашего Snap
Сначала создайте каталог проекта для вашего снапа. Это будет рабочий каталог вашего проекта, который поможет вам организовать файлы проекта.
- Создайте каталог проекта с именем «hello» с помощью следующей команды:
mkdir -p ~/mysnaps/hello
Флаг -p
указывает команде mkdir
создать любые родительские каталоги, которые еще не существуют. В этом случае будет создан каталог mysnaps
, если он не существует. В этот каталог можно поместить любые будущие снимки.
- Перейдите во вновь созданный каталог проекта и инициализируйте проект с помощью команды
init
, чтобы создать файл с именем «snapcraft.yaml» в каталоге вашего проекта. Вы можете использовать файл snapcraft.yaml для настройкиУстановка Snapcraft
cd ~/mysnaps/hello snapcraft init
- Проверьте структуру вашего проекта с помощью команды
tree
, которая распечатывает графическое представление каталога вашего проекта.
tree -a
Вы увидите результат, подобный следующему.
Добавление метаданных верхнего уровня
Snapcraft предоставляет множество метаданных, которые вы можете использовать для описания вашего пакета Snap. В этом уроке мы добавим некоторую базовую информацию, необходимую для каждого снимка.
- Откройте файл «snapcraft.yaml» в своем любимом текстовом редакторе. В этом уроке мы использовали nano.
sudo nano snapcraft.yaml
- Удалите строки-заполнители и замените их следующим содержимым.
name: hello base: core18 version: '2.10' summary: GNU Hello, the "hello world" snap description: | GNU hello prints a friendly greeting. grade: devel confinement: devmode
Здесь мы изменили информацию о нашем снапе. База
core18
сообщает Snapcraft, что вы хотите создать снимок на базе Ubuntu Core 18. Метаданныеconfinement: devmode
сообщают Snapcraft, что вы хотитеИспользование Snapcraft для создания пакета Snap
работки и тестирования.Представление вашего приложения
- Добавьте следующие строки после поля ограничения в файле snapcraft.yaml. Здесь мы указываем приложение, которое хотим упаковать.
apps: hello: command: bin/hello
В данном случае у нас есть только одно приложение,
hello
. Строкаcommand
сообщает Snapcraft, какой двоичный файл запускать при установке снапа.Добавление детали
- В новой строке добавьте следующую команду
parts
:
parts: gnu-hello: source: http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz plugin: autotools
Это указывает Snapcraft, какое программное обеспечение вы хотите вк
Начало проекта для вашего Snap
создать этот снимок hello-world, вам необходимо загрузить исходный код GNU Hello, а затем использовать плагинautotool
для сборки приложения из исходного кода.<ол старт="5">
- Проверьте структуру вашего проекта с помощью команды
- На этом этапе ваш файл snapcraft.yaml будет выглядеть так, как показано ниже. Сохраните и закройте файл snapcraft.yaml, прежде чем перейти к следующему шагу.
Создание Snap-пакета
Теперь, когда вы определили свою оснастку, пришло время ее создать. Чтобы создать пакет моментальных снимков, выполните следующую команду:
snapcraft
Вам будет предложено установить «multipass», если в вашей системе его нет. Snapcraft использует многопроходной режим для создания изолированной среды для создания снимков внутри виртуальной машины. Введите yи нажмите Enter, чтобы продолжить.
Процесс сборки может занять некоторое время в зависимости от вашего подключения к Интернету и характеристик компьютера. После завершения процесса сборки вы увидите что-то похожее на следующий результат.
В конце концов вы найдете «hello_2.10_amd64.snap» в каталоге проекта.
Тестирование пакета Snap
Чтобы проверить, работает ли ваш пакет моментальных снимков, выполните следующую команду:
sudo snap install --devmode hello_2.10_amd64.snap
Флаг --devmode
сообщает snap
, что вы хотите установить оснастку в devmode
, что полезно для целей тестирования.
Затем выполните следующую команду, чтобы запустить приложение hello-world.
hello
Вы увидите следующий вывод, который указывает, что ваша привязка hello-world работает должным образом.
Чтобы увидеть версию вашего приложения hello-world, выполните следующую команду.
hello --version
Если при тестировании привязки вы столкнулись с проблемой, получите дополнительную информацию, используя флаг --debug
и выполнив следующую команду.
snapcraft --debug
Читайте также: Как исправить проблему «Нет кандидата на установку» в Ubuntu
Часто задаваемые вопросы
Безопасен ли Snapcraft?
Абсолютно! Snapcraft — официальный инструмент для создания снимков. Он разработан и поддерживается Canonical, компанией, стоящей за Ubuntu. Будьте уверены, что Snapcraft безопасен и надежен.
Snap похож на Docker?
И да, и нет. Snap и Docker — это контейнерн
Представление вашего приложения
умайте о Snap как о формате упаковки для вашего приложения, а Docker — как о среде выполнения вашего приложения. Вы можете настроить WordPress с помощью Nginx и PHP в контейнере Docker использовать официальные образы WordPress и Nginx, но не можете создать пакет Snap для своего сайта WordPress.Snap лучше, чем apt или apt-get?
Это зависит. Обе системы имеют свои преимущества и недостатк
Добавление детали
aketecheasier.com/ultimate-guide-apt-and-apt-get-commands/" title="Apt и apt-get">Apt и apt-get — традиционный менеджер пакетов для дистрибутивов Linux на базе Debian. Он существует уже давно и очень стабилен, но имеет несколько недостатков. Например, apt не поддерживает управление версиями и откат. Snap, с другой стороны, поддерживает как управление версиями, так и откат. Так что, если вы хотите поэкспериментировать с новыми версиями своего приложения, Snap – это то, что вам нужно. Но если вам нужна стабильная система, лучший выбор — apt и apt-get.Изображение предоставлено: Фрипик . Все скриншоты Николаса Суана Нгуена.