Что такое flatpack linux
🐧 Как установить и использовать Flatpak на Linux
Введение в Flatpak
Существует так много дистрибутивов Linux, и упаковочные приложения для всех этих дистрибутивов Linux являются довольно трудоемкой и сложной задачей.
Несмотря на то, что существует множество конвертеров пакетов, все они имеют ограниченную функциональность и проблемы совместимости.
Чтобы решить эту проблему, Canonical представила формат пакетов приложений Snap.
Снапсы изначально разрабатывались для операционной системы Ubuntu, но теперь они приняты в основных дистрибутивах Linux, включая Arch, Gentoo, Fedora, openSUSE и т. д.
Snap – это единый двоичный пакет, объединенный со всеми необходимыми библиотеками и зависимостями. Вы можете установить его в любом дистрибутиве Linux, независимо от его версии и архитектуры. Не нужно разрабатывать отдельное приложение для каждого дистрибутива!
Подобно Snap, есть еще один инструмент форматирования пакетов приложений, называемый Flatpak.
Первоначально он разработан Red Hat.
Flatpak – это система для создания, установки и запуска приложений и сред выполнения в различных дистрибутивах Linux.
Теперь вы можете создать одно приложение Flatpak и установить его в разных версиях Linux.
Вам не нужно беспокоиться о библиотеках и зависимостях, все объединено в одном приложении.
Еще одна примечательная особенность – мы можем установить несколько версий одного и того же приложения одновременно в системе Linux.
Например, можно установить проигрыватель VLC версий 2.1, 2.2 и 2.3 в той же системе.
Если вы разработчик, вы можете тестировать разные версии приложения одновременно.
Как установить Flatpak
Насколько бы пакетные менеджеры Linux не были бы удобными, они имеют как преимущества, так и недостатки. Зависимости пакетов, это сильная сторона Linux пока вы не попытаетесь установить старый пакет или пакет из другого дистрибутива. Небольшая ошибка создателей пакета в настройке зависимостей приведет к тому что вам придется потратить уйму времени на то, чтобы во всём разобраться и исправить.
Чтобы решить эту проблему был придуман универсальный формат пакетов flatpak. Все зависимости программы уже находятся в самом пакете, именно такие, какие надо и их не нужно устанавливать отдельно. Поэтому пакеты flatpak могут быть установлены в любом дистрибутиве. В этой статье мы рассмотрим как установить flatpak в Linux, а также как пользоваться этой программой для установки пакетов.
Особенности Flatpak
Примерно в то же время, что и Flatpak, появился менеджер пакетов snap. По своей сути Flatpak очень похож на snap. Здесь тоже все зависимости находятся внутри установочного пакета, программе внутри пакета разрешен доступ только к тем, ресурсам, которые ей нужны. Но в отличие от snap, flatpak более децентрализован. Никто не контролирует какие репозитории вы создаёте и что в них распространяете. Вы можете создать свой репозиторий, вроде PPA и распространять там свое программное обеспечение. В то же время как для того чтобы попасть в Snap Store надо получить разрешение от Canonical.
Установка Flatpak в Linux
В таких системах, как Fedora пакетный менеджер Flatpak уже поставляется по умолчанию. Но если вы захотите использовать программу в Ubuntu, Debian или в Linux Mint, то вам понадобится её установить:
sudo apt install flatpak
Если в репозиториях вашего дистрибутива нет пакета Flatpak, вы можете установить его из PPA:
sudo add-apt-repository ppa:alexlarsson/flatpak
sudo apt update
sudo apt install flatpak
Если всё же вам надо установить flatpak в дистрибутиве, основанном на Red Hat Enterprice Linux, выполните:
sudo yum install flatpak
Для OpenSUSE команда не сильно отличается:
sudo zypper install flatpak
Да и для ArchLinux тоже:
После установки вы можете пользоваться flatpak из командной строки. Чуть ниже мы рассмотрим как это делать, но для удобства можно добавить поддержку flatpak в центр приложений. Для этого в Ubuntu достаточно установить такой пакет:
sudo apt install gnome-software-plugin-flatpak
Как пользоваться Flatpak
1. Поиск программ на FlatHub
Несмотря на то, что Flatpak децентрализованный, большинство самых популярных пакетов вы можете найти на сайте FlatHub. Просто выберите нужную программу из списка:
Откройте её страницу и нажмите кнопку Install для установки программы с помощью центра приложений:
Кроме того, внизу страницы есть инструкция как установить программу с помощью терминала:
2. Добавление репозиториев
$ flatpak remote-add имя_репозитория ссылка_на_репозиторий
Например, для FlatHub выполните:
Кроме того, существует ещё несколько репозиториев, например, репозиторий программ Gnome:
Репозиторий программ KDE:
Другие репозитории вы можете найти в интернете. Посмотреть все добавленные репозитории можно выполнив:
3. Поиск по репозиториям
Вы можете посмотреть все пакеты, которые есть в репозитории. Для этого выполните команду remote-ls и передайте ей имя репозитория:
flatpak remote-ls flathub
Ещё можно искать нужный пакет по имени, для этого используйте:
$ flatpak search имя_пакета
flatpak search pidgin
Для установки программы вам понадобиться имя пакета программы из колонки Application ID и имя репозитория из колонки Remotes.
4. Установка пакетов
Для установки пакета flatpak используйте такую команду:
$ flatpack install имя_репозитория имя_пакета
Например, давайте установим тот же Pidgin, найденный предыдущей командой:
flatpak install flathub im.pidgin.Pidgin
Если вы не хотите добавлять репозиторий в систему, вы можете установить программу по ссылке из сети. Просто скопируйте ссылку на файл flatpakref и передайте её программе:
Если вы уже скачали файл flatpakref, его тоже можно установить.
Посмотреть все установленные программы можно выполнив команду:
5. Запуск программ Flatpak
Программы, установленные с помощью flatpak можно запустить из главного меню. Однако если вы захотите запустить их с помощью терминала. Надо использовать команду flatpak:
flatpak run im.pidgin.Pidgin
6. Удаление программ
Для удаления программы используйте такую команду:
$ flatpak uninstall имя_программы
Например, для Pidgin:
flatpak uninstall im.pidgin.Pidgin
После удаления пакета можно удалить неиспользуемые компоненты, чтобы освободить место на диске:
7. Обновление программ
Как и в любом другом пакетном менеджере, здесь можно обновлять установленные программы до самой новой версии. Для этого выполните:
Иногда устанавливаемые пакеты требуют более новые версии компонентов и поэтому не хотят устанавливаться. Если вы сталкиваетесь с такой ошибкой, просто обновите все пакеты.
Выводы
В этой небольшой статье мы рассмотрели как установить Flatpak, а также как пользоваться этой системой. Как видите, здесь всё немного сложнее по сравнению со snap, зато тут больше свободы. А что вам больше нравится snap или flatpak? Напишите в комментариях!
snap & flatpack — трагедия общин
Лонгрид варнинг: вас предупредили, много букв.
Уже давно ведётся разработка формата дистрибуции приложений, которые были «свободны» от общесистемных зависимостей. Ubuntu очень, очень активно продвигает свой snap, gnome — flatpack. Оба обещают рай и свободу от rpm/deb. Давайте же подумаем про проблему, которую они хотят решить, и цену, которую они просят за решение этой проблемы.
Библиотеки
Никто в современном мире не может написать приложение, не используя чужого кода. Причин несколько:
Ключевым же является то, что если даже функционал одиночной библиотеки мы можем «из принципа» писать сами, то общее количество нужных функций (и зависимостей) даёт чуть ли не экспоненциальный рост числа задач, которые надо решить, отодвигая время начала работы над кодом самой программы в недостижимую даль.
Пример для осознания масштаба драмы: допустим, ваше приложение принимает на вход две строки как опциональные аргументы и выводит их вместе, после нормализации. Если вы пишете индустриальное приложение (приложение, которое похоже на «настоящее»), то:
Понятно, что такая сложность для задачи «двух строк» это грубый overengineering, но как только вы начинаете делать что-то больше, идея «всё сам(а)» начинает выходить за пределы обозримого и реализуемого.
Как вы думаете, сколько библиотек нужно, чтобы гарантированно отработать curl http(s)://. Много. Вы будете использовать одну, но зависимости ваших зависимостей — это ваши зависимости.
Copypaste & vendoring VS dynamic linking
При том, что использование библиотек неизбежно, само использование может различаться по реализации. Обратите внимание, у нас появилось два важных слова «использование» и «реализация использования». Что значит «использование»? В самом грубом виде — возможность вызвать код библиотеки, когда это нужно. А вот реализации этого:
В чём же различие между этими методами? Я кратко приведу аргументы, они кратно обсуждались в множестве статей. Каждый из этих аргументов остаётся валидным несмотря на наличие соседних контраргументов:
Все эти вопросы многократно разбирались ранее. Вместо этого я хочу сфокусироваться на социальных аспектах водораздела «всё своё» и «всё общее».
Социальный контракт и власть мейнтейнеров
Общие библиотеки — это кооперация, власть и ответственность. Люди, определяющие какие общие библиотеки доступны в операционной системе диктуют производителям ПО, какие общие библиотеки они могут использовать. Многое ПО может использовать разные библиотеки, и указание на то, какую точно версию нужно использовать остаётся на усмотрение линкера (для компилируемых языков) или обработчика файла зависимостей (pip, bundler, etc). Если все приложения в дистрибутиве собраны с одинаковыми требованиями, то наступает благодать: если в какой-то библиотеке есть ошибка, мейнтейнер этой библиотеки обновляет версию, и исправление автоматически применяется ко всем приложениям. Даже если приложение релизится раз в два года, фикс в условном openssl будет применён в течение недели. Если в конкретной ОС принято решение об отказе от старого протокола, каких-то модификациях (например, интерфейса пользователя), то эти изменения так же применятся для всех. Look&feel в общем стиле, который (быть может) может быть изменён пользователем один раз и для всех. Это ли не благодать?
Власть и борьба за неё
… Эта благодать требует, чтобы все приложения могли работать с выбранной версией библиотеки. А что, если какое-то приложение хочет очень-очень новую функцию из библиотеки, а все остальные приложения не хотят его использовать, потому что это, допустим, не LTS-релиз библиотеки, т.е. она не достаточно стабильна? А ведь дистрибутив может отказываться переходить на новые версии «из принципа», ибо мы обещали пользователям только багфиксы, а новые версии — только в следующей версии ОС, которая (вроде бы), выйдет через пол-года. И это вызывает сопротивление со стороны авторов приложения. Да кто вы такие, чтобы мне рассказывать с какими версиями мне работать? Я автор, я так вижу. Мне нужна libfoobar 3.14-pre2 или новее, а не ваша древняя унылая libfoobar 3.10.
Если автору очень нужно, чтобы пользователи пользовались новой версией (например, потому что автор не хочет поддерживать старую версию), то он ищет обходные пути для отправки приложения пользователю.
То же самое происходит в ситуации, когда есть несколько дистрибутивов, некоторые новее, некоторые старее. Поддерживать более старые дистрибутивы, тестировать с разными библиотеками — это сложно. Так что вариант «отгрузить со своими библиотеками» возникает почти сразу же.
Трагедия общин
Это создаёт предпосылки для возникновения трагедии общин:
При этом, чем больше приложений идут со своими библиотеками, тем меньше польза от системных библиотек. Помните про «благодать»? Чем менее она «всеобщая», тем меньше она благодать. Если общая библиотека используется 5 разными приложениями из 995 других, то польза этой библиотеки — 0.5%. Обидно, да. Причём, это задевает всех пользователей, даже тех, кто, в принципе, не имеет острой потребности в новой фиче — но если приложение доступно только в вендоринговом виде, то у пользователя нет вариантов.
Получается, у нас есть глобальный экстремум: все приложения используют только общие библиотеки (максимум общей благодати, неудобства у авторов отдельных приложений) или «каждый сам по себе» (толстенный дистрибутив, с кучей приложений у которых могут быть незамеченные, но широко используемые уязвимости, жрущий кучу памяти, но автором каждого приложения удобно).
Вот именно тут мы и приходим к спору rpm/deb VS snap/flatpack
Свобода или рабство?
Ubuntu очень, очень сильно ратует за snap’ы. GNOME уверен, что будущее за flatpack’ами. Каждый из них — это фреймворк для глубоко индивидуалистических приложений. Всякие electron’ы, у которых с собой не только подкапотный браузер, но и подкапотная операционная система. Свой libc, свой libssl, свои регэкспы, свои ncurses, etc. Общим выступает только ядро, т.е. по сути это то же контейнеризированное приложение, но для десктопа. Дай каждому своё ядро, и получится appliance в форме виртуалки. Допишите метаданные — и получится контейнер Docker’а.
Индивидуализм приложений (авторов приложений) понятен, но кто тогда выступает за общее благо? Локальное крупное улучшение компенсируется незначительным общим ухудшением дистрибутива помноженным на число приложений. Если все делают себе локальные улучшения, то сумма ухудшений становится больше выгоды от суммы улучшений.
Казалось бы, в этом месте создатели дистрибутивов должны выступать в качестве хранителей общего интереса. Однако.
Политика
Ubuntu зависит от Debian куда больше, чем хотелось бы Canonical (компания, выпускающая Ubuntu). Ценность Ubuntu — не в усилиях мейнтейнеров Ubuntu, а в огромном репозитории ПО, идущем из Debian в форме, когда все приложения хорошо работают друг с другом усилиями тысяч мейнтейнеров отдельных пакетов, являющихся «владельцами» дистрибутива Debian. Canonical добавляет поверх этого свои усилия по полировке результата — и за это любима некоторыми. Добавим чуть-чуть маркетинга и фиксированный lifecycle, который по нраву энтерпрайзу, и получается отличный продукт.
… Который зависит от воли тысяч добровольцев где-то там.
Что совершенно не устраивает почти любую коммерческую компанию. Как разорвать эту зависимость? Правильно, сделав свой комплект приложений. Чем больше своих приложений, тем меньше «взбрыки» в апстриме будут задевать компанию. Достаточно вспомнить историю, когда голосование в Дебиан по поводу systemd похоронило upstart, разрабатывавшийся Canonical.
Но мейнтейнить несколько десятков тысяч приложений, некоторые из которых — свой космос (erlang, go, perl, python, R, julia, etc), а некоторые — монстры в соответствующей предметной области (браузеры, emacs, tex, pacemaker, etc) — это неподъёмная работа. Не зря это тысячи мейнтейнеров.
… И тут есть идея. А, пусть, авторы приложений сами мейнтейнят приложения. Выдадим каждому по песочнице, пусть копаются. Авторы получают свободу, Canonical — приложения, которые не зависят от Debian и которые хоть кто-то мейнтейнит бесплатно. Пользователи получают.
… приложения, которые жирные, тяжёлые, у которых обновления нерегулярные и которые с лёгкостью могут держать уязвимости неисправленными годами… Зато некоторые из них shiny new.
И что дальше?
Представьте себе мир, в котором все всё везут с собой… Знаете как это выглядит? Посмотрите на chefsdk. Он отгружает с собой внутри свою postgresql (со своими зависимостями), свой rabbitmq (который зависит от своего erlang’а), плюс chef-server тоже на erlang’е, так что у него тоже свой erlang. Внезапно, у нас внутри одного приложения два erlang’а и несколько десятков копий одних и тех же библиотек, чуть-чуть различающихся по версии. Это не финальный вариант, т.к. внутри между компонентами всё-таки есть общие библиотеки. Если мы их распилим дальше, то получится несколько десятков копий openssl и libc на одно приложение. Даже не в финальном виде это выглядит как 600Мб на одно приложение.
… Что, конечно, кратно больше, чем среднее приложение на electron.… И в 12 раз больше, чем целый mariadb сервер (целая СУБД!), или krita или gimp (огромные приложения для работы с графикой).
Если это превратится в 600Гб, то не трагедия ли это общин в чистом виде? В каждом взятом моменте мы наблюдаем локальную оптимизацию (и решение чьего-то неудобства), но вместе, сумма этих локальных оптимизаций снижает общую оптимальность системы. На мой взгляд, больше, чем локальный выигрыш каждого из участников.
Я понимаю, зачем Canonical пушит snap. Я это понимаю, и не одобряю.
Обзор Snap vs Flatpak vs AppImage
Чем отличается Snap vs Flatpak vs AppImage?
Как видите, в последнее время было создано очень много решений портативных программ Linux и пора разобраться что лучше и что все-таки использовать. В этой статье мы сравним snap vs flatpak vs appimage. Это самые популярные и известные технологии, хотя были и другие. Попытаемся выяснить у кого больше перспектив для развития, но сначала выясним, что представляет из себя каждая из этих технологий.
Что такое Snap?
Все файлы программы и ее зависимостей упаковываются в один файл, включая исполняемые файлы, файлы конфигурации и нужные библиотеки. В этом плане snap vs flatpack мало чем отличаются. Пакет устанавливается в отдельном каталоге, в домашней папке пользователя и программа может иметь доступ только к этому каталогу. Поэтому программа не может создать проблем в вашей системе, заменив важные файлы других пакетов.
На данный момент Snap пакеты работают кроме Ubuntu, на Arch, Debian и Fedora. Также выполняется подготовка образов для Red Hat, CentOS, Elementary, LinuxMint, Gentoo, OpenSUSE. Более подробно про управление Snap пакетами читайте здесь.
Что такое AppImage?
Про Appimage мы услышали еще в 2011 году, но тогда программа не набрала популярности несмотря на все ее плюсы по сравнению с традиционными системами упаковки программ.
Образ Appimage представляет из себя обычный ISO образ, в котором находятся все необходимые компоненты программы, при запуске он автоматически монтируется и выполняется программа. Поскольку для запуска не нужно никакого программного обеспечения в системе, эта технология может использоваться абсолютно в любом дистрибутиве. Хотя для запуска программы не требуются права root, тут уже нет такого уровня безопасности, программа может спокойно работать с файлами пользователя, как и другие обычные программы, а если каких-нибудь библиотек в образе недостает, программа загружает их из системы. Подробнее про AppImage читайте тут.
Для создания AppImage используется утилита appimagetool. Перед использованием инструмента вам необходимо скопировать все файлы и библиотеки, необходимые программе в специальную папку и сделать конфигурационный файл. Если делать сравнение Flatpak vs AppImage, то там все как-то более организовано и не нужно засорять свою систему.
Что такое Flatpak?
В отличие от Snap, Flatpak ориентирован больше на децентрализацию. Здесь нет одного центрального репозитория или контролирующего органа. Snap пакеты контролируются Canonical, и чтобы добавить свой пакет в репозиторий нужно подписать соглашение. Flatpak работает подобно тому, как PPA в Ubuntu. Вы находите репозиторий, подключаете в систему и можете устанавливать оттуда программы.
Flatpak можно использовать в большинстве дистрибутивов, так же как и Snap. Создавать Flatpack пакеты можно подобным образом, как и snap. Тоже нужно отредактировать файл конфигурации, правда тут все немного проще. Про установку и использование Flatpak читайте здесь.
Выводы
Мы рассмотрели Snap vs Flatpak vs AppImage. Уже сейчас можно, сказать, что AppImage отходит на задний план и гонка за лидерство происходит между Snap и Flatpak. Appimage предоставляет простоту запуска программ, но здесь нет таких важных возможностей, как безопасность, а без этого сейчас никуда. Flatpak разрабатывается командой Gnome, и у них интересная затея, но за Snap взялась компания Canonical, они будут использовать эту технологию не только для обычных компьютеров, но и для серверных решений. Что будет лучше и более удобно пользователям покажет время. А вы используете портативные приложения?
Как установить и использовать Flatpak в Linux
Linux добился больших успехов в области совместимости программного обеспечения. Точнее, установка программного обеспечения стала более единообразной в различных дистрибутивах и их собственных форматах пакетов. Но всё еще требуется сложная работа создателей пакетов. Им надо взять приложение и настроить его под конкретные требования разных дистрибутивов и даже разных их версий. Но появилось несколько новых универсальных форматов пакетов типа Flatpak, которые обещают: «упаковал однажды — работает везде» (во всяком случае, в Linux).
В сегодняшней статье мы рассмотрим Flatpak, узнаем, что это такое и как его использовать.
Режим работы Flatpak
Flatpak является и форматом пакета, и инструментом для установки и управления этими пакетами. Многие форматы пакетов Linux работают с концепцией зависимостей, означающей, что разработчик может определить, что пакет А зависит от пакета В. Когда пользователь пытается установить мой пакет А, система распознает зависимость и устанавливает пакет В вместе с ним. Так, apt install устанавливает одно приложение и получает сотни пакетов для загрузки и установки, Flatpak, напротив, предоставляет вам и приложение, и всё необходимое для работы в независимом от дистрибутива формате. У этого подхода есть свои плюсы и минусы:
Плюсы Flatpak
Минусы Flatpak
Но основная идея Flatpak привлекательна. Найдя программу, вы легко установите ее и запустите, не беспокоясь, что нечто иное в вашей системе использует несовместимую версию той же библиотеки.
Кроме того, установка приложений в виде Flatpak позволяет одновременно использовать и сопоставлять программы так, как это невозможно с обычной системой пакетов, например:
Несмотря на все эти разговоры о плюсах и минусах, вы можете одновременно использовать любой (или все!) из вышеуказанных форматов на своем компьютере. Это противоречит логике, не так ли? Как разработчики добились этого? Давайте рассмотрим формат Flatpak немного подробнее, чтобы выяснить это.
Становление Flatpak
Но запуск другой инициативы, возможно, более интересен. Проект WinePak использует Flatpak. чтобы облегчить установку программ Windows. Это достигается путем предоставления приложения и оптимизированной установки WINE в формате, который легко установить. Он обещает покончить со всей возней с настройкой, обычно сопровождающей установки в WINE. Хотя выбор на данный момент довольно мал, в нем уже есть несколько топовых игр, включая Overwatch, World of Warcraft и League of Legends. Конечно, установив их, вы можете в конечном итоге установить WINE в своей системе десятки раз. Но они в песочнице, а место на диске дешево, так что безумствуйте!
Анатомия Flatpak
Установка Flatpak создаст файловую структуру для программы и ее сред выполнения, а также некоторые метаданные. Базовая структура состоит из четырех каталогов верхнего уровня в $HOME/.local/share/flatpak или /var/lib/flatpak, в зависимости от того, была ли это системная или пользовательская установка.
Первым из них является repo, содержащий информацию об установленных и внешних приложениях и другие метаданные. Каталог арр — это место, где находятся сами приложения. У каждой программы есть подкаталог с именем, состоящим из трех частей (например, org.gnome.GEdit). Существуют дополнительные подкаталоги, выделенные для архитектуры (например, х86_64). номеров версий и связанных с ними контрольных сумм.
Среда выполнения управляется таким же образом, но хранится отдельно в каталоге runtime. Это связано с тем., что они могут использоваться несколькими приложениями. Последний каталог — exports, содержащий элементы, связанные с программами Flatpak, но находящийся вне песочницы. К ним относятся такие вещи, как значок приложения и файл .desktop (который появится в меню приложений на рабочем столе), а также системные ссылки, такие как подключения к оконной системе. Каталог exports содержит ссылки на вещи внутри Flatpak и является одной из тщательно контролируемых точек соприкосновения между хост-системой и песочницей Flatpak.
На скрине выше показан экспорт команды tree после установки LibreOffice Flatpak.
Распаковка Flatpak
Как и большинство проектов с открытым исходным кодом, Flatpak для достижения своих целей становится на плечи гигантов. Две ключевые технологии, лежащие в основе Flatpak — это ostree и bubblewrap.
Устанавливая Flatpak, вы устанавливаете «комплект» ostree, содержащий приложение. Сайт проекта описывает его как нечто вроде «Git для бинарников операционной системы». В дополнение к другим преимуществам, данный подход обеспечивает атомарные обновления — это такой витиеватый способ сказать, что обновляется только то, что нужно обновлять. Он также обеспечивает механизм отката.
Предположим, у вас есть программа с файлом 1 и файлом 2. Обновление предоставляет новую версию файла 2, который по факту обозначен как файл 3. Программа будет работать довольно успешно, используя файл 1 и файл 3, пока вы не захотите откатить версию. Но вам не надо делать всю операцию удаления или переустановки. Вам просто нужно изменить приложение, чтобы оно использовало файл 2 вместо более нового файла 3 (который всё еще существует на тот случай, если вы хотите выполнить «откат»).
Другой вспомогательной технологией является bubblewrap. программный уровень, который, в свою очередь, использует функцию пользовательского пространства имен ядра Linux. Это позволяет учетным записям обычных пользователей выполнять роль учетных записей root в контейнерах, включив песочницу Flatpak. При запуске приложение Flatpak вызывает подсистему, состоящую из приложения Flatpak и определенного количества системных ресурсов для использования в песочнице. В вики FlatPak на GitHub (https://github.com/flatpak/flatpak/wiki/Sandbox) есть страница, которая подробно описывает содержимое песочницы — вот некоторые ключевые свойства:
Теперь, если вы еще не слишком запутались, мы добавим еще один уровень сложности. Для установки большинства программ в системе Linux требуются права root, но Flatpak могут устанавливать и обычные пользователи. В следующей главе мы рассмотрим разницу между этими «пользовательскими установками» и более традиционной «системной установкой».
Система против пользователя
При установке программного обеспечения бывалые пользователи Linux привыкли предоставлять пароль root. Это программное обеспечение попадает в каталог за пределами вашего $НОМЕ, такой как /usr/bin, /opt или, возможно, даже /usr/local. Но, как упоминалось в списке плюсов, Flatpak поддерживает возможность установки программы для конкретного пользователя, а не для всей системы. Это работает, потому что обычный пользователь имеет доступ к необходимым ресурсам для запуска программы, и песочницы, созданные пользователем, получают такой же доступ.
Когда вы запустите любую из команд установки, вам предложат ввести пароль. Дело в том, что по умолчанию Flatpak будет выполнять системную установку. Это означает, что программа будет доступна всем пользователям, а ее файлы будут храниться в /var/lib/flatpak.
Пользовательская установка возможна благодаря устройству песочницы. Думайте об этом так: как пользователь, вы в состоянии запускать приложение. Это приложение имеет права (через вашу учетную запись) на создание экранного окна, запись файлов на диск и доступ к сетевым подключениям. Когда вы устанавливаете Flatpak как пользователь, любые ресурсы хост-системы ограничиваются теми, что вы сами можете получить с помощью «обычной» программы.
Установка Flatpak
Первый компонент, который вам нужен для установки Flatpaks (формат пакета) — это Flatpak (приложение). Большинство дистрибутивов предоставляют его в своих репозиториях. В Ubuntu вы можете выполнить следующее, чтобы получить и запустить: