LINUX.ORG.RU

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

 , , , ,


3

2

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. Он был создан в 2014 году. Незадолго до этого, в феврале 2013 года, вышел Linux 3.8, добавивший поддержку пользовательских неймспейсов. А еще до этого были реализованы изоляция процессов. Таким образом, проект изначально был рассчитан на использование самых последних возможностей ядра. В 2015 году проект был переименован в Flatpak, чтобы лучше отразить его цель — предоставление унифицированного способа распространения графических приложений на различных дистрибутивах Linux. «Pak» — это жаргонное «package», то есть «коробка», а «flat package» — это картонная коробка, стандартный способ доставки чего-либо почтой или службой доставки до дома.

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

Flatpak — проект, разрабатываемый сообществом с поддержкой ряда компаний и организаций. Основателем и ведущим разработчиком является шведский разработчик Александр Ларссон (Alexander Larsson). Он долгое время работал в 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 выделяется рядом ключевых преимуществ:

  • Использование ostree и поддержка дельта-обновлений, обеспечивающих частичное обновление приложений, сокращает объем загружаемых данных. Скачанные приложения хранятся на диске в /var/lib/flatpak. Там есть подкаталоги app, runtime, exports, …, repo. В repo структура похожа на Git: там хранятся дельты различий между версиями, используется сжатие и т.д. Это позволяет хранить множество версий тех же рантаймов, причем их реальный размер на диске будет меньше того, который мы могли бы получить, складывая размер каждой версии. Например, если сложить размеры из вывода flatpak list --columns=size, то получится 17 гигабайт различных версий приложений и рантаймов, но если выполнить du -sh /var/lib/flatpak, то там будет храниться всего 14 гигабайт благодаря механизму ostree. Также flatpak не хранит архивы с каждой установленной версией пакета, так как с ostree это не нужно, что тоже экономит очень много места. Можно сказать, что только это уже компенсирует необходимость иметь немного дополнительного места для хранения различий между версиями.
  • Общие рантаймы — это наборы общих компонентов, которые используются различными приложениями. Благодаря этому Flatpak значительно выигрывает перед AppImage, позволяя экономить дисковое пространство и трафик. Библиотеки, которые содержат рантаймы, шарятся в RAM между приложениями.
  • Изоляция приложений в контейнерах, обеспечивающая повышенную безопасность и стабильность работы. Например, ситуаций когда после обновления системных зависимостей, перестанет запускаться приложение из Flatpak, не будет.
  • Централизованное хранилище пакетов Flathub, где доступны самые новые версии приложений. Так же, что важно, вы можете подключить сторонние репозитории.
  • Из неочевидных преимуществ Flatpak нужно упомянуть, что даже в стандартных репозиториях дистрибутивов ментейнерами даже популярных приложений являются сторонние разработчики-энтузиасты, в то время как во Flathub приложения часто поддерживают их разработчики (как тот же Telegram).
  • Все пользовательские данные хранятся в одном месте: в директории ~/.var.
  • Приложения, распространяемые через Flatpak, часто бывают преднастроенными. Хотя это можно назвать и минусом.
  • Оформление приложений подстраивается под тему вашей DE (поддерживаются лишь KDE, Gnome и Xfce).

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

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

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

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

OSTree широко используется в продуктах компании Red Hat. Он позволяет откатывать систему после неудачных обновлений (прямо как в git).

Принцип работы:

  • Сравнение файлов: При обновлении приложения 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 является повышение безопасности настольных систем за счет изоляции приложений друг от друга. Это достигается с помощью песочницы, что означает, что по умолчанию приложения, запущенные с помощью 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 чуть менее чем полностью не уместен.

Установка

Ubuntu/Debian

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

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

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

Fedora

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

sudo dnf install flatpak

Arch Linux и его клоны

sudo pacman -S flatpak

yay -S flatpak

openSUSE

sudo zypper install flatpak

CentOS/RHEL

В новых версиях RHEL yum является алиасом dnf.

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

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

Gentoo

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

Alt Linux

sudo apt install flatpak
flatpak remote-add flathub https://dl.flathub.org/repo/flathub.flatpakrepo

Необязательное подключение репозитория

Если в вашем дистре по какой-то причине не прописан основной репозиторий, выполните эту команду:

flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

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

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

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

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

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

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

# Запретить обновление приложения
flatpak mask org.example.App

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

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

# Иногда пакет не хочется удаляться, потому как он почему помечен как системный, тогда нужно выполнить pin
flatpak pin --remove runtime/org.winehq.Wine.DLLs.dxvk/x86_64/stable-23.08
# а затем удалить его
flatpak uninstall org.winehq.Wine.DLLs.dxvk
# и почистить хвосты
flatpak uninstall --unused

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

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

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

# Дать доступ приложению к графическому устройству для работы с OpenGL
flatpak override --device=dri com.example.App

# Сбросить разрешения для приложения на дефолтные
flatpak override --reset com.example.App

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

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

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

# Удаление репозитория
flatpak remote-add repo

# Список репозиториев
flatpak remotes

🚧 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.

В Arch Linux в описании пакета Discover среди зависимостей указан packagekit-qt6. Он нужен для установки пакетов из стандартного репозитория. Там так же написано, что его можно использовать только на свой страх и риск, т.е. в Арче рекомендованный способ установки графических приложений — Flatpak.

Правами flatpak-приложений можно управлять при наличии установленного Flatseal.

Plasma 6: запускаем System Settings, а далее Security & PrivacyApplication PermissionsFlatpak Permissions.

Gnome:

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

Недостатки Flatpak

  • Более долгий запуск приложений. Речь идет о долях секунды или даже секундах, но тем не менее.
  • Приложение, установленное через Flatpak имеет ограниченный доступ к ресурсам и файловой системе хоста, что может быть проблематичным для Gparted (поэтому его и нет во Flathub) или какой-нибудь IDE, которые должны быть тесно интегрирована с системой. Руководствуйтесь правилом не ставить стандартные приложения для вашего DE из Flatpak
  • Он используется для установки только графических приложений.
  • Внешний вид приложений может отличаться от привычного. Дело тут в том, что «разработчики» и мейнтейнеры пакетов дистрибутивов очень часто кардинально меняют внешний вид всего до чего могут дотянуться. Внешний вид приложений из стандартных репозиториев не изменяют только в Arch Linux. Но тут можно кинуть камень в огород и упаковщиков flatpak, они тоже таким страдают.
  • Осиротевшие пакеты, оставшиеся без мейнтейнера удаляют из репозитория. Очень старые версии рантаймов так же удаляют.
  • Система может засоряться рантаймами, поэтому нужно периодически вызывать flatpak uninstall --unused. Но при использовании приложений, которые редко обновляются, множество старых версий рантаймов будет всегда присутствовать. Так же можно использовать flatpak mask org.example.App чтобы запретить обновление проблемного приложения при вызове flatpak update.

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

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

AppImage

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

Тут указаны преимущества над стандартными спсобами дистрибуции

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

Недостатки:

  • Нет обновлений: AppImage не предоставляет механизм обновления приложений, нужно постоянно скачивать новую версию приложения.
  • Засоряет систему: в «образы» (архивы и тп — как хочешь называй) AppImage включены зависимости. Это тот же Windows-подход только у нас вместо папочек архивчики, где содержатся повторяющиеся so-шки. Чем оно лучше статических сборок? — Лишь тем, что все идет одним файлом и компилировать ничего не надо.
  • Нет ограничения доступа: AppImage не изолирует приложения, что может привести к проблемам с безопасностью.
  • Нет реальной кроссдистрибутивности: например, AppImage гвоздями прибит к glibc.

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

Snap

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

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

Недостатки:

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

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

⚔️ Flatpak vs Firejail, Apparmor и SELinux

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

Так же никто вам не запрещает использовать тот же Apparmor чтобы дополнительно ограничить flatpak и все приложения, запускаемые через него.

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

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

Вот неполный список 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 — популярный веб-браузер с телеметрией и интеграцией с сервисами Google.
  3. Telegram Desktop — ранее свободный мессенджер.
  4. Slack — корпоративный мессенджер.
  5. Discord — мессенджер, используемый для общения в онлайн-играх.

Разработка

  1. Visual Studio Code — свободный редактор кода от Microsoft.
  2. IntelliJ IDEA Community — IDE для разраотки на Java, Groovy, Kotlin, Scala от JetBrains.
  3. PyCharm — IDE для разраотки на Python от JetBrains.
  4. GitKraken — графический интерфейс для Git от разработчика Sublime Text.

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

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

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

Игры

  1. Steam — клиент для скачивания и установки игр из Steam.
  2. Lutris — менеджер игр для Linux.

Другие

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

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

Вот подборка популярных и полезных репозиториев 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 будущее Linux написан на главной странице сайта проекта.

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

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

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

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

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

По-мимо каких-то мнимых претензий со стороны троллей и просто невежд, которые не понимают либо не хотят разбираться «а зачем оно нужно», есть реально задокументированные серьезные проблемы в области безопасности, ради обеспечения которой вроде и нужно использовать 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 (всего исправлений: 66)

Flatpak использует единый формат пакетов для всех дистрибутивов Linux.

Учитывая фрагментацию, в т.ч. Х11/вайланд, по сути свой дистрибутив нужно таскать с собой. И подходящее ядро с драйверами тоже, иначе универсальность не универсальна. А что если видеокарта без вулкана, а рантайм настроен эксклюзивно на него?

Flatpak изолирует приложения от основной системы, используя контейнеры.

Это уже само по себе проблема. Одно приложение в поле - не воин, там внутри контейнера нужно иметь большую часть системы.

Flatpak использует централизованное хранилище приложений, называемое Flathub.

Т.е. конкурирующая репа со своим собственным дистрибутивом? А кто за него отвечает? А что, теперь будущее это Единый Дистрибутив под контролем Единого Хаба? Вот ни разу не косяк.

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

Хорошо написанная, но довольно однобокая статья.

kirill_rrr ★★★★★
()

Общие рантаймы

Так изолированные с отдельной libjpeg для каждого приложения, или всё таки возвращаемся к классическому дистрибутиву с общим рантаймом?

которые содержат рантаймы, шарятся в RAM между приложениями

Так изоляция или шарятся?

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

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

Скаченные приложения хранятся на диске в /var/lib/flatpak/repo. Там структура, похожая на git, используется сжатие и тд. Это позволяет хранить множество версий тех же рантаймов

Конкурирующая ФС? Это здорово. Что тут может пойти не так?

Централизованное хранилище пакетов Flathub, где всегда доступны актуальные версии приложений.

А на какую глубину можно откатывать приложения? А то «актуальные» это сейчас синоним маразма и глюкодрома.

в то время как во Flathub приложения часто поддерживают их разработчики

Т.е. аудита от дистрибутива не предусмотрено? У нас свалка непроверенных васяноподелий?

Все пользовательские данные хранятся в одном месте: в директории ~/.var.

И это косяк, ведь конфигурации приложений должны быть едины с нормальными версиями.

Приложения, распространяемые через Flatpak, часто бывают преднастроенными.

Однозначный минус.

kirill_rrr ★★★★★
()

Да, вот абсолютно все причины делать флатпак и все решаемые им проблемы уже давно решаются lts-дистрибутивами с поддержкой в 10-15 лет. Когда на рынке было 3-4 крупных игрока с примерно одинаковыми версиями пакетов в lts-релизах - ну просто перепаковываешь .rpm от редхата и он запускается что в убунту, что в дебиане, что в мандриве. А репы убунту и дебиана вообще подключались друг к другу бесшовно. Как только стали гнать роллинг с самыми свежими багами - сразу всё начало разваливаться и требовать больших усилий по поддержке. Не адо поощрять обезьян хвататься за каждую новую фичу с 5% аппаратной подержкой и пихать её в завтрешний релиз просто чтобы у всех всё отвалилось.

kirill_rrr ★★★★★
()

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

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

не нужно использовать flatpak-версии IDE. Как писал уже выше для них критически важна интеграция с системой.

Для всего важна. И для браузера, и для офиса, для почтовика, для плеера и видеоредактора.

решает проблему «ада зависимостей» и обеспечивает стабильность работы приложений на различных дистрибутивах.

Притащив с собой свой собственный дистрибутив? Ну да. это определённо эффективное решение. Ну т.е. сложно придумать более костыльный способ обеспечить совместимость.

kirill_rrr ★★★★★
()

Для начала спасибо за хорошую статью.

Хотелось бы немного дополнить.

  1. Ещё одно преимущество флатпака перед снапом в том, что флатпак работает без системд, а снап прибит к нему гвоздями.

  2. Флатпак это конечно большой шаг вперёд, но назвать его будущим трудно из-за его же недостатков. Главные перечислены в статье - например то что он предназначен только для гуи-приложений (и то далеко не всех)

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

То есть то, что очень нужно и нужно уже очень давно - управление зависимостями - да, да, да! Приложение(или пакет) должно иметь право сказать, мне нужна именно эта версия(диапазон версий) библиотеки и это должно просто работать, как это работает во флатпаке. А если несколько приложений хотят одну версию библиотеки, то она должна ставиться только один раз. Это очевидно и это должно было быть сделано уже давно. Но разумеется, не через контейнеры!!! Это должна быть базовая функциональность системы (ld.so?).

Далее, управление доступом к сети и другим ресурсам - да, это полезно. Но опять же, это в Линуксе было бы неплохо сделать для начала по-линуксовски/юниксовски. То есть через права доступа пользователя/группы (/dev/inet?). И потом нужно добавить права для пакета/вендора. И уж потом на уровне приложений в контейнерах, это тоже хорошо и полезно, особенно контейнеризация полезна для всякой проприетарщины. Но это нужно и просто на уровне пользователей и пакетов, без контейнеров.

То есть эти возможности должны перекочевать из флатпака в обыкновенные менеджеры пакетов и в систему разграничения доступом самого Линукса. (К сожалению эта задача сложнее чем контейнеризация)

Далее, флатпак должнен, как и снап, предоставить возможность создания демонов. Ну и, конечно, утилит командной строки, а здесь контейниризация тоже лишняя.

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

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

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

Никто не мешает туда nginx засунуть, но зачем когда есть docker? Я там вроде написал, что консольные утилиты они простые и там проблем с зависимостями как таковых нет + опять же можно докером запустить. Docker не может заменить Flatpak тк он позволяет слишком многое и рассчитан на системных администраторов, которые понимают что делают, а не обычных пользователей. Но им можно запускать графические приложения, мало того есть проект distrobox, где ты можешь поставить, например, в контейнер с Arch Linux одно из 40.000 приложений из AUR, изолировав его от системы, и при этом сидеть на древнем Debian, который и обновить страшно, так как будут конлифкты обновлений

А если несколько приложений хотят одну версию библиотеки, то она должна ставиться только один раз. Это очевидно и это должно было быть сделано уже давно. Но разумеется, не через контейнеры!!! Это должна быть базовая функциональность системы (ld.so?).

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

но назвать его будущим трудно из-за его же недостатков

Это просто лозунг с главной сайта, который сложно спутать с постиронией

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

Для всего важна. И для браузера, и для офиса, для почтовика, для плеера и видеоредактора.

Нет. IDE такие как VS Code тупо запускает сторонние утилиты, а не старается охватить неохватываемое. Если ты хочешь вести разработку на Node.js 6.7 ты ее ставишь, ставишь все нужные либы, и IDE запускает все эти бинари чтобы отладку производить, код форматировать и проверять. Короче ты можешь поставить любую версию языка, утилит и тп… Когда IDE у тебя в контейнере, то все эти утилиты нужно в него доставлять, а Flatpak не дает такой возможности…

Для плеера нужен один из мультимедиа-фреймворк GStreamer, FFMpeg, PulseAudio — это не 100500 различных языков программирования и средств разработки. Там есть Sdk для разработки flatpak search Sdk, но их количество не растет, а уменьшается, так как поддерживать их интересно только тем, кто их использует сам

Притащив с собой свой собственный дистрибутив?

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

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

есть проект distrobox

Вот! Есть флатпак на максималках!

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

Как раз для Node.js важно иметь изолированную 6.7 рядом с 6.5 и 5.8 или 7.0найтли и казалось бы, контейнерный пакетник должен этот вопрос решить...

А всяким браузерам (особенно), плеерам, медиаконвертерам и редакторам тоже нужно запускать другие приложения. Я уж не говорю про ДЕ - вот вообще зашквар изолировать ДЕ во флатпак, но 2 весьма крупных дистрибутива натянули сову на глобус.

В нем внутри нет системды и пакетного менеджера

А udisks, udev, polkit, 100500 ненужных процессов gvfs/dconf или k-фреймворка? Половина из них прибиты к логинду/системд и кто то должен был их перенастроить чтобы что то работало. Ну и все нужные библиотеки, примерно 80% от всей системы если исключить инит.

Или вот хотя бы проблема QT5-приложений у которых разваливается интерфейс если не прописать переменные окружения на нужную систему поднятия тем и иконок. Как это реализовано и насколько оно берёт неправильные настройки?

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

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

Ох лол.

Есть, если рафинировать и максимально разделить в теории:

  1. Среда разработки, она везде организуется по принципам около юникс-вея. Суть - это изменяемая разработчиком среда, изменяемая прямо во время работы. Это базовое ее свойство.

  2. Среда пользователя. Это некая противоположность, она НЕ изменяемая пользователем, она должна существовать ровно в том виде, в котором это задумано и протестировано разработчиком и НЕ уметь ломаться путем изменения.

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

Затем, возникло два подхода на базе контейнеризации:

  1. Делать изолированный контейнер, в котором ты можешь изменять и воротить что хочешь независимо от системы (Docker).

  2. Делать изолированный контейнер, в котором ты ничего менять не можешь, а изменения в системе на него не влияют, потому что он изолирован. (Flatpak)

Две противоположности, во многом они похожи (по законам диалектики). Но - первая для разработчиков, вторая - для пользователей.

Если вы поддерживаете в целом такую работу как таковую, то надо, технически - разработку вести в докере, с IDE работать в докере, с платформами которые сами что-то качают и запускают, типа стима - работать вообще без контейнеров, а с чисто пользовательскими приложениями работать из Flatpak.

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

Поэтому, например, есть Nix - он один решает обе задачи, в рамках одной концепции. Но и он далеко не является панацеей, там есть свои темные места.

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

Red Hat и systemd создал.

Это только сильнее все проясняет

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

перенос проектов на другой сервер

Бинарник статически откомпилируй и все

HTML/CSS и JS

У меня KDE и у меня нет ни одной технологии, работающей на этом тормознутом дерьме (иначе бы все тормозило, лол)

Systemd: разработан Red Hat, а та как-то связана с Microsoft

Поттеринг (главразраб systemd) буквально сотрудник Microsoft

Rust

Он зависимости из интернета берет, лол.

Parthen ★★
()
Последнее исправление: Parthen (всего исправлений: 1)

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

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

Flatpak использует централизованное хранилище приложений, называемое Flathub.

Не верно. Использует централизованные хранилища, например Flathub.

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

Пока что от этих достоинств как-то больше недостатков. Например, поставил 2 или 3 мелких программы из разных источников, или у которых разные рантаймы, и в результате скачал условно три почти полноценых операционки для трёх маленьких программ.

sudo yum install flatpak

Долго ещё это будет продолжаться?

$ file /usr/bin/yum
/usr/bin/yum: symbolic link to dnf-3

Спасибо за статью.

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

Вон фряха как-то обходилась же всю дорогу без контейнера

Во фряхе, просто есть 1) базовая система, отдельная от пакетов 2) поддерживается несколько версий этой базовой системы одновременно.

То есть, если использовать пакеты, то они собраны в репах сразу под несколько версий фряхи, параллельно. Если использовать порты, то они собираются на любой базе, так же как и в source-based linux, но это другое.

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

Ох лол.

Там можно примонтировать что угодно и куда угодно. Что ты далеее там пишешь не имеет смысла. Nix - это не кроссплатформенный формат дистрибуции приложений [2].

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

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

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

Там дальше написано почему KDE - это HTML/JS/CSS.

работающей на этом тормознутом дерьме

Сразу видно, что достойная смена Столярову растет.

Поттеринг (главразраб systemd) буквально сотрудник Microsoft

Кроме поттеринга разработкой занимаются только сотрудники Red Hat:

Где-то там он телеметрию встроил ищи:

Ах, да, надевая шапочку из фольги, Github же принадлежит Microsoft, и тот может скрывать такие коммиты и строчки кода из выдачи.

Он зависимости из интернета берет, лол.

И потом при конПеляции их все в бинарь пихает, «лол»? C++ то же через Conan зависимости из интернета берет как и Python, Node.js и все что угодно, «лол»? Что хотел то этим сказать?

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

Мне казалось там система отдельно, а порты отдельно, совсем не как в линукс, где устаревший какой-нибудь glibc отправляет лесом все начинания.

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

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

James_Holden ★★★★
()
Ответ на: комментарий от papin-aziat

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

James_Holden ★★★★
()
Ответ на: комментарий от papin-aziat

Долго ещё это будет продолжаться?

https://flatpak.org/setup/Red%20Hat%20Enterprise%20Linux

А что не так? Там, наверное, репозиторий надо прописать


и в результате скачал условно три почти полноценых операционки

Там нет никаких операционок. Там кастрированная DE используется чтобы запустить QT или GTK приложение, и естественно миллион их версий не нужно, хватит одной. Там с драйверами только проблемы могут быть, потому как невидия что-то часто ломает как со знаменитой версией драйвера 510.

total_size.py

import re
import sys


def convert_to_bytes(value, unit):
    if unit == "kB":
        return value * 1024
    if unit == "MB":
        return value * 1024 * 1024
    if unit == "GB":
        return value * 1024 * 1024 * 1024
    return value


if __name__ == "__main__":
    lines = list(sys.stdin)
    sum_bytes = 0

    for line in lines:
        value, unit = line.split()
        value = float(value)
        bytes_value = convert_to_bytes(value, unit)
        sum_bytes += bytes_value

    total_gb = sum_bytes / (1024 * 1024 * 1024)
    total_mb = sum_bytes / (1024 * 1024)

    print(f"Total in bytes: {sum_bytes}")
    print(f"Total in GB: {total_gb:.2f}")
    print(f"Total in MB: {total_mb:.2f}")

~/workspace/hacking   
(.venv) ❯ flatpak list --columns=size | tail +1 | python ./total_size.py
Found existing global alias for "| tail". You should use: "T"
Total in bytes: 17951463833.600002
Total in GB: 16.72
Total in MB: 17119.85
                                                                                                  
~/workspace/hacking   
(.venv) ❯ sudo du -sh /var/lib/flatpak/repo 
13G     /var/lib/flatpak/repo

~/workspace/hacking   
(.venv) ❯ sudo compsize /var/lib/flatpak/repo
Processed 126335 files, 125341 regular extents (125341 refs), 66932 inline.
Type       Perc     Disk Usage   Uncompressed Referenced  
TOTAL       51%      6.3G          12G          12G       
none       100%      3.3G         3.3G         3.3G       
zstd        33%      3.0G         8.9G         8.9G 

Итого: почти имеем почти 17 гигов приложений, путем сложения размера каждой установленной версии, эти 17 превращаются в 13 благодаря OSTree, но на диске они занимают всего 12 гигов ой 6 гигов, мне голову забили, благодаря сжатию Btrfs

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

plasma/widget/

Как и сказал, не пользуюсь

Кроме поттеринга разработкой занимаются только сотрудники Red Hat:

И Поттеринг там главный

Где-то там он телеметрию встроил ищи:

В миллионах строк? Обойдлусь

C++ то же через Conan зависимости из интернета берет

В первый раз слышу об этой фигне, gcc ничего не пихает

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

Как и сказал, не пользуюсь

🤣🤣🤣 это твой рабочий стол и другие элементы интерфейса такие как всякие всплывающие окна. У тебя какой-то KDE особый, не такой как все. Ясно, понятно.

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

Там /var/lib/flatpak надо мерять, а не repo, но получится примерно тоже самое

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

это твой рабочий стол

Не пользуюсь, как уже говорил

другие элементы интерфейса такие как всякие всплывающие окна

Давай пруфы что ли

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

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

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

А что не так? Там, наверное, репозиторий надо прописать

Репу не надо. YUM уже давно исчез, писать надо dnf install…

миллион их версий не нужно, хватит одной

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

papin-aziat ★★★★★
()

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

Что?

$ ldd /bin/ls

        linux-vdso.so.1 (0x00007f8655b81000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f8655943000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f8655b83000)

Даже самая простая утилита будет иметь зависимость как минимум на libc.

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

Что?

Откуда эти штампы? Вроде ж не 90-ые, и даже не 2000-ые.

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

ЧТО?

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)

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

Зависимости позволяют сократить размер дистрибутива. Что кажется незначительным для десктопа, но может играть существенную роль когда речь заходит об embedded, контейнерах, и др. Хотя и для десктопа, я до сих пор не могу смириться с сотнями мегабайт, которые занимают некоторые программы Windows при скачивании.

Но это не главное.

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

Суть Flatpak не в дистрибуции, а в том, что это контейнер, то есть огороженное приложение. Его основной сценарий использования - там, где повышенное требование к безопасности. При этом в отличии от, скажем, Docker, Flatpak - это приложение c пользовательским интерфейсом (умеет в GUI); Docker так не умеет. У нас, например, есть сценарий когда на сервера, на которых работают сервисы нужно приносить некоторые вспомогательные утилиты для обслуживание этих самых сервисов. Естественно, заказчики очень трепетно относятся к серверам, и не позволяют ничего лишнего устанавливать. Но Flatpack, можно. Еще Flatpak используют параноики, чтобы запускать что-то вроде skype и гарантироваться что он не просканирует и не отошлёт Микрософту пол файловой системы. То есть это ближе у к упрощению SELinux/AppArmor.

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

Читать научись там все написано. И про glibc тоже

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

Откуда эти штампы? Вроде ж не 90-ые, и даже не 2000-ые.

Запусти компиляцию хромиума, а он не один жирный такой.

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

Покажи где об этом не написано

Еще Flatpak используют параноики, чтобы запускать что-то вроде skype и гарантироваться что он не просканирует и не отошлёт Микрософту пол файловой системы. То есть это ближе у к упрощению SELinux/AppArmor.

Про это тоже написано. Ты дальше первого и последнего абзацев не читал

А так у тебя теж самые выводы.

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

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

Нет. Ты обновишь рантайм (рантаймы шарятся — это никак статические сборки) и не весь, а только эту либу в нем, сошку, те если рантайм 1000 MiB, то может 1 MiB скачать придется. Там как в гит… Ну или как в докер. Тот тоже частично обновляется. Короче, мне надоело уже совсем какие-то глупости комментировать, причем про это вроде написано.

Но зато можно сделать вывод, что все противники Flatpak им не пользовались только потому что очень слабо технологически подкованы. Если простым смертным - это простительно… Хотя я не знаю как объяснить преимущества Flatpak людям, которые совсем не бум-бум. Какие-нибудь пользователи Linux Mint сами на Flatpak переползают из-за нелюбви к Snap, но все же они не понимают преимуществ Flatpak… Хотя им и хватит аргумента, что так можно продлить ресурс SSD, но до этого они высрут кирпичей в первый раз скачав рантайм, а потом видя в выводе сколько рантайм занимает будут думать, что это физический его размер, хотя на диске места всегда меньше нужно. Я про это написал, но этож буквы читать надо, да и у меня тексты часто поток мыслей, когда пишу одно, а думаю о другом, параллельно слушая историю Древнего Рима

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

Запусти компиляцию хромиума, а он не один жирный такой.

Из там 5-7, не более. И теперь это глобальная проблема?

Покажи где об этом не написано

https://en.wikipedia.org/wiki/Flatpak

It is advertised as offering a sandbox environment in which users can run application software in isolation from the rest of the system

https://flatpak.org/faq/

Flatpak builds upon existing technologies such as cgroups, namespaces, bind mounts and seccomp in the Linux kernel, OSTree from Project Atomic and the OCI format that is developed by the Open Container Initiative.

Что такое контейнеры и зачем они нужны объяснять нужно?

То, что оно тянет с собой зависимости - это скорее следствие, побочный эффект, и не факт что хороший.

