Как установить и использовать Flatpak в Linux

flatpak

Linux добился больших успехов в области совместимости программного обеспечения. Точнее, установка программного обеспечения стала более единообразной в различных дистрибутивах и их собственных форматах пакетов. Но всё еще требуется сложная работа создателей пакетов. Им надо взять приложение и настроить его под конкретные требования разных дистрибутивов и даже разных их версий. Но появилось несколько новых универсальных форматов пакетов типа Flatpak, которые обещают: «упаковал однажды — работает везде» (во всяком случае, в Linux).

В сегодняшней статье мы рассмотрим Flatpak, узнаем, что это такое и как его использовать.

Режим работы Flatpak

Flatpak является и форматом пакета, и инструментом для установки и управления этими пакетами. Многие форматы пакетов Linux работают с концепцией зависимостей, означающей, что разработчик может определить, что пакет А зависит от пакета В. Когда пользователь пытается установить мой пакет А, система распознает зависимость и устанавливает пакет В вместе с ним. Так, apt install устанавливает одно приложение и получает сотни пакетов для загрузки и установки, Flatpak, напротив, предоставляет вам и приложение, и всё необходимое для работы в независимом от дистрибутива формате. У этого подхода есть свои плюсы и минусы:

Плюсы Flatpak

  • Независимость от дистрибутива
  • Простота установки
  • Нет конфликтов с локальной системой

Минусы Flatpak

  • Использует дополнительное пространство и дублирует файлы.
  • Установка как пользователем root, так и обычным пользователем.
  • Невозможно установить серверные приложения.

Но основная идея Flatpak привлекательна. Найдя программу, вы легко установите ее и запустите, не беспокоясь, что нечто иное в вашей системе использует несовместимую версию той же библиотеки.

Flatpak
Файл flatpakref содержит всю информацию, необходимую для поиска приложения, определения его зависимостей и установки всего.

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

  • Использовать новейшую версию приложения, сохраняя при этом и стандартную версию. Пример: LibreOffice, показанный на скриншоте ниже, работает одновременно в версиях 5 и 6.
  • У вас есть проблемы с безопасностью, и вы чувствуете себя лучше с программой, работающей в песочнице. Пример: Flash Player от Adobe.
  • Использовать более свежую, более стабильную и/или более многофункциональную версию приложения, чем предоставляет ваш дистрибутив. Пример: Calibre, которая сильно отстает даже на Ubuntu 16.04.
    Тем не менее, существуют другие форматы, которые предоставляют аналогичные преимущества. К ним относятся формат Snap в Ubuntu (www.snapcraft.io) и Applmage (https://appimage.org/). Хотя все они выполняют схожие функции, в сравнении Flatpak имеет фору по нескольким пунктам:
  • Snapcraft — это проект Canonical, и хотя он доступен в других дистрибутивах, но в первую очередь предназначен для Ubuntu. Если вы используете другой дистрибутив или просто предпочитаете программную систему, не контролируемую одной коммерческой организацией, Flatpak — лучший чем Snap.
  • Applmage использует способ просто загрузки и запуска одного файла. Это просто, но не обязательно легко, особенно для новых пользователей. Для начала, вам надо установить загруженный файл Applmage как исполняемый, прежде чем вы сможете запустить приложение. Кроме того, нет встроенного механизма для обновления Applmage. Проект предлагает внешний инструмент для этого, но вам еще необходимо загрузить и настроить его.

Несмотря на все эти разговоры о плюсах и минусах, вы можете одновременно использовать любой (или все!) из вышеуказанных форматов на своем компьютере. Это противоречит логике, не так ли? Как разработчики добились этого? Давайте рассмотрим формат Flatpak немного подробнее, чтобы выяснить это.

Становление Flatpak

Эта статья увидела свет, когда Flatpak порадовал двумя важными событиями. Первым является релиз v1.0 проекта, который вышел 20 августа 2018 г. Как и подобает этому этапу, пресс-релиз назвал новую версию «полнофункциональной», со всеми необходимыми ресурсами как для разработчиков, так и для пользователей. Поэтому в дополнение к командам Flatpak, о которых упоминается в этой статье, и поддержке большинством основных менеджеров пакетов с графическим интерфейсом, есть также инструменты, помогающие разработчикам упаковать свои приложения в виде Flatpaks. Если вы программист, обратитесь к разделу “Build applications» справки Flatpak (flatpak -help), чтобы узнать, какие утилиты есть в вашем распоряжении.

РЕКОМЕНДУЕМ:
Как включить Snap в Linux Mint

Но запуск другой инициативы, возможно, более интересен. Проект WinePak использует Flatpak. чтобы облегчить установку программ Windows. Это достигается путем предоставления приложения и оптимизированной установки WINE в формате, который легко установить. Он обещает покончить со всей возней с настройкой, обычно сопровождающей установки в WINE. Хотя выбор на данный момент довольно мал, в нем уже есть несколько топовых игр, включая Overwatch, World of Warcraft и League of Legends. Конечно, установив их, вы можете в конечном итоге установить WINE в своей системе десятки раз. Но они в песочнице, а место на диске дешево, так что безумствуйте!

Анатомия Flatpak

Установка Flatpak создаст файловую структуру для программы и ее сред выполнения, а также некоторые метаданные. Базовая структура состоит из четырех каталогов верхнего уровня в $HOME/.local/share/flatpak или /var/lib/flatpak, в зависимости от того, была ли это системная или пользовательская установка.

Первым из них является repo, содержащий информацию об установленных и внешних приложениях и другие метаданные. Каталог арр — это место, где находятся сами приложения. У каждой программы есть подкаталог с именем, состоящим из трех частей (например, org.gnome.GEdit). Существуют дополнительные подкаталоги, выделенные для архитектуры (например, х86_64). номеров версий и связанных с ними контрольных сумм.

Среда выполнения управляется таким же образом, но хранится отдельно в каталоге runtime. Это связано с тем., что они могут использоваться несколькими приложениями. Последний каталог — exports, содержащий элементы, связанные с программами Flatpak, но находящийся вне песочницы. К ним относятся такие вещи, как значок приложения и файл .desktop (который появится в меню приложений на рабочем столе), а также системные ссылки, такие как подключения к оконной системе. Каталог exports содержит ссылки на вещи внутри Flatpak и является одной из тщательно контролируемых точек соприкосновения между хост-системой и песочницей Flatpak.

flatpak что это

На скрине выше показан экспорт команды tree после установки LibreOffice Flatpak.

Распаковка Flatpak

Как и большинство проектов с открытым исходным кодом, Flatpak для достижения своих целей становится на плечи гигантов. Две ключевые технологии, лежащие в основе Flatpak — это ostree и bubblewrap.

Устанавливая Flatpak, вы устанавливаете «комплект» ostree, содержащий приложение. Сайт проекта описывает его как нечто вроде «Git для бинарников операционной системы». В дополнение к другим преимуществам, данный подход обеспечивает атомарные обновления — это такой витиеватый способ сказать, что обновляется только то, что нужно обновлять. Он также обеспечивает механизм отката.

Предположим, у вас есть программа с файлом 1 и файлом 2. Обновление предоставляет новую версию файла 2, который по факту обозначен как файл 3. Программа будет работать довольно успешно, используя файл 1 и файл 3, пока вы не захотите откатить версию. Но вам не надо делать всю операцию удаления или переустановки. Вам просто нужно изменить приложение, чтобы оно использовало файл 2 вместо более нового файла 3 (который всё еще существует на тот случай, если вы хотите выполнить «откат»).

РЕКОМЕНДУЕМ:
Лучший музыкальный плеер для Linux

Другой вспомогательной технологией является bubblewrap. программный уровень, который, в свою очередь, использует функцию пользовательского пространства имен ядра Linux. Это позволяет учетным записям обычных пользователей выполнять роль учетных записей root в контейнерах, включив песочницу Flatpak. При запуске приложение Flatpak вызывает подсистему, состоящую из приложения Flatpak и определенного количества системных ресурсов для использования в песочнице. В вики FlatPak на GitHub (https://github.com/flatpak/flatpak/wiki/Sandbox) есть страница, которая подробно описывает содержимое песочницы — вот некоторые ключевые свойства:

  • Среда(-ы) выполнения приложения монтируются в песочнице в /usr (структура которой более подробно описана в главе «Анатомия Flatpak»).
  • Само приложение монтируется в /арр.
  • Конфигурации из каталога хоста /etc монтируются в /usr/etc песочницы.
  • Из песочницы видны только процессы в песочнице, например, каталог /ргос.
  • Такие ресурсы, как значки, шрифты и т.д., доступны через “bind-mounts” или путем монтирования одного файла / каталога (вне песочницы) в другое место в файловой системе (внутри песочницы).
  • В целом, песочница имеет доступ только к ресурсам, строго необходимым ей для работы, причем только с минимально допустимыми привилегиями.

Теперь, если вы еще не слишком запутались, мы добавим еще один уровень сложности. Для установки большинства программ в системе Linux требуются права root, но Flatpak могут устанавливать и обычные пользователи. В следующей главе мы рассмотрим разницу между этими «пользовательскими установками» и более традиционной «системной установкой».

Система против пользователя

При установке программного обеспечения бывалые пользователи Linux привыкли предоставлять пароль root. Это программное обеспечение попадает в каталог за пределами вашего $НОМЕ, такой как /usr/bin, /opt или, возможно, даже /usr/local. Но, как упоминалось в списке плюсов, Flatpak поддерживает возможность установки программы для конкретного пользователя, а не для всей системы. Это работает, потому что обычный пользователь имеет доступ к необходимым ресурсам для запуска программы, и песочницы, созданные пользователем, получают такой же доступ.

Когда вы запустите любую из команд установки, вам предложат ввести пароль. Дело в том, что по умолчанию Flatpak будет выполнять системную установку. Это означает, что программа будет доступна всем пользователям, а ее файлы будут храниться в /var/lib/flatpak.

С другой стороны, если вы используете с командой флаг -user — он установится только для вашей учетной записи (пароль запрашивать не будут). Файлы в этом случае будут находиться в $HOME/.local/share/flatpak. Это полезно, если у вас нет учетной записи администратора на компьютере, или, возможно, если вы хотите попробовать новейшую версию программы, которая установлена в другом месте системы.

Flatpak установка
Две различных версии LibreOffice работают одновременно на одной машине. Волшебство? Нет. просто Flatpak.

Пользовательская установка возможна благодаря устройству песочницы. Думайте об этом так: как пользователь, вы в состоянии запускать приложение. Это приложение имеет права (через вашу учетную запись) на создание экранного окна, запись файлов на диск и доступ к сетевым подключениям. Когда вы устанавливаете Flatpak как пользователь, любые ресурсы хост-системы ограничиваются теми, что вы сами можете получить с помощью «обычной» программы.

Установка Flatpak

Первый компонент, который вам нужен для установки Flatpaks (формат пакета) — это Flatpak (приложение). Большинство дистрибутивов предоставляют его в своих репозиториях. В Ubuntu вы можете выполнить следующее, чтобы получить и запустить:

Вы, конечно, получите версию, поставляемую с текущей версией вашего дистрибутива. Если ваша версия — с долгосрочной поддержкой, например, Ubuntu 16.04 (Xenial), это может означать, что новых функций у вас не будет. Установка с официального РРА Flatpak — рекомендуемый способ обеспечить, чтобы у вас всегда была самая свежая версия:

После установки вы сможете устанавливать программы Flatpak из командной строки. Но некоторые менеджеры пакетов с графическим интерфейсом также поддерживают этот формат. Например, Discover в KDE может управлять вашими файлами Flatpak, если вы установите соответствующий движок.

Установив правильные инструменты, надо сделать еще один шаг. прежде чем вы сможете начать поиск новых приложений.

Хабы Flatpak

Похоже, что для описания коллекций программного обеспечения, таких как RPM- или Deb-репозитории, Flatpak принял термин «хабы». Сам сайт Flatpak держит первый хаб, который вы должны добавить — FlatHub. Зарегистрируйте его в своей системе, используя менеджер пакетов, или в терминале командой:

Mожно увидеть список подключенных хабов, выполнив команду:

Типы приложений Flatpak

Существует несколько различных типов приложений, которые можно упаковывать как Flatpaks. Первый из них — это коммерческие приложения. Если разработчики коммерческих продуктов не позволяют сообществу разбирать свои приложения, то они сами должны всё упаковывать.

Flatpak дает единую цель для пакетов — они будут работать в разных дистрибутивах, а песочница приложений поможет сократить расходы на поддержку. Некоторые примеры коммерческих (хотя и бесплатных) программ на Flathub включают Steam, Slack и Sublime Text.

РЕКОМЕНДУЕМ:
Установка и использование Teamviewer в Linux

Другой тип приложений с хорошими Flatpak — большие, сложные приложения. Они выигрывают от атомарных обновлений Flatpak, делая процесс обновления чуть менее болезненным, а процесс отката — еще менее. LibreOffice, который обычно обновляет 200 МБ, и Android Studio, который еще больше, получаются несколько удобнее в виде Flatpaks.

Наконец, кроссплатформенные приложения уже имеют две совершенно разные целевые ОС (по крайней мере, для настольных компьютеров, и даже больше — для мобильных). Разумеется. разработчикам и упаковщикам не нужно беспокоиться об особенностях десятков дистрибутивов Linux. Просто упакуйте ваше приложение как Flatpak, и всё готово.

Установка программ Flatpak

Установка приложений из Flatpak будет очень знакома, если вы привыкли использовать в своей системе apt, yum или dnf.

Команда search покажет вам совпадения по любому из настроенных вами ключевых слов:

Вернется результат для отличного менеджера электронных книг Calibre, который в репозиториях Ubuntu часто устаревший.

Обратите внимание на первый столбец: в нем указан идентификатор приложения в своего рода обратном доменном формате (сначала com, затем domain и т.д.). Вам нужно передать это команде install для Flatpak, чтобы установить Calibre:

На этом этапе Flatpak начнет загружать и устанавливать приложение и все необходимые ему среды выполнения. Среда выполнения — это набор библиотек и другого программного обеспечения для приложения. Это способ разрешения зависимостей в Flatpak.

«Подождите, — скажете вы, — разве не то же делают apt и yum?* Это справедливый вопрос. Есть несколько примечательных факторов, которые отличают среду выполнения от обычного управления зависимостями Linux.

  • Среда песочницы Flatpak гарантирует, что всё вами установленное не будет конфликтовать с вашей системой.
  • Среда выполнения — это фиксированный набор программного обеспечения, поэтому вы знаете, что получите именно то, что вам нужно для запуска приложения: ни больше, ни меньше.
  • Flatpaks созданы с учетом определенной среды выполнения, поэтому вам не надо беспокоиться о том, что обновления внезапно повредят вашу программу.

Компромисс сводится к уверенности в том, что программа всегда будет иметь всё, что ей нужно для правильного запуска, но учтите, что для этого потребуется больше места на диске.

РЕКОМЕНДУЕМ:
Самые легкие дистрибутивы Linux

Есть несколько других методов, которые вы можете использовать для установки приложений. Если вы столкнулись с инородным Flatpak и скачали его, установите его из командной строки, используя приведенную команду:

Наконец, Flatpak предоставляет метод для установки приложения путем запуска установочного файла. Этот файл, называемый flatpakref, содержит некоторые метаданные о программе, в частности:

  • Полное имя программы
  • Хаб, с которого ее нужно скачать.
  • Версия программы
  • Есть ли среда выполнения
  • Подпись GPG
Установка программ Flatpak
Файл flatpakref содержит всю информацию, необходимую для поиска приложения, определения его зависимостей и установки всего.

Установка из файла flatpakref аналогична установке из локально загруженного файла Flatpak:

Вы также можете использовать менеджер пакетов с графическим интерфейсом, который должен отображать и устанавливать Flatpak так же, как и другие пакеты (при условии, что вы установили движок).

Запуск программ Flatpak

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

После запуска программы вы заметите пару вещей. Во-первых, у вас будет доступ ко всем обычным файлам каталога $Н0МЕ. «Но, — спросите вы, — я думал, что песочница Flatpak изолирована от остальной системы?» Это очень проницательно с вашей стороны. Однако от запуска программы, неспособной взаимодействовать с вашими файлами, пользы мало. Разработчики Flatpak обошли это.

Flatpak управление установками
Как и традиционные менеджеры пакетов. Flatpak загрузит и установит Calibre и среду выполнения от которого он зависит.

Вы также должны увидеть пункты приложения в меню вашего рабочего стола. Если вы их не видите, врезка ниже, подскажет, как это исправить. На самом деле, в большинстве случаев вы не сможете отличить эти программы от предоставляемых вашим дистрибутивом. Вы можете управлять своими файлами, воспроизводить файлы мультимедиа, и вообще использовать их как «обычную» программу.

Если во время работы Flatpak вы командуете Is / и не видите никакой разницы, запустите следующее:
$ flatpak run --command=sh org.libreoffice. LibreOffice.

В песочнице вашего приложения запустится оболочка. Теперь, введя Is /, вы должны увидеть такие каталоги, как /арр

Управление установками Flatpak

После одной или двух установок Flatpak, вы, конечно, можете использовать менеджер пакетов с графическим интерфейсом для их администрирования. Но если вы предпочитаете терминал, пригодятся некоторые из приведенных ниже команд. Вы можете получить список установленных Flatpak (как приложений, так и сред выполнения) с помощью следующей команды:

Результат отображает не только установленные модули, но и тип их установки (системный или пользовательский, system / user). Вы можете обновить все свои Flatpak одной командой, так же, как и собственные менеджеры пакетов:

Если вам надо удалить Flatpak, введите в командной строке следующее:

Если вам надо удалить один из настроенных вами хабов, это делается следующим образом:

Заключение

Преимущества формата Flatpak многочисленны. Он предоставляет разработчикам возможность ориентироваться на несколько дистрибутивов, предоставляя пользователям несколько инструментов для установки полученных приложений. Он позволяет программам получать доступ к нужным им ресурсам, одновременно ограждая их от того, что им не полагается. Он решает некоторые проблемы с зависимостями традиционных форматов упаковки за счет небольшого дискового пространства. Наконец, он открывает перед разработчиками возможности упаковать приложения, которые традиционно трудоемки в установке, в простой формат.

Поэтому, если вы хотите попробовать новейшую версию LibreOffice или запустить в WINE игру вроде World of Warcraft, попробуйте Flatpak. И не ошибетесь!

Понравилась статья? Поделиться с друзьями:
Добавить комментарий