Почему приложения Flatpak Занимают так много места на диске в Linux

Если вы начали использовать приложения Flatpak в своей системе Linux, то могли заметить, что они занимают удивительно много места на вашем жёстком диске. Почему приложения Flatpak занимают так много места на диске и больше по размеру по сравнению с традиционными пакетами?
Вы можете скачать небольшое приложение, но загрузка будет огромной. Или вы проверяете использование диска и видите, что Flatpak использует много гигабайт, гораздо больше, чем общий размер всех установленных вами приложений.
Что происходит?
Это распространённый вопрос, и он сводится к тому, как Flatpak решает серьёзную проблему для разработчиков и пользователей Linux.
Большая проблема, которую решает Flatpak
Традиционно заставить программное обеспечение корректно работать в разных версиях Linux было непросто. Как вы, возможно, уже знаете, приложения зависят от другого программного обеспечения, называемого «библиотеками» или «зависимостями».
Эти зависимости могут различаться в разных дистрибутивах Linux и даже в разных версиях одного и того же дистрибутива. Это может привести к проблемам, когда приложение не будет работать из-за отсутствия зависимости или её неправильной версии. Это явление получило название «ад зависимостей».
Flatpak был создан с революционной целью: позволить разработчикам создавать одно приложение и распространять его по всей экосистеме настольных компьютеров Linux.
Он был создан для работы в любой операционной системе Linux. Название «Flatpak» даже отсылает к плоским упаковкам IKEA, намекая на эффективность и новый подход к упаковке.
Решение: Объединение зависимостей
Чтобы достичь этой цели «собери один раз, запускай где угодно», Flatpak использует другой подход к зависимостям, чем традиционные менеджеры пакетов Linux (например, те, которые используют файлы .deb
или .rpm
).
Вместо того чтобы полагаться на зависимости, уже установленные в вашей системе, приложения Flatpak включают все необходимые зависимости прямо в пакет.
Это означает, что приложение поставляется со всем необходимым для работы, независимо от того, какой у вас дистрибутив Linux. Это гарантирует, что у приложения будут правильные версии зависимостей, обеспечивая единую среду как для разработчиков, так и для пользователей.
Разработчики получают полный контроль над зависимостями, а пользователи — прогрессивные приложения, совместимые с новыми версиями Linux.
В отличие от них, традиционные менеджеры пакетов пытаются установить в вашей системе только одну копию каждой зависимости, которая затем используется всеми приложениями, которым она нужна. Это экономит место, но может привести к проблемам с совместимостью.
Причина, по которой приложения Flatpak Используют огромное дисковое пространство
Объединение зависимостей — основная причина, по которой приложения Flatpak намного больше, чем их традиционные аналоги. Если двум разным приложениям Flatpak требуется одна и та же библиотека, каждое из них может иметь свою собственную копию этой библиотеки, если только она не является частью общей среды выполнения.
Например, предположим, что вы пытаетесь установить Kdenlive, видеоредактор. Само приложение может занимать всего около 40 МБ, но загрузка займёт 3 ГБ, потому что ему нужен большой набор сопутствующих программ, называемый «средой выполнения».
Другой примечательный пример — GIMP. Размер GIMP Flatpak составляет около 2 ГБ, в то время как альтернативный формат пакета (AppImage) занимает всего 500 МБ.
Как Flatpak пытается экономить место: время выполнения и дедупликация
Flatpak не просто многократно упаковывает всё подряд. Он использует продуманную систему для экономии места:
1. Время выполнения
Flatpak использует «среды выполнения», которые представляют собой общие наборы базовых библиотек. Приложения указывают, какая среда выполнения им нужна.
Например, многие приложения GNOME используют среду выполнения org.gnome.Platform
, а многие приложения KDE используют среду выполнения org.kde.Platform
.
Эти среды выполнения устанавливаются отдельно и могут использоваться несколькими приложениями, которым они требуются.
Даже разные среды выполнения частично пересекаются: среды выполнения GNOME и KDE основаны на базовой среде выполнения Freedesktop и используют её библиотеки.
2. Дедупликация
Flatpak использует технологию под названием OSTree, которая похожа на систему контроля версий Git. Эта система эффективно хранит файлы в центральном репозитории, а при установке приложения создаёт «жёсткие ссылки», которые указывают на файлы в репозитории.
Это означает, что один и тот же файл, принадлежащий нескольким приложениям или средам выполнения, сохраняется на диске только один раз. Система OSTree также повышает эффективность обновления и позволяет легко выполнять откат.
Благодаря среде выполнения и дедупликации установка второго или третьего приложения Flatpak, использующего ту же среду выполнения, что и у вас, как правило, потребует гораздо меньшей загрузки и использования меньшего дополнительного дискового пространства, чем при установке первого приложения.
Если вам интересно узнать больше, в этом источнике приведены примеры, демонстрирующие значительный обмен файлами (дедупликацию) между различными версиями среды выполнения или между базовыми и производными средами выполнения.
Почему дисковое пространство все еще увеличивается (и может выглядеть сбивающим с толку)
Несмотря на методы экономии места, Flatpak по-прежнему часто занимает больше места на диске, чем традиционные пакеты. Вот почему:
- Приложения по-прежнему объединяют зависимости, не включенные во время выполнения.
- В конечном итоге со временем может быть установлено несколько версий сред выполнения.
- То, как Flatpak хранит данные во внутреннем хранилище, в сочетании с тем, как стандартные инструменты, такие как
du
подсчитывают жёсткие ссылки, может привести к тому, что заявленное использование памяти будет выглядеть больше, чем на самом деле, с точки зрения уникальных блоков данных. - Размер начальной загрузки и использование дискового пространства могут быть очень большими, если у вас ещё не установлены необходимые среды выполнения.
- Для обновлений также может потребоваться загрузка больших объёмов данных, если необходимо обновить среду выполнения.
Стоит ли Flatpak Того?
Большой размер приложений Flatpak вызывает серьёзную озабоченность, особенно у пользователей с ограниченным дисковым пространством (например, с небольшими твердотельными накопителями) или медленным или лимитированным подключением к интернету. В некоторых случаях объём памяти, используемый Flatpak, может превышать объём всей операционной системы для нескольких приложений.
Но я (как и многие пользователи) считаю, что это того стоит. Flatpak предоставляет надёжный способ получать более новые версии программного обеспечения, решает проблемы с распространением, с которыми сталкивались разработчики, и предлагает песочницу для запуска приложений в изолированной среде в целях безопасности.
Flatpak не подходит для серверов, потому что он использует функции настольных компьютеров.
Часто задаваемые вопросы (FAQ)
Вопрос: Почему приложения Flatpak такие большие по размеру по сравнению с традиционными пакетами?
Ответ: Приложения Flatpak предназначены для объединения всех своих зависимостей.
Это означает, что программное обеспечение, необходимое для работы приложения, включено в сам пакет Flatpak, а не зависит от общих библиотек, установленных в вашей системе. Вот почему приложения Flatpak такие большие.
Вопрос: Используют ли приложения Flatpak совместно какие-либо файлы или зависимости для экономии места?
Ответ: Да, Flatpak использует среды выполнения, которые представляют собой наборы общих библиотек, от которых могут зависеть приложения. Когда несколько приложений Flatpak используют одну и ту же среду выполнения, они совместно используют эту среду.
Кроме того, Flatpak использует технологию OSTree, аналогичную Git, для управления версиями и распространения деревьев файловых систем. OSTree позволяет удалять дубликаты файлов, поэтому один и тот же файл, используемый несколькими приложениями или средами выполнения, хранится на диске только один раз.
Вопрос: Значительно ли больше первоначальных загрузок и обновлений с Flatpak?
Ответ: Да, размер загружаемых файлов может быть очень большим при использовании Flatpak, особенно для первых нескольких приложений, которые вы устанавливаете, или если приложению требуется среда выполнения, которой у вас ещё нет. Это связано с тем, что вам может потребоваться загрузить полную среду выполнения, которая может быть довольно большой.
Обновления также могут потребовать загрузки значительных объёмов данных, если у приложения или зависящих от него сред выполнения есть новые версии.
Вопрос: учитывая большие размеры, подходит ли Flatpak пользователям с ограниченным дисковым пространством или медленным интернетом?
Ответ: Может быть, и нет.
Увеличение объёма дискового пространства и потенциально большие объёмы первоначальных загрузок или обновлений вызывают серьёзные опасения, особенно у пользователей с ограниченным дисковым пространством, например, с небольшими твердотельными накопителями, или у тех, у кого медленное или лимитированное подключение к интернету.
Для таких пользователей предпочтительнее использовать традиционные менеджеры пакетов, которые используют общие системные библиотеки, если программное обеспечение доступно.
Заключение
Приложения Flatpak занимают больше места на диске в основном из-за того, что они объединяют зависимости, чтобы обеспечить стабильную работу в разных дистрибутивах Linux.
Хотя среда выполнения и дедупликация помогают уменьшить это влияние, общий объём используемого пространства всё равно может быть значительным, что является недостатком для пользователей с ограниченными ресурсами.
Но у этого расширения есть и значительные преимущества, такие как упрощённое распространение приложений и песочница.
Flatpak — это другой подход к упаковке программного обеспечения, со своим набором преимуществ и недостатков. Вам решать, хотите ли вы использовать приложения Flatpak.