Про это тоже написано. Ты дальше первого и последнего абзацев не читал

Как и обольшинство: welcome to the real world. Поэтому нужно главное писать в первом и последнем обзаце. Это настолько базово, что тех, кто это не освоил, даже не пускают учиться в Англию и некоторые другие страны (и это не шутка).

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

У тебя в тексте есть две большие проблемы.

  1. Ты позиционируешь Flatpak как будущее Линукс. Тебе я (не только я) пытаются объяснить, что это не будущее Линукс, а всего лишь технология, которая имеет ограниченную сферу применения.

  2. Ты основным плюсом Flatpak считаешь то, что он позволяет не тянуть зависимости. Я пытаюсь тебе объяснить, что это не основная цель Flatpak. Основная цель - изояция, песочница, контейнер, безопасность. Не зная цели не поймёшь как применять.

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)

Статья хорошая, одобряю.

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

Ты позиционируешь Flatpak как будущее Линукс

Это на главной сайта флэтпака написано 🤦🏼‍♀️. Я даже там сноску делал, я даже там ссылку на сайт проекта разместил…

а всего лишь технология, которая имеет ограниченную сферу применения

дистрибуции… для чего и была придумана

Ты основным плюсом Flatpak считаешь то, что он позволяет не тянуть зависимости… Основная цель - изояция, песочница, контейнер, безопасность.

Основная его цель дистрибуция. В преимуществах все написано… Напиши что-нибудь новое я допишу.

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

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

Кратко: никакие, как и Wayland, только свои и добавляет.

MrSugoma
()
Ответ на: комментарий от Kroz

Ты излагаешь ряд довольно очевидных заблуждений.

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

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

Главное во Flatpak это именно распространение.

То что там ещё и изоляция - это просто следствие выбранного метода решения проблем с зависимостями. Побочный эффект.

Сама эта изоляция нахрен никому не нужна, она только мешает. Линукс это свободная ОС и ограничивать тут ничего не надо. Вам просто повесили ведро лапши на уши.

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

Не говоря уже о том, что у флатпака эту защиту обеспечивает bubblewrap, который является отдельным приложением контейнеризации и может работать вне всякого флатпака, например в NixOS он широко используется для создания FHS окружений.

То есть, если бы надо была только изоляция - просто использовался бы bubblewrap, а не весь флатпак.

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

На пальцах - есть bubblewrap, это часть проекта Flatpak, но давно отделился как независтмая утилита.

Он позволяет запустить любое приложение, установленное как угодно, например через apt из deb пакета в систему, в такой же изоляции от хомяка как это обеспечивает Flatpak. Только без флатпака как средства дистрибуции.

А теперь шевелим мозгами - если бы Flatpak нужен был только для этого, то никто не ставил бы флатпак, а просто использовали бы bubblewrap, который даёт то де самое для приложений из репов дистра.

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

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

Никто не мешает туда nginx засунуть, но зачем когда есть docker?

Ты хотел сказать снап? Снап умеет работать не только с гуи. Докер это всё же немного другое. Впрочем любое решение на основе контейнеров это перебор.

Я там вроде написал, что консольные утилиты они простые и там проблем с зависимостями как таковых нет.

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

А если несколько приложений хотят одну версию библиотеки, то она должна ставиться только один раз. Это очевидно и это должно было быть сделано уже давно. Но разумеется, не через контейнеры!!! Это должна быть базовая функциональность системы (ld.so?).

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

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

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

А чем плох Андроид? Нет рута, нет вирусов и даже не посмотреть, что лежит в каталоге приложения, те и вирус не увидит. Это ж прекрасно…

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

Wayland

Хакеры и солонки.

Systemd

Средство vendor lock-in.

Btrfs

Oracle не может ни во что, кроме Oracle DB.

Rust

Компилятор и стандарт языка, обновляющиеся раз в шесть недель. Серьезно? Синтаксис делали максимально инопланетным, чтобы нормальные люди точно разобраться в коде не смогли.

любят Gnome хотя те по факту работают… на HTML/CSS и JS

Кроме трех с половиной ударенных об РедХат евангелистов, Гном в его нынешнем виде тут не любят.

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