LINUX.ORG.RU

Что такое Flatpak и какие проблемы он решает

 , , , ,


0

1

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

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

— Линус Торвальдс, создатель Linux и фанат Mac (не Дональдса)

Проблема в мире Linux с дистрибуцией приложений всегда была острой. Если с какими-то простыми консольными утилитами проблем особых нет, так как они часто представляют собой один бинарник без зависимостей, их можно скачать curl’ ом и просто запустить, то с чем-то сложным уже беда. Можно было использовать Windows-подход, распространяя приложение в виде архива со всеми зависимостями, но в мире Linux пошли по другому пути, вынеся общие зависимости в отдельные пакеты. Но тут возникла проблема с тем, что пакетам нужна разная версия одной и той же зависимости, и тут выбор делается в пользу той, которая системная, но приложение как-то нужно запускать. Сюда же накладывается проблема с кучей дистрибутивов с разными версиями системных библиотек.

Решением может быть переход на роллинг-релиз, например, и тут два подхода: компилируем все пакеты, красноглазя ночами, либо используем собранные (бинарные). Компиляцией бинарных пакетов занимаются энтузиасты в основном, им никто сборочные сервера не оплачивает, поэтому часто, как в том же Arch Linux, установка пакета из репы — это скачивание того же .deb файла с сайта разработчиков, которые сидят на какой-нибудь Ubuntu 18, и их мало волнуют проблемы тех, кто сидит не то что с роллинга, а с более новых версий Ubuntu. Ситуация складывалась критическая, и решением стало засунуть все в контейнеры. Причем, это еще решало проблемы с безопасностью.

Что такое Flatpak

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

  • Flatpak использует единый формат пакетов для всех дистрибутивов Linux. Это означает, что разработчики могут создавать один пакет, который будет работать на любой системе, поддерживающей Flatpak, независимо от используемого дистрибутива.

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

  • Flatpak использует централизованное хранилище приложений, называемое Flathub. Разработчики могут публиковать свои приложения в Flathub, и пользователи смогут легко устанавливать их на любом дистрибутиве, поддерживающем Flatpak. Это устраняет необходимость в создании и поддержке пакетов для каждого дистрибутива.

✍️ История

Flatpak изначально назывался XDG-App. В 2015 году проект был переименован в Flatpak, чтобы лучше отразить его цель — предоставление унифицированного способа распространения графических приложений на различных дистрибутивах Linux.

🤓 Кто создатель Flatpak

Flatpak — проект, разрабатываемый сообществом с поддержкой ряда компаний и организаций. Основателем и ведущим разработчиком является Александр Ларссон (Alexander Larsson).

Александр Ларссон — опытный шведский разработчик, создатель Flatpak. Он долгое время работал в Red Hat и известен своим вкладом в развитие среды рабочего стола GNOME, а также фреймворка мультимедиа GStreamer.

💰 Спонсоры

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

  • Red Hat — одна из ключевых компаний, активно участвующих в развитии Flatpak.
  • Endless — компания, известная своими Linux-дистрибутивами, также является спонсором Flatpak.
  • Другие организации и сообщества — включая GNOME Foundation и другие структуры, заинтересованные в развитии свободного программного обеспечения.

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

🧑‍💻 Поддержка в дистрибутивах

Flatpak доступен для установки в большинстве дистрибутивов из стандартных репозиториев. Стоит отметить, что в дистрибутивах от Red Hat типа Fedora, Flatpak является предустановленным, и почти все графические приложения ставятся через него.

👍🏿 Габен рекомендует

Благодаря Steam Deck самым популярным дистрибутивом на десктопе стал Steam OS, основанный на Arch Linux (можно сказать, что и Arch Linux теперь занимает больше половины рынка). Из его особенностей помимо использования Btrfs (причем корень монтируется в ro) можно отметить использование Flatpak как единственного рекомендованного способа установки приложений:

Как установить приложения?

В настоящее время это стандартный опыт KDE Plasma в плане установки программного обеспечения. Вы можете использовать Discover Software Center (на панели задач) для установки приложений. Discover Software Center устанавливает приложения с использованием технологии flatpak (подробнее об этом ниже) на записываемую часть вашего диска. Если вы разбираетесь в командной строке Linux, вы можете напрямую использовать команды flatpak для установки приложений. Обычные браузеры, музыкальные плееры и другие виды приложений уже доступны через эти методы, и мы ожидаем, что многие из них будут обновлены, исправлены и станут доступны после запуска.

И это при том, что Steam Deck, являясь по сути обычным Arch Linux, путем нехитрых манипуляций позволяет ставить пакеты через pacman.

🤔 Преимущества Flatpak

Flatpak выделяется рядом ключевых преимуществ:

  • Общие рантаймы — это наборы общих компонентов, которые используются различными приложениями. Благодаря этому Flatpak значительно выигрывает перед AppImage, позволяя экономить дисковое пространство и трафик. Библиотеки, которые содержат рантаймы, шарятся в RAM между приложениями.
  • Поддержка дельта-обновлений, обеспечивающих частичное обновление приложений, что сокращает объем загружаемых данных.
  • Скаченные приложения хранятся на диске в /var/lib/flatpak/repo. Там структура, похожая на git, используется сжатие и тд. Это позволяет хранить множество версий тех же рантаймов, причем их реальный размер на диске будет меньше того, который мы могли бы получить складывая размер каждой версии.
  • Изоляция приложений в контейнерах, обеспечивающая повышенную безопасность и стабильность работы.
  • Централизованное хранилище пакетов Flathub, где всегда доступны актуальные версии приложений. Так же, что важно, вы можете подключить сторонние репозитории.
  • Из неочевидных преимуществ Flatpak нужно упомянуть, что даже в стандартных репозиториях дистрибутивов ментейнерами даже популярных приложений являются сторонние разработчики-энтузиасты, в то время как во Flathub приложения часто поддерживают их разработчики (как тот же Telegram).
  • Все пользовательские данные хранятся в одном месте: в директории ~/.var.

♻️ Дельта-обновления

Дельта-обновления — это одно из главных преимуществ Flatpak. Они позволяют экономить время и пропускную способность сети, загружая только изменения между текущей и новой версиями приложения, а не весь пакет целиком.

Как работают дельта-обновления:

Для delta-обновлений в Flatpak используется библиотека ostree. Принцип работы:

  • Сравнение файлов: При обновлении приложения Flatpak сравнивает файлы текущей версии с файлами новой версии.
  • Генерация дельт: Flatpak генерирует «дельты» — наборы изменений, которые нужно применить к текущим файлам, чтобы получить новые файлы.
  • Загрузка дельт: Дельты загружаются с сервера и применяются к локальным файлам.
  • Обновление: После применения дельт приложение обновляется до новой версии.

Преимущества дельта-обновлений:

  • Экономия пропускной способности: Загружаются только изменения, что снижает потребление интернет-трафика.
  • Быстрое обновление: Обновление происходит быстрее, так как загружается меньше данных.
  • Экономия места: Меньше данных загружается, что экономит место на диске.

🫙 Что такое контейнеры

Контейнеры — это технология виртуализации на уровне операционной системы, которая позволяет запускать приложения в изолированных средах. В отличие от виртуальных машин, контейнеры используют ядро хост-системы, что делает их более легковесными и быстрыми.

Как работают контейнеры

  1. Изоляция процессов: Контейнеры изолируют процессы приложений друг от друга и от основной системы. Это достигается за счет использования механизмов ядра Linux, таких как namespaces и cgroups.

  2. Namespaces: Namespaces создают изолированные пространства имен для различных ресурсов, таких как процессы, сеть, файловая система и пользователи. Это позволяет каждому контейнеру иметь свою собственную «область видимости».

  3. Cgroups: Control Groups (cgroups) ограничивают и контролируют использование ресурсов (CPU, память, сеть) контейнерами. Это позволяет управлять нагрузкой на систему и предотвращать влияние одного контейнера на другие.

  4. Файловая система: Контейнеры используют файловую систему, изолированную от основной системы. Обычно это достигается с помощью UnionFS или OverlayFS, которые объединяют несколько слоев файловой системы в один.

Изоляция и безопасность

Для создания изолированных контейнеров Flatpak использует инструмент bubblewrap, который управляет изоляцией процессов и ресурсами. Bubblewrap позволяет приложениям запускаться в защищённой среде с минимальным доступом к системным файлам и службам, что добавляет дополнительный уровень безопасности, ограничивая потенциальные угрозы и уязвимости.

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

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

Так же важно отметить, что если два приложения используют один и тот же runtime, они могут разделять в памяти библиотеки, предоставляемые этим runtime. Это аналогично тому, как стандартные приложения разделяют динамически загруженные библиотеки (shared libraries) в обычных Linux системах.

Ограничения песочницы

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

  • Нет доступа к файлам хоста, за исключением среды выполнения (runtime), самого приложения, ~/.var/app/$FLATPAK_ID, и $XDG_RUNTIME_DIR/app/$FLATPAK_ID. Только последние два из них являются доступными для записи.

  • Нет доступа к сети.

  • Нет доступа к узлам устройств (за исключением /dev/null и т.д.).

  • Нет доступа к процессам за пределами песочницы.

  • Ограниченные системные вызовы. Например, приложения не могут использовать нестандартные типы сетевых сокетов или отслеживать другие процессы с помощью ptrace.

  • Ограниченный доступ к экземпляру сессионного D-Bus — приложение может владеть только своим собственным именем на шине.

  • Нет доступа к хост-сервисам, таким как X11, системный D-Bus или PulseAudio.

Доступ к сети, к сокетам dbus, некоторым устройствам и тп приложению можно дать.

К каталогам хоста типа /root, /sys, /bin и тд доступ нельзя получить.

Кому не нужен Flatpak?

  • Пользователям дистрибутивов типа Ubuntu, где есть полноценный аналог + в дистрибутиве, где присутствует встроенная телеметрия, какие-то соображения о приватности, доверии разработчикам не работают.
  • В таких дистрибутивах как Qubes OS, где каждое приложение ставится в виртуалку, Flatpak чуть менее чем полностью не уместен.

Установка

1. Ubuntu/Debian

# Обновляем список пакетов
sudo apt update

# Устанавливаем Flatpak
sudo apt install flatpak

# Устанавливаем плагин для графического интерфейса (необязательно)
sudo apt install gnome-software-plugin-flatpak

2. Fedora

В новых версиях Flatpak установлен по умолчанию.

sudo dnf install flatpak

3. Arch Linux и его клоны

sudo pacman -S flatpak

yay -S flatpak

4. openSUSE

sudo zypper install flatpak

5. CentOS/RHEL

# Включаем репозиторий EPEL (если еще не включен)
sudo yum install epel-release

# Устанавливаем Flatpak
sudo yum install flatpak

6. Gentoo

# Устанавливаем Flatpak
sudo emerge --ask app-eselect/eselect-repository
sudo eselect repository enable guru
sudo emerge --sync guru
sudo emerge --ask flatpak

🚀 Основные команды для терминала

Некоторые из этих команд могут понадобиться:

# Установка пакета
# flathub здесь — это явное указание из какого репозитория установить приложение. Указание репозитория можно опустить
flatpak install flathub com.example.App

# Запуск приложения
flatpak run com.example.App

# Обновление одного пакета
flatpak update com.example.App

# Обновление всех пакетов
flatpak update

# Удаление пакета
flatpak uninstall com.example.App

# Вывести список рантаймов
flatpak list --runtime

# Удаление «хвостов» в виде неиспользуемых рантаймов
flatpak uninstall --unused

# Поиск пакета
flatpak search <text>

# Вывод списка установленных пакетов с их id, названием, занимаемым местом
flatpak list --columns=app,name,size

# Просмотр информации о пакете
flatpak info com.discordapp.Discord

# Добавление сторонего репозитория от разрабов KDE
flatpak remote-add --if-not-exists kdeapps --from https://distribute.kde.org/kdeapps.flatpakrepo

# Так же мы можем присоединится к любому запущенному контейнеру
flatpak enter com.discordapp.Discord sh

🚧 Flatseal: Управление разрешениями Flatpak

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

Основные функции Flatseal:

  1. Просмотр разрешений: Flatseal отображает все разрешения, предоставленные каждому приложению, включая доступ к файлам, сети, аппаратным устройствам и другим ресурсам.

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

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

Установка Flatseal:

Flatseal можно установить через Flathub:

flatpak install flathub com.github.tchx84.Flatseal

Использование Flatseal:

  1. Запуск Flatseal:

    flatpak run com.github.tchx84.Flatseal
    
  2. Просмотр и изменение разрешений:

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

🖥️ Интеграция с DE

Flatpak интегрирован в популярные окружения рабочего стола KDE и GNOME. Как в GNOME Software, так и в Discover можно устанавливать приложения напрямую из Flatpak, мало того в обеих средах Flatpak является источником для поиска и установки приложений по умолчанию (разрабы дистров как правило Flatpak заменяют на свои пакетные менеджеры, а чистые Gnome и KDE можно увидеть лишь в Arch Linux). Так же можно управлять их правами при наличии установленного Flatseal. В Plasma 6 для этого запускаем System Settings, а далее Security & PrivacyApplication PermissionsFlatpak Permissions. В Gnome настройки приложений, установленных через Flatpak можно увидеть и изменить так:

  • Откройте GNOME Software.
  • Перейдите на вкладку Installed.
  • Найдите приложение, установленное через Flatpak.
  • Нажмите на приложение и перейдите на вкладку Permissions.
  • Здесь вы можете управлять правами доступа для выбранного приложения.

Недостатки Flatpak

  • Более долгий запуск приложений. Речь идет о миллисекундах, но тем не менее.
  • Приложение, установленное через Flatpak имеет ограниченный доступ к ресурсам и файловой системе хоста, что может быть проблематичным для Gparted или какой-нибудь IDE, которые должны быть тесно интегрирована с системой. Руководствуйтесь правилом не ставить стандартные приложения для вашего DE из Flatpak
  • Он используется для установки только для графических приложений.
  • Осиротевшие пакеты, оставшиеся без мейнтейнера удаляют из репозитория. Очень старые версии рантаймов так же удаляют.

⚔️ Сравнение с конкурирующими технологиями

AppImage и Snap — это технологии для решения проблемы с кросс-дистрибутивным распространением приложений на Linux, конкурирующие с Flatpak. Каждая из них имеет свои преимущества и недостатки.

AppImage

Преимущества:

  • Простота использования: AppImage — это просто исполняемый файл, который можно запустить без установки.
  • Условная переносимость: AppImage в теории должен работать на любом дистрибутиве Linux, поддерживающем исполняемые файлы ELF. Тут нужно написать, что этот пункт применим с очень большой натяжкой, так как с тем же musl этот формат не дружит, те какие-то системные зависимости все равно должны быть.
  • Не требует установки: Не нужно устанавливать пакеты или зависимости, что упрощает распространение приложений.

Недостатки:

  • Нет обновлений: AppImage не предоставляет механизм обновления приложений, нужно постоянно скачивать новую версию приложения.
  • Засоряет систему: В пакеты AppImage включены зависимости. Это тот же Windows-подход только у нас вместо папочек архивчики, где повторяющиеся so-шки.
  • Нет ограничения доступа: AppImage не изолирует приложения, что может привести к проблемам с безопасностью и стабильностью.

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

Snap

Преимущества:

  • Интеграция с Ubuntu: Snap тесно интегрирован с Ubuntu, что обеспечивает лучшую поддержку и обновления.
  • Консольные приложения: Snap позволяет устанавливать и запускать как графические, так и консольные приложения.
  • Автоматические обновления: Snap поддерживает автоматические обновления приложений.

Недостатки:

  • Зависимость от Ubuntu: Snap тесно связан с Ubuntu, что может быть проблемой для других дистрибутивов.

Остальные недостатки те же самые, что и у Flatpak.

⚔️ Flatpak vs Firejail, Apparmor и SELinux

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

📦 Поддержка flatpak-версий приложений официальными разработчиками

Вот неполный список flatpak-версий популярных приложений, поддерживаемых их разработчиками:

Офисные приложения

  1. LibreOffice — свободный офисный пакет.
  2. OnlyOffice Desktop Editors — редакторы документов, таблиц и презентаций.

Мультимедиа

  1. VLC Media Player — универсальный медиаплеер.
  2. Spotify — музыкальный стриминговый сервис.
  3. Audacity — аудиоредактор.
  4. GIMP — растровый графический редактор.
  5. Kdenlive — видеоредактор.

Интернет и коммуникации

  1. Mozilla Firefox — веб-браузер.
  2. Google Chrome — веб-браузер.
  3. Telegram Desktop — мессенджер.
  4. Slack — платформа для командной работы.
  5. Discord — платформа для общения.

Разработка

  1. Visual Studio Code — редактор кода от Microsoft.
  2. JetBrains Toolbox — набор инструментов для разработки от JetBrains.
  3. GitKraken — графический интерфейс для Git.

От себя отмечу, что не нужно использовать flatpak-версии IDE. Как писал уже выше для них критически важна интеграция с системой. Тот же VS Code требует либо создания своего flatpak-пакета, что сложно, либо использования разработки через docker-контейнеры, что не всегда удобно. Можно, конечно, извратиться установив все необходимые средства разработки в какой ~/.local/bin, но это противоречит практике при которой все пакеты в системе должны управляться пакетным менеджером, чтобы иметь их актуальные версии (в случае с Python всякие black и pylint можно ставить через pipx — тогда терпимо). Но, так или иначе, я предупредил о возможных проблемах и подсказал пути их решения.

Системные утилиты

  1. Timeshift — утилита для создания снимков системы.

Игры

  1. Steam — платформа для цифровой дистрибуции игр.
  2. Lutris — менеджер игр для Linux.

Другие

  1. Krita — профессиональный инструмент для цифрового рисования.
  2. Inkscape — векторный графический редактор.
  3. Blender — 3D-редактор.
  4. OBS Studio — программа для записи и потоковой передачи видео.

Если раньше было проблемой мотивировать разрабов популярных программ сделать flatpak, но после того как Fedora выпилили многие программы из своих репозиториев, разработчики начали активно добавлять свои программы в Flathub.

📂 Популярные репозитории

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

  1. KDE Applications (kdeapps) — репозиторий с широким набором приложений для среды рабочего стола KDE.

  2. GNOME Nightly — содержит ночные сборки приложений GNOME, для тех, кто предпочитает работать с последними версиями.

  3. Elementary OS Flatpak — официальный репозиторий приложений для пользователей Elementary OS, известного своим минимализмом и эстетикой.

🗣️ Мнения от экспертов в области безопасности

В мире Linux существует ряд известных разработчиков и исследователей в области безопасности, которые высказывают свое мнение о Flatpak и его роли в обеспечении безопасности и совместимости приложений.

Маттью Гэрретт, специализирующийся на обеспечении безопасности UEFI и разработке ядра Linux, отмечает, что Flatpak предлагает важные преимущества в плане изоляции приложений и управления зависимостями. Он считает, что этот подход значительно улучшает безопасность системы, поскольку каждое приложение работает в своей собственной изолированной среде, что снижает риск распространения вредоносного кода и уязвимостей. Гэрретт также подчеркивает, что Flatpak позволяет разработчикам легко распространять свои приложения на различных дистрибутивах Linux, что способствует более широкому распространению программного обеспечения и улучшению совместимости.

Еще одним известным исследователем в области безопасности, который высказывает свое мнение о Flatpak, является Киз Кук, работающий в компании Google и активно участвующий в разработке ядра Linux, также видит в Flatpak потенциал для улучшения безопасности. Он отмечает, что изоляция приложений, предлагаемая Flatpak, является важным шагом вперед в борьбе с уязвимостями и атаками на систему. Кук подчеркивает, что Flatpak позволяет пользователям устанавливать приложения с минимальными рисками для безопасности, поскольку каждое приложение работает в своей собственной среде, изолированной от остальной системы.

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

🤦 Про критику

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

Сайт «Flatpak is not a future» — это пример критики проекта Flatpak, которая, по мнению автора, не имеет будущего. Однако, такие критические заявления часто основаны на неполной информации или предвзятости и не отражают реальной ситуации с проектом Flatpak. Со всеми его тезисами можно ознакомиться тут. Вот их опровержение:

  1. Песочница и безопасность: автор критикует Flatpak за то что ментейнеры пакетов дают им излишние права… — Ну, это примерно как претензии к Пашке Дурову за то что творят пользователи Телеграма.

  2. Объём дискового пространства: да, действительно, в первый раз когда качаешь приложение, то скачивается в тч его рантайм с драйверами Nvidia и тп, но рантаймы общие для приложений, а при обновлении скачивается только дельта. Это ситуация когда полуправда хуже лжи.

  3. Производительность: утверждается, что приложения дольше запускаются. Это правда, но тут все-таки нужно сделать выбор между изоляцией и безопасностью, а дополнительное время на запуск не более секунды на относительно современных машинах.

  4. Разделение ответственности: тут уже автор катит телегу о том, что разрабы сами определяют какие права нужны их приложениям, а не занимаются этим модераторы на Flathub. Странная претензия, учитывая, что и модерация не спасает от ситуаций как с бекдором в библиотеке xz.

🪲 Реальные уязвимости

По-мимо каких-то мнимых претензий со стороны троллей и просто невежд, которые не понимают либо не хотят разбираться «а зачем оно нужно», есть реально задокументированные серьезные проблемы в области безопасности, ради обеспечения которой вроде и нужно использовать Flatpak. Из серьезных уязвимостей можно припомнить, CVE-2024-32462, где разработчики пакета в теории могли получить доступ к файловой системе хоста через command line injection. Она относительно серьезная, но так или иначе Flatpak не дает доступа к root. Тут уже каждый решит для себя что лучше чувство мнимой безопасности или ее полное отсутствие, потому как никто не может гарантировать появление подобных уязвимостей в будущем. Ряяяяяяя — скажут противники Flatpak, зачем оно такое дырявое, а я их разочарую, потому как эта уязвимость была и в sudo, например, изучаем этот сплойт для CVE-2023-22809. Вывод: Flatpak настолько уязвим, насколько уязвимы сторонние разработки, лежащие в основе.

👁️ Почему Flatpak — это будущее?

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

🔗 Ссылки



Проверено: hobbit ()
Последнее исправление: rtxtxtrx (всего исправлений: 49)

Картинка типа «кот в мешке», но только не в мешке, а в flat pak (package) так называют в тч картонные коробки

rtxtxtrx
() автор топика

Предлагаю автору определиться, что он хочет написать: статью с введением в технологию Flatpak или наброс с навешиванием ярлыков. Когда я в первый раз увидел в тексте «городских сумасшедших», я хотел просто отредактировать текст. Но когда это мне попалось во второй раз, я передумал. С набросами такого уровня – на стоплинукс, там таких любят.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

А как мягко назвать таких хейтеров, которые просто ненавидят все, что не понимают, а точнее просто не хотят разбираться? Невежды? Так тоже обидятся

rtxtxtrx
() автор топика

опытный шведский разработчик, создатель Flatpak. Он долгое время работал в Red Hat и известен своим вкладом в развитие среды рабочего стола GNOME, а также фреймворка мультимедиа GStreamer.

А, теперь все ясно.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от BceM_IIpuBeT

Ничего не ясно. Red Hat и systemd создал.

rtxtxtrx
() автор топика

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

MEZON ★★★★★
()
Ответ на: комментарий от MEZON

Пока существует Snap флатпак - никому не нужный мусор

(c) MEZON

Пользуетесь ли вы Flatpak? (комментарий)

Вообще снап - это лучшее, что случалось в пользовательском окружении линукса за последние лет 6.

(c) MEZON

Первый выпуск дистрибутива TileOS 1.0 (комментарий)

Я ожидал более вменяемую критику. Даже хотел спросить почему, чтобы понять анемнез, а тут просто фанат бубунты. Мне кажется, что в изначальной версии текста не ярлыки были навешаны, а была дана емкая характеристика. Но, я согласен, что Snap — это шаг вперед по сравнению с прописыванием сорсов и сидении на патченных какими-то Васянами версиях пакетов

rtxtxtrx
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 2)
Ответ на: комментарий от sadko4u

Да. В самом прогрессивном дистрибутиве Linux - Steam OS, основанном на Arch даже рекомендуют все ставить через Flatpak:

How do I install apps?

Currently, this is a stock KDE Plasma experience in terms of installing software. You can use the Discover Software Center (on the taskbar) to install apps. The Discover Software Center installs applications using flatpak technology (more on this below) onto the writeable portion of your drive. If you know your way around a Linux command line you can directly use flatpak commands to install applications. Common browsers, music players, and other kinds of applications are already available via these methods, and we expect that many more will be updated, fixed, and available after launch.

Какие вам еще нужны доказательства?

rtxtxtrx
() автор топика
Ответ на: комментарий от sadko4u

Технологии, которые вызывают туть ненависть:

  • X11: многие уверены, что он устарел и его срочно нужно заменить на вяленного, хотя тот все еще бажный и постоянно ломается
  • Wayland: зачем тот нужен, если все работает? — Работает не все и у X11 интерфейс подвисает из-за определенных особенностей
  • Docker: эти DevOps’ы отняли у нас работу, мы сидим без работы… и виноват в этом Docker, что он здорово облегчает жизнь разработчикам, перенос проектов на другой сервер, установку серверов и тп, избавляя от необходимости гугленья че у тебя там не работает — их не волнует, их квалификация буквально на уровне эникея, но они любят поковырять конфиги
  • Electron: ненавидят Electron, потому что JS, но любят Gnome/KDE хотя те по факту работают… на HTML/CSS и JS (для полной картины не хватает PHP) — это какие-то двойные стандарты
  • Systemd: разработан Red Hat, а та как-то связана с Microsoft — сторонники теорий заговора: «все дураки, их обманывают, но они не знают», поэтому нужно срочно сорвать покровы
  • Btrfs: зачем мне Btrfs? Ряяяяяя я живу в болоте (отсылка к персонажу из Ведьмака) сижу на ext3 и меня все устраивает
  • Rust: для компиляциии пакетов из исходников требует наличия компилятора, весящего 500 метров, а готовые пакеты весят на пару мегабайт больше чем сишные — этого им в приницпе достаточно
  • Git: я выучил Mercurial или сижу до сих пор на SVN, а везде в вакансиях требуют какой-то Git, учить не буду, твердо и четко!

И тут мы добрались до Flatpak. Давай поясняй, а что в нем плохого и какие есть альтернативы кроме тех, что я перечислил?

rtxtxtrx
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

То, что в Steam OS рекомендуют ставить всё через Flatpak, понятно и очевидно. Там свистопляска с зависимостями и разными версиями библиотек через это проще всего разрешается. Обычному нормальному дистрибутиву это зачем?

sadko4u ★★
()
Ответ на: комментарий от sadko4u

Вопрос то был в другом. Ты должен ответить чем тебе Flatpak то не нравится, для любителей дистрибутива для домохозяек, куда телеметрию и рекламу амазона пихают и тп, смена Snap на Flatpak не имеет смысла. На Steam Deck ты путем нехитрых манипуляций можешь ставить пакеты через pacman — это проще рутования андроида, которое делают школьники для обхода родительского контроля и просмотра порнухи. Я на помню что Arch Linux с интересными обоями, который называют Steam OS — это роллинг-релиз, где все пакеты и так самые свежие. Тут неочивидный ответ — пакеты даже в официальных репозиториях Арча от Васянов, во Flathub от разрабов. А на вопрос ответь

rtxtxtrx
() автор топика
Ответ на: комментарий от rtxtxtrx

Почему я должен отвечать-то? Мне не нравится FlatPak тем, что тащит тонны ненужного для каждого приложения. Вернее, оно нужно для работы конкретного приложения, а в целом в системе не нужно, т.к. его нельзя пошарить. Это превращает каждое приложение в монстра, весящего дофига и жрущего память, потому что для каждого приложения должна использоваться (а, по сути, присутствовать в оперативной памяти) своя версия шареных библиотек. Нерациональное использование ресурсов компьютера, иными словами. Бесит. Бесит засовывание в Snap/Flatpak браузеров вроде Firefox такими дистрибутивами как Ubuntu.

sadko4u ★★
()
Ответ на: комментарий от sadko4u

Если два приложения во Flatpak используют при запуске общую библиотеку, то она в память загружается один раз, а не два, но они не могут использовать библиотеки хоста. Про это тоже надо написать

rtxtxtrx
() автор топика
Ответ на: комментарий от rtxtxtrx

У меня нет никаких виджетов на рабочем столе. А сами приложения написаны на православных крестах с нормальным Qt.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Это можно даже не комментировать, но перейди в Edit Mode рабочего стола, там появится кнопка + Add Widgets, а потом найди их на панели… Вот они и есть тот самый QML, а еще поищи файлы с расширением .qml

rtxtxtrx
() автор топика

Засоряет систему: Каждый AppImage содержит все зависимости, что может привести к дублированию файлов и засоряет систему.

Это неправда, в том и смысл что AppImage хранит все (те что упихал в него разработчик) зависимости в себе и не засоряет систему, никуда ничего от себя не копируя (но монтируя), при этом он работает как обычное нативное приложение из /usr/bin и прозрачно настолько, насколько это возможно.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от MEZON

Это он тебя так больным назвал =), приходишь ко врачу и жалуешься, тут болит, там болит, врач тебя слушает, то что он от тебя слышит это и есть анамнез от тебе от тебя у врача.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от rtxtxtrx

В системе ничего не засоряется, от слова совсем, но если считать то что приложение запущенное в аппимаге работает просто как нативное и оно может использовать для своей конфигурации ~/.config например и считать это мусором, конфигурацию программы, тогда да.

Единственное что делает сам AppImage файл это занимает место на диске, всё. Ничего он не дублирует и ничего никуда не мусорит. А уж как работает программа которая в него упакована, это уже дело десятое ибо в том и цель, чтобы она работала также как и любая другая установленная в /usr/bin можно туда или в /usr/local/bin закидывать аппимаги, разве что для удобства ещё расширение убрать у файла, но я просто в ~/.local/bin кидаю.

Про занимаемое место есть смысл написать, а про мусор и какие то дублирования не надо, ибо ничего этого нет. (Может я ошибаюсь поправь)

Хотя есть одно что может людей реально бесить, а именно точки монтирования =)

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от LINUX-ORG-RU

Там зависимости дублируются, а в Flatpak общие рантаймы используются. Те ты ставишь приложение A, которое требует Mesa, то в первый раз поставятся два пакета (A и Mesa), а потом решишь поставить, B, требующее Mesa и поставится только B. Если ты запустишь приложения A и B, обращающиеся к одной либе из рантайма, то эта либа будет шариться между ними в памяти, а не дублироваться, те AppImage еще больше памяти потребляет. Ну а при обновлении у тебя будет качаться не 300 мегабайт, допустим, каждый раз как при обновлении через стандартный пакетный менеджер или скачивании нового AppImage, а 0-300 мегабайт, ну, например, мегабайт 15 скачается

rtxtxtrx
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 2)
Ответ на: комментарий от rtxtxtrx

Ну так я и говорю, он занимает место, сам по себе он просто 1 файл, никаких других файлов в системе не появится, ни дублей чего либо, ни мусора. А ты пишешь так что в ФС системе пользователя появятся всякие файлы непонятные и каталоги, но это не так.

Короче я суть понимаю, но я понимаю ещё как её поймут те кто не понимает сути. А суть в том что

AppImage может хранить в себе копии уже существующих зависимостей в системе и поэтому он весит порой много вот так или типа того будет понятнее.

А люди прочтут как срёт в систему непонятными файлами и каталогами =)

LINUX-ORG-RU ★★★★★
()

Короче ненужно, nix и то интереснее выглядит. В плане экономии места обычные пакеты вне конкуренции, в плане проприетари архив удобнее (в том числе и для самих разработчиков), в плане переносимого окружения nix выглядит интереснее.

Werenter ★★★
()
Ответ на: комментарий от Werenter

В плане экономии места обычные пакеты вне конкуренции

False

Ну ты явно портянку не осилил прочитать. Когда ты ставишь из стандартного репо пакет, который весит 300 мегабайт, то скачивается 300 и при каждом обновлении 300+ на какой-то % он пухнет, при обновлении во Flatpak: 300, а потом 15, 20, 30 и тп

в плане переносимого окружения nix выглядит интереснее.

Flatpak не про переносимость, а про универсальный формат для установки пакетов + как бонус пущая без_опасность

rtxtxtrx
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

Ну это как dll, которые идут с играми, прогами в винде. Та же схема, та же проблема, но гарантированная работоспособность. Лишними зависимостями засоряешь все. Просто у тебя весь этот мусор по архивам разложен вместо папочек, но по факту, что папку снести, что файл - все равно это ад зависимостей

rtxtxtrx
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

Тот же самый мусор и в флатпаке, если 20 приложениям нужны 20 разных ffmpeg у тебя будет 20 разных ffmpeg + 1 системный =)
Ладно ты автор, ты так видишь, я лишь попросил уточнить формулировку по поводу того что такое мусор в авторском понимании, ибо большинство людей прочтут это не так как ты это воспринимаешь.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от LINUX-ORG-RU

Нет. У тебя будет один ffmpeg, если приложениям нужна одинаковая версия. Все эти драйвера, мультимедия, ошметки DE, локали вынесены в рантаймы

rtxtxtrx
() автор топика
Ответ на: комментарий от rtxtxtrx

Нет. У тебя не будет один ffmpeg, если приложениям нужна разная версия.

Всё честно, не надо склонять всё в более удобную сторону, бывает и так и сяк. Бу. Я свои мысли сказал, а игнорировать их или внять дело хозяйское.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

я просто не так прочитал (как обычно начало и конец).

rtxtxtrx
() автор топика
Ответ на: комментарий от hobbit

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

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

А вот это вообще 4.2:

Засоряет систему: Каждый AppImage содержит все зависимости, что может привести к дублированию файлов и засорению системы.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 3)
Ответ на: комментарий от CrX

конечно, же хейтеры какой-то технологии — это не шизы с шапочками из фольги, а гении мысли. если мезон справедливо рассуждает, что технология X ему не нужна, так как у него в дистре есть Y, то гении пишут чушь мол Flatpak лишюю RAM жрет, а то и место у них сжирает, читают по диагонали и тп

rtxtxtrx
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от CrX

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

rtxtxtrx
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

я уж не говорю, что ты не читая высказал мнение

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

По сути вброса я пока писать ничего не хочу — пока главное, чтобы этот позор в статьи не попал.

CrX ★★★★★
()
Ответ на: комментарий от CrX

Почему кого-то должно волновать мнение flatpak-о-ненавистника? Ты один, а любителей обмазаться им — все пользователи Fedora…

Для этого достаточно прочитать заголовок

Кликбейтный заголовок, соответсвующий содержанию, иначе никто даже комментировать не будет, а так люди с шапочками из фольги выскажутся (но теперь когда сорваны покровы из твоего зандуства - наврядли), а не новость про то что вышла очередная версия Arch Linux, который и так каждый месяц 20 лет выходят. Хейтеры - это самые преданные фанаты (сам себя спалил).

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

чтобы этот позор в статьи не попал

Она с точки зрения человека, неразбирающегося и предвзятого чушь

rtxtxtrx
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

Она с точки зрения человека, неразбирающегося и предвзятого чушь

Да, чушь про тот же AppImage и то, что в нём обязательно включены все зависимости, написана от лица человека неразбирающегося и, видимо, предвзятого.

Хейтеры - это самые преданные фанаты (сам себя спалил)

Мне в целом плевать на существование Flatpak до тех пор, пока мне его не навязывают и не пытаются показать как будущее Linux. В отличие от нескольких других диверсий красношляпых, эта вполне себе опциональная и легко игнорируется при желании. А нравится кому-то обмазываться — пусть обмазываются — мне не жалко. Ну а что пользователи Fedora — особые — это и так понятно.

CrX ★★★★★
()
Ответ на: комментарий от hobbit

Тут в заголовке уже сразу наброс

MEZON ★★★★★
()

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

mittorn ★★★★★
()
Последнее исправление: mittorn (всего исправлений: 1)
Ответ на: комментарий от mittorn

Какой бинарь? Что ты несешь??? Для альтернативно одаренных поясняю:

  • Flatpak нужен для кросс-дистрибутивного распространения пакетов
  • Для того чтобы не трахаться с ограничением прав приложения через AppArmor или Firejail на худой конец.

Клоунов ставят, кстати, те кто в своем клоунизме расписываются типа это персонажа. Если для тебя AppArmor пустой звук, ты не знаешь, что такое контейнеры, ничего про изоляцию и тп, просто иди мимо. Это так же гениально как заявления, что Nix заменяет Flatpak…

rtxtxtrx
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от mittorn

А без лишней сотни гигабайт памяти даже не заработает

Без 100500 гигабайт ты хромиум собрать не сможешь на своей генте🤣 Приложения, запускаемые через контейнеры, почти ничего не потребляют 🤦🏼‍♀️. Про докер такие же бредни я часто слышу. Вот Flatpak - это докер для гуишных приложений

rtxtxtrx
() автор топика
Ответ на: комментарий от rtxtxtrx

Да что вы говорите?

 1.     org.freedesktop.Platform.GL.default                     23.08                u           flathub                        < 175,0 МБ
 2.     org.freedesktop.Platform.GL.default                     23.08-extra          u           flathub                        < 175,0 МБ
 3.     org.freedesktop.Platform.GL.nvidia-550-100              1.4                  u           flathub                        < 307,9 МБ
 4.     org.freedesktop.Platform.GL.nvidia-550-107-02           1.4                  u           flathub                        < 308,2 МБ

Это при том, что на прошлой неделе я уже запускал flatpak update и уже качал эти зависимости дважды. Разные приложения требуют разные версии flatpak-пакетов c одной и той же мажорной версией библиотеки. Просто потому, что один пакет был собран с версией x=y, а второй с x=y+1. И они мало того, что оба будут лежать на диске, так ещё и в памяти будут висеть одновременно, если я запущу оба приложения. А ведь у меня всего три пакета из flatpak стоят.

Теория - это хорошо и красиво, пока она не сталкивается с практикой.

shell-script ★★★★★
()
Последнее исправление: shell-script (всего исправлений: 1)
Ответ на: комментарий от shell-script

Ну тут претензии не ко мне, а к разрабам. И эта проблема надуманная. У тебя в память грузятся не все 300 мегабайт, которые занимает на жестком диске драйвер, а лишь примерно пару десятков: грузятся nvidia.ko и libnvidia-*.

❯ flatpak update -y                      
Looking for updates…


        ID                             Branch    Op   Remote    Download
 1. [✓] md.obsidian.Obsidian.Locale    stable    u    flathub   1.5 kB / 3.7 MB
 2. [✓] md.obsidian.Obsidian           stable    u    flathub   4.7 MB / 194.7 MB

Updates complete.

А вот частичные обновления все равно место экономят. 5 мегабайт скачал вместо 200.

rtxtxtrx
() автор топика
Ответ на: комментарий от rtxtxtrx

Fatpak - жырное говно в мире контейнеров. Несчастная попыка манагеров натянуть сову на глобус докер на десктоп с предсказуемым результатом. В pressure-vessel смогли сделать контейнер, который не будет тащить всю систему целиком и он выбирает между использованием системной библиотеки и фоллбэком от контейнера. Кстати, pressure-vessel основан на тех же компонентах, что и flatpak

Если для тебя AppArmor пустой звук

Так и есть

ты не знаешь, что такое контейнеры

Знаю, и потребность их на десктопе весьма и весьма ограничена, однако когда оно нужно - см. выше

ничего про изоляцию и тп

Flatpak пропихивают именно как кроссдистрибутивный пакет, а не средство изоляции

Это так же гениально как заявления, что Nix заменяет Flatpak…

Оба хороши, в nix так вообще говорят opengl не работает если развернуть никсовое приложение в другом дистре...

mittorn ★★★★★
()
Ответ на: комментарий от rtxtxtrx

Flatpak замаппит ещё одну копию используемых библиотек в память, но уже другой версии.
Поставишь 5 пакетов flatpak - и каждый притащит свой драйвер, потом удаляться само ничего не будет.
А пока они будут запущены - каждый будет ещё и грузить в память свой код.

Вот Flatpak - это докер для гуишных приложений

Да, только манагеры, его делающие не понимают разницу гуишных прилдожений с серврерными и потому вместо того, чтобы продумать архитектуру нормально заранее, притянули существующую как есть, а с возникшими проблемами уже разбирались по мере возникновения, нахлобучивая лютейшие костыли чтобы оно хое-как работало
А в мире серверов оверхед от контейнера действительно небольшой на фоне объёмов данных, с которыми он работает. Потому против подхода докера на сервере я ничего не имею. Там зависимостей у серверного софта то только стандартная либа, клиент БД и ещё пара библиотек. Но попытка это втащить на десктоп обречена на провал

mittorn ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.