Как установить и использовать Flatpak в Linux
Руководство для начинающих по Flatpak
В этом руководстве мы увидим, что такое Flatpak, как установить Flatpak в Linux, а затем как использовать пользовательский интерфейс командной строки Flatpak для устанавливать приложения Flatpak в Linux.
Введение в Флэтпак
Существует очень много дистрибутивов Linux. Создание приложений для всех из них может оказаться трудоемкой и сложной задачей. Несмотря на то, что существует множество конвертеров пакетов, все они имеют ограниченную функциональность и проблемы совместимости.
Чтобы решить эту проблему, компания Canonical представила формат пакета приложений под названием Snap. Первоначально Snap были разработаны для операционной системы Ubuntu, но теперь они используются в основных дистрибутивах Linux, включая Arch, Gentoo, Fedora и openSUSE.
Snap — это один двоичный пакет со всеми необходимыми библиотеками и зависимостями. Вы можете установить его в любой дистрибутив Linux, независимо от его версии и архитектуры. Нет необходимости разрабатывать отдельное приложение для каждого дистрибутива!
Подобно Snap, существует еще один инструмент форматирования пакетов приложений, который называется Flatpak.
Flatpak — это система для сборки, установки и запуска приложений и сред выполнения в различных дистрибутивах Linux.
Теперь вы можете создать одно приложение Flatpak и установить его в разных версиях Linux. Вам не нужно беспокоиться о библиотеках и зависимостях; все объединено в одно приложение.
Еще одна примечательная особенность заключается в том, что мы можем одновременно установить в системе Linux несколько версий одного и того же приложения. Например, в одной системе можно установить проигрыватель VLC версий 2.1, 2.2 и 2.3. Если вы разработчик, вы можете тестировать разные версии приложения одновременно.
Flatpak был первоначально разработан Алексом Ларссоном и позже одобрен Red Hat, Endless Computers и Collabora. Сейчас он активно поддерживается независимым сообществом, состоящим из участников, волонтеров и поддерживающих организаций.
Платформа Flatpak написана на C и выпущена под лицензией LGPL.
Время выполнения
Каждое приложение Flatpak зависит от среды выполнения, чтобы правильно работать в хост-системе. Среда выполнения — это не что иное, как набор базовых зависимостей (библиотек), необходимых приложению.
Когда мы устанавливаем приложение с помощью команды Flatpak, среда выполнения будет установлена автоматически. Среды выполнения не зависят от дистрибутива, поэтому они могут работать с любым дистрибутивом Linux. Несколько приложений могут использовать одну среду выполнения.
В настоящее время доступны три основные среды выполнения: Freedesktop, GNOME и KDE. Все они размещены в репозитории Flathub.
Связанные библиотеки
Библиотеки, недоступные во время выполнения, добавляются разработчиками вместе с приложением. Библиотеки также могут представлять собой версии библиотек, отличные от тех, которые находятся в среде выполнения, и/или исправленных версий библиотек.
Песочницы
Приложение Flaptpak создается и запускается в изолированной среде, известной как «песочница». Другими словами, приложения Flatpak изолированы от остальной части операционной системы хоста и других приложений.
Каждая песочница содержит приложение и среду его выполнения. По умолчанию приложение Flatpak может получить доступ только к содержимому своей песочницы. Доступ к пользовательским файлам, сети, графике и устройствам должен быть явно предоставлен пользователем.
Репозитории
Все приложения Flatpak и среды их выполнения хранятся в центральном месте, называемом «Репозитории».
Flathub – официальный репозиторий всех приложений Flatpak. Мы можем получить доступ к приложениям и средам выполнения и установить их, используя интерфейс командной строки Flatpak.
Установите Flatpak в Linux
Flatpak доступен в репозиториях по умолчанию популярных дистрибутивов Linux, таких как Arch Linux, Debian, Fedora, Gentoo, Red Hat, Linux Mint, дистрибутивы openSUSE, Solus, Mageia и Ubuntu.
Чтобы установить Flatpak в Arch Linux и его вариантах, таких как EndeavourOS и Manjaro Linux, запустите:
sudo pacman -S flatpak
Flatpak доступен в репозиториях по умолчанию Debian Buster и более поздних версий. Чтобы установить Flatpak в Debian, запустите:
sudo apt install flatpak
Если вы используете GNOME DE в Debian, установите плагин Flatpak для программного обеспечения GNOME, используя команду:
sudo apt install gnome-software-plugin-flatpak
В Fedora Flatpak установлен по умолчанию. Все, что вам нужно сделать, это включить Flathub, как описано в следующем разделе.
На тот случай, если он по какой-либо причине не установлен, запустите:
sudo dnf install flatpak
В RHEL 7 запустите:
sudo yum install flatpak
В CentOS 7 Flatpak установлен по умолчанию. Так что никакой настройки не требуется!
Начиная с Linux Mint 18.3, Flatpak устанавливается по умолчанию. Таким образом, установка не требуется.
В openSUSE Tumbleweed Flatpak можно установить с помощью Zypper:
sudo zypper install flatpak
В Ubuntu 18.10 (Cosmic Cuttlefish) и более поздних версиях Ubuntu установите Flatpak с помощью этой команды:
sudo apt install flatpak
В более старых версиях Ubuntu добавьте следующий репозиторий и установите Flatpak, как показано ниже.
sudo add-apt-repository ppa:alexlarsson/flatpak
sudo apt update
sudo apt install flatpak
Плагин Flatpak для приложения GNOME Software позволяет устанавливать приложения без использования командной строки. Чтобы установить этот плагин, запустите:
sudo apt install gnome-software-plugin-flatpak
В Solus установите Flatpak с помощью команды:
sudo eopkg install flatpak xdg-desktop-portal-gtk
В Mageia 6 и более поздних версиях вы можете установить Flatpak с помощью DNF:
sudo dnf install flatpak
Или установите с помощью urpmi
, как показано ниже:
sudo urpmi flatpak
В Pop!_OS 20.04 установлен Flatpak и Flathub настроен по умолчанию. Если вы используете Pop!_OS 19.10 или более ранние версии, запустите:
sudo apt install flatpak
elementary OS 5.1 и более поздние версии уже поставляются с поддержкой Flatpak.
Для получения информации о других дистрибутивах Linux перейдите по официальной ссылке на установку ссылку.
Руководство для начинающих по Flatpak
Многие популярные приложения, такие как Gimp, Kdenlive, Steam, Spotify, Visual Studio Code и т. д., доступны в виде плоских пакетов. Чтобы установить приложение Flatpak, нам нужно сначала добавить репозитории Flatpak (или удаленные устройства).
1. Добавьте удаленные репозитории
Как я уже упоминал, приложения и среды выполнения хранятся в репозитории или удаленно. Официальный репозиторий Flatpak — Flathub.
Чтобы включить репозиторий Flathub в Linux, просто запустите эту команду:
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
Доступно множество других неофициальных репозиториев Flatpak. Выполните быстрый поиск в Интернете, чтобы найти их.
2. Список пультов
Чтобы просмотреть все настроенные удаленные репозитории, запустите:
flatpak remotes
Пример вывода:
Name Options
flathub system
Как видите, приведенная выше команда выводит список пультов, которые вы добавили в свою систему. В нем также указано, был ли удаленный пульт добавлен для каждого пользователя или для всей системы. В моем случае я добавил общесистемный репозиторий Flathub.
3. Установите приложения Flatpak
В этом разделе мы увидим, как устанавливать приложения Flatpak.
Чтобы установить приложение Flatpak, например ящики GNOME, запустите:
flatpak install flathub org.gnome.Boxes
Приведенная выше команда установит приложение для всей системы.
Если вы не хотите устанавливать приложения для всей системы, вы также можете установить приложения Flatpak для каждого пользователя, как показано ниже.
flatpak install --user <name-of-app>
Все установленные приложения будут храниться в папке $HOME/.var/app/
.
$ ls $HOME/.var/app/
com.github.calo001.fondo com.github.tchx84.Flatseal org.gnome.Boxes
4. Запустите приложения Flatpak
Вы можете в любой момент запустить установленные приложения из панели запуска приложений. Из командной строки вы можете запустить его, например, из ящиков GNOME, используя команду:
flatpak run org.gnome.Boxes
Flatpak добавит пункты меню для всех приложений Flatpak. Таким образом, вы можете запустить его напрямую из меню или панели запуска приложений.
5. Поиск приложений Flatpak
Для поиска приложения:
flatpak search gimp
Пример вывода:
Name Description Application ID Version Branch Remotes
GNU Image Manipulati… Create images and edit photographs org.gimp.GIMP 2.10.20 stable flathub
GIMP User Manual GIMP User Manual org.gimp.GIMP.Manual 2.10 2.10 flathub
Resynthesizer Set of GIMP plug-ins that heal (in-paint), synthesize texture, theme an image, and more …p.GIMP.Plugin.Resynthesizer 2.0.3 2-3.36 flathub
GimpLensfun GimpLensfun is a Gimp plugin to correct lens distortion using the lensfun library and database. org.gimp.GIMP.Plugin.Lensfun 0.2.4 2-3.36 flathub
Fourier A simple GIMP plug-in to do fourier transform on your image. org.gimp.GIMP.Plugin.Fourier 0.4.3 2-3.36 flathub
BIMP Batch Image Manipulation Program, a GIMP plugin to apply a set of manipulations to an entire gr… org.gimp.GIMP.Plugin.BIMP 2.4 2-3.36 flathub
LiquidRescale LiquidRescale plugin to resize pictures non uniformly while preserving their features, i.e. avo… …p.GIMP.Plugin.LiquidRescale 0.7.2 2-3.36 flathub
G'MIC GREYC's Magic for Image Computing org.gimp.GIMP.Plugin.GMic 2.9.2 2-3.36 flathub
FocusBlur Focus Blur plug-in crete a blurring effect similar to Depth of Field. ….gimp.GIMP.Plugin.FocusBlur 3.2.6 2-3.36 flathub
Glimpse Create images and edit photographs org.glimpse_editor.Glimpse 0.2.0 stable flathub
Scans to PDF Create small, searchable PDFs from scanned documents com.github.unrud.djpdf 0.1.2 stable flathub
Эта команда вернет все приложения, соответствующие строке «gimp», со всех пультов.
6. Перечислите локально установленные приложения Flatpak и среды выполнения.
Чтобы просмотреть все установленные в вашей системе приложения Flatpak и среды выполнения, запустите:
flatpak list
Пример вывода:
Name Application ID Version Branch Installation
Fondo com.github.calo001.fondo 1.3.8 stable system
Flatseal com.github.tchx84.Flatseal 1.5.2 stable system
default …reedesktop.Platform.GL.default 19.08 system
Intel …eedesktop.Platform.VAAPI.Intel 19.08 system
openh264 ….freedesktop.Platform.openh264 2.1.0 2.0 system
GNOME Boxes org.gnome.Boxes 3.36.6 stable system
GNOME Application Platform ve… org.gnome.Platform 3.36 system
Ambiance Gtk theme org.gtk.Gtk3theme.Ambiance 3.22 system
Yaru-light Gtk Theme org.gtk.Gtk3theme.Yaru-light 3.22 system
Если вы хотите просмотреть список установленных приложений и сред выполнения с установленным размером, используйте флаг -d
.
flatpak list -d
Пример вывода:
… … … Version Branch Arch Origin Installation Ref Active commit Latest commit Installed size …
… … … 1.3.9 stable x86_64 flathub system com.github.calo001.fondo/x86_64/stable 4755529773f0 - 89.3 MB …
… … … 1.6.2 stable x86_64 flathub system com.github.tchx84.Flatseal/x86_64/stable 4e1efc03269e - 2.9 MB …
… … 19.08 x86_64 flathub system org.freedesktop.Platform.GL.default/x86_64/19.08 f68c8e930d04 - 255.7 MB …
… … 19.08 x86_64 flathub system org.freedesktop.Platform.VAAPI.Intel/x86_64/19.08 19fe8e74d641 - 37.0 MB …
… … … 2.1.0 2.0 x86_64 flathub system org.freedesktop.Platform.openh264/x86_64/2.0 73f998362a6f - 778.2 kB …
… … … 3.36.6 stable x86_64 flathub system org.gnome.Boxes/x86_64/stable 98c619ed7873 - 706.9 MB …
… … … 3.36 x86_64 flathub system org.gnome.Platform/x86_64/3.36 d79ff93caf2d - 934.6 MB …
… … … 3.22 x86_64 flathub system org.gtk.Gtk3theme.Ambiance/x86_64/3.22 73fed99df212 - 16.3 MB …
… … … 3.22 x86_64 flathub system org.gtk.Gtk3theme.Yaru-light/x86_64/3.22 2573259417d8 - 718.3 kB …
Перечислите только среды выполнения с помощью команды:
flatpak list --runtime
Пример вывода:
Name Application ID Version Branch Installation
Locale com.github.calo001.fondo.Locale stable system
default …reedesktop.Platform.GL.default 19.08 system
Intel …eedesktop.Platform.VAAPI.Intel 19.08 system
openh264 ….freedesktop.Platform.openh264 2.1.0 2.0 system
Locale org.gnome.Boxes.Locale stable system
GNOME Application Platform ve… org.gnome.Platform 3.36 system
Ambiance Gtk theme org.gtk.Gtk3theme.Ambiance 3.22 system
Yaru-light Gtk Theme org.gtk.Gtk3theme.Yaru-light 3.22 system
Чтобы просмотреть только приложения, а не время выполнения, используйте вместо этого эту команду.
flatpak list --app
Пример вывода:
Name Application ID Version Branch Installation
Fondo com.github.calo001.fondo 1.3.8 stable system
Flatseal com.github.tchx84.Flatseal 1.5.2 stable system
GNOME Boxes org.gnome.Boxes 3.36.6 stable system
7. Список удаленных приложений и сред выполнения
Вы также можете просмотреть список доступных приложений и сред выполнения из удаленных репозиториев.
Чтобы вывести список приложений и сред выполнения со всех пультов, используйте команду:
flatpak remote-ls
Перечислите только среды выполнения:
flatpak remote-ls --runtime
Перечислите только приложения:
flatpak remote-ls --app
Выведите список приложений и сред выполнения из определенного репозитория, например flathub, запустите:
flatpak remote-ls flathub
Чтобы вывести список только приложений из удаленного репозитория, запустите:
flatpak remote-ls flathub --app
8. Обновите приложения Flatpak
Чтобы обновить все ваши приложения Flatpak, запустите:
flatpak update
Для обновления конкретного приложения делаем:
flatpak update org.gnome.Boxes
9. Просмотр сведений о приложении Flatpak
Чтобы отобразить сведения об установленном приложении, запустите:
flatpak info org.gnome.Boxes
Пример вывода:
GNOME Boxes - Simple remote and virtual machines
ID: org.gnome.Boxes
Ref: app/org.gnome.Boxes/x86_64/stable
Arch: x86_64
Branch: stable
Version: 3.36.6
License: LGPL-2.1+
Origin: flathub
Collection: org.flathub.Stable
Installation: system
Installed: 706.9 MB
Runtime: org.gnome.Platform/x86_64/3.36
Sdk: org.gnome.Sdk/x86_64/3.36
Commit: 98c619ed78736e85433bcbecd5c4392ad30d4890a71ddc909f5b4c51dfcde340
Parent: 72ec972e0ce7fdf640f478d406a8acad5f90ebd1f8c0ac330baa7ed3dd5ccd70
Subject: Build vte from git master (a8cf05d9)
Date: 2020-09-02 10:02:20 +0000
10. Удалите приложения Flatpak.
Чтобы удалить приложение Flatpak, запустите:
sudo flatpak uninstall org.gnome.Boxes
11. Удалить удаленные репозитории
Чтобы удалить пульт, например флэтхаб:
sudo flatpak remote-delete flathub
Здесь flathub — это имя пульта.
12. Удалите неиспользуемые среды выполнения.
После того как вы удалили все приложения, зависящие от конкретной среды выполнения, сама среда выполнения не будет удалена автоматически.
Чтобы удалить среды выполнения и расширения, которые не используются установленными приложениями, запустите:
flatpak uninstall --unused
13. Удалить кеш Flatpak
Чтобы удалить остатки кеша Flatpak в папке tmp
, запустите:
sudo bash -c "! pgrep -x flatpak && rm -r /var/tmp/flatpak-cache-*"
Если вы используете systemd
в качестве системного менеджера по умолчанию, вы можете автоматизировать задачу очистки оставшегося кэша Flatpak, как показано ниже.
Создайте служебный файл с именем clear_flatpak_cache.service
в каталоге /lib/systemd/system/
со следующим содержимым:
[Unit]
Description=Flatpak cache cleaner
[Service]
ExecStart=bash -c "! pgrep -x flatpak && rm -r /var/tmp/flatpak-cache-*"
[Install]
WantedBy=multi-user.target
Запустите и включите эту службу при загрузке:
sudo systemctl enable --now clear_flatpak_cache
С этого момента оставшиеся файлы кэша Flatpak будут очищаться при запуске.
14. Ремонт установки Flatpak
Мы можем восстановить установку Flatpak, удалив и переустановив недействительные объекты.
Для этого запустите:
flatpak repair
Вы также можете выполнить восстановление для каждого пользователя и для каждой системы с помощью флагов --user
и --system
.
Восстановление установки для каждого пользователя:
flatpak repair --user
Восстановление системной установки:
flatpak repair --system
15. Просмотр истории Flatpak
Возможно, вы установили некоторые приложения, обновили их или удалили. Все транзакции Flatpak будут регистрироваться Flatpak.
Вы можете просмотреть эти журналы, чтобы узнать, какие изменения были внесены в вашу установку Flatpak с течением времени.
flatpak history
16. Отображение раздела справки Flatpak
Чтобы получить помощь по Flatpak, запустите:
flatpak --help
Эта команда отобразит список всех доступных параметров Flatpak и подкоманд с небольшим описанием.
Дополнительный совет: перечислите все неустановленные каталоги Flatpak
Я наткнулся на скрипт для вывода списка всех неустановленных каталогов Flatpak, которые можно безопасно удалить. Используя этот скрипт, вы можете показать все неиспользуемые каталоги ~/.var/app
из удаленных пакетов Flatpaks и их размер.
Создайте текстовый файл с именем list-unused-flatpak-directories.sh:
nano list-unused-flatpak-directories.sh
Вставьте в него следующее содержимое:
#!/bin/bash
set -euo pipefail
base_dir=$(realpath $HOME/.var/app --relative-to=$(pwd))
comm -13 <(flatpak list --columns=application | sort) <(ls -1 $HOME/.var/app/ | sort) \
| sed "s#^#$base_dir/#" | tr '\n' '\0' | du -sch --files0-from=-
Сохраните файл и закройте его.
Сделайте скрипт исполняемым с помощью команды:
chmod +x list-unused-flatpak-directories.sh
Наконец, запустите его, чтобы просмотреть все удаленные каталоги Flatpak.
./list-unused-flatpak-directories.sh
Часто задаваемые вопросы
Часто задаваемые вопросы о Флэтпаке:
Вопрос: Что такое Flatpak?
О: Flatpak — это утилита с открытым исходным кодом, которая облегчает распространение приложений в различных дистрибутивах Linux. Это позволяет разработчикам создавать приложения один раз и распространять их в различных дистрибутивах Linux, не беспокоясь о проблемах совместимости.
Вопрос: Кто разработал Flatpak?
О: Первоначально Flatpak был разработан Алексом Ларссоном, а позже был одобрен и поддержан такими организациями, как Red Hat, Endless Computers и Collabora. В настоящее время его поддерживает независимое сообщество, состоящее из участников, волонтеров и других поддерживающих организаций.
Вопрос: Как работает Flatpak?
О: Flatpak позволяет объединить приложение вместе с необходимыми библиотеками и зависимостями в один пакет. Это означает, что разработчикам не нужно создавать отдельные версии приложения для разных дистрибутивов Linux. Пользователи могут устанавливать и запускать приложения Flatpak независимо от используемого ими дистрибутива, обеспечивая единообразие работы.
Вопрос: Как установить Flatpak в моей системе Linux?
О: Сначала включите репозиторий Flathub:$sudo Flatpak Remote-Add --if-not-exists Flathub https://dl.flathub.org/repo/flathub.flatpakrepo
Затем установите приложение Flatpak:$Flatpak install
Вопрос: В чем разница между Flatpak и Snap?
О: Хотя и Flatpak, и Snap служат одной и той же цели — оптимизировать процесс распространения приложений в Linux, они используют разные подходы и были разработаны разными организациями. Snap был разработан Canonical, компанией, стоящей за Ubuntu. Flatpak обеспечивает более децентрализованное распространение приложений, позволяя использовать несколько репозиториев, тогда как Snap в основном работает из централизованного репозитория.
Вопрос: Могу ли я установить несколько версий приложения с помощью Flatpak?
О: Да, одной из примечательных особенностей Flatpak является возможность одновременной установки и запуска нескольких версий одного и того же приложения. Это особенно полезно для разработчиков, которым может потребоваться одновременное тестирование разных версий приложения.
Вопрос: Как Flatpak обеспечивает безопасность приложений?
О: Flatpak уделяет особое внимание безопасности, изолируя приложения друг от друга и базовой системы с помощью таких технологий, как пространства имен и seccomp. Это означает, что приложения имеют ограниченный доступ к хост-системе, что снижает риск компрометации всей системы.
Вопрос: На каком языке программирования написан Flatpak?
О: Flatpak в основном написан на языке программирования C. Он выпущен под лицензией LGPL (Lesser General Public License).
Заключение
В этом руководстве по Flatpak вы кратко познакомились с Flatpak и базовыми технологиями, используемыми в Flatpak, такими как среды выполнения, удаленные устройства, встроенные библиотеки, песочницы и т. д. А затем также объясняется, как установить и использовать Flatpak в дистрибутивах Linux.
Рекомендуется к прочтению:
- Как легко настроить разрешения приложений Flatpak с помощью Flatseal
- Сравнение менеджеров пакетов Linux: AppImage, Snap и Flatpak
Ресурсы:
- Сайт Flatpak
- Сайт Flathub
- Репозиторий Flatpak на GitHub