LINUX.ORG.RU

Как устроен Flatpak?

 


0

2

Суть вопроса проста. Интересует ваше представление о том, что есть в техническом плане Flatpak.

Например -

  1. это виртуалка

  2. это контейнер как Docker

  3. какой-то иной тип контейнера

  4. пакет, в виде образа и архива, который содержит приложение и все его зависимости.

  5. и так далее - ваше видение.

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

И конечно, наиболее интересно услышать по этому вопросу мнение @theLORdweller, претендующего на звание ведущего здешнего эксперта. Ему, мягко говоря, есть что рассказать о различных дистрибутивах, пакетных системах и о флатпаке в частности. Ждем.

Особое пояснение. интересует именно ваше представление на данный момент. Не надо ссылок на документацию и подобного. Мне интересна картина представлений в головах людей.

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

Я бы в таком случае сделал общий каталог для обмена файлами с изолированным окружением, по типу как в VirtualBox - не очень удобно, зато более безопасно.

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

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

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

К тому же никто не будет изучать как оно правильно.

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

Честно, я ни со snap, ни с appimage или flatpack не работал, только имею такое представление.

Снап думается мне тоже примерно так же работает.

Спасибо за уточнение.

Отличие flatpack получается только в использовании cgroups для распределения ресурсов и изолированность приложения?

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

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

Отличие flatpack получается только в использовании cgroups для распределения ресурсов и изолированность приложения?

Не совсем. Flatpak это не архив и не образ squashfs. Файлы скачиваются и ставятся через ostree. Это как git, только для бинарных файлов.

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

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

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

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

Чем?

Да всем. Контейнеры эти — пластырь от импотенции ПМ. Староверы не впечатлились, а если уж ломать совместимость со староверами, то сразу все делать по уму.

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

Блин, да это все как раз абсолютные мелочи жизни. User mount namespace, набиндмаунтить и чрут, селинуксом каким порезать, подглядеть, что в сборочном sandbox’е Nix’а делается, подглядеть, что в bubblewrap’е делается… ФС это самое скучное вообще.

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

Староверы не впечатлились, а если уж ломать совместимость со староверами, то сразу все делать по уму.

Так вот у меня много вопросов к твоему варианту «по уму». Начнем хотя бы с той же изоляции. Попробуй объяснить все же, как она будет работать в связке bubblewrap + Nix. Детально.

Контейнеры эти — пластырь от импотенции ПМ

Это конечно мысль интересная, но твой «потентный» ПМ пока что-то не обеспечивает изоляции совсем. А что с ним станет когда начнет обеспечивать?

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

Угу вот только собрать полный и правлиьный appimage геморой из-за динамически в рантайме подгружаеммых библиотеках qt/gtk программ и разных glibc под разными дистрибутивами.

Единственно нормальная попытка сделать такое была в PCBSD pbi пакеты но работало только в pcbsd.

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

набиндмаунтить и чрут

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

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

Так вот у меня много вопросов к твоему варианту «по уму»

  1. Все зависимости стоят по раздельным неизвестным путям

  2. <optimized out>

  3. Nix

Начнем хотя бы с той же изоляции. Попробуй объяснить все же, как она будет работать в связке bubblewrap + Nix. Детально.

Как я это вижу, очень слабо представляя, что такое bubblewrap и порталы.

Появляется сущность «приложения» — деривации с точкой входа. У nix flakes уже есть такая.

У такой точки входа прописываются в passthrough метаданные права, которые приложение может попросить. Не только банальный доступ к ФС, а всякие там доступы к pulseaudio в обе стороны отдельно, на управление устройствами звука отдельно, доступ к камере, гранулярные потребности к доступу к сети (DNS отдельно причем может быть allowlist, confirm-each и/или wildcard resolving, ICMP отдельно, TCP отдельно, UDP отдельно, причем так же с allowlist/confirm-each/wildcard resolving) и т.д. и т.п.

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

Потом приложуха запускается с изоляцией ФС, сети и всего-всего-всего. Как — мне побоку, но это все должно быть решено на каких-то уровнях (и это и есть то, чем флатпаку бы стоило заниматься вместо ПМства). Пример про смарткарты я, например, не совсем с потолка взял, у коллеги интерн занимался абстрагированием их для флатпака как раз. Значит что-то там уже научились огораживать.

С изоляцией ФС Nix как раз на коне. С любым другим ПМ от этого сломается примерно совершенно все, в Nix приложения уже не лезут куда попало просто потому, что не знают куда. Да куда там, в других ПМ ответить на вопрос «что нужно видеть приложению, а что — нет» вообще не представляется возможным.

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

Потом ты кликаешь на firefox в лаунчере твоего DE и получаешь изолированный от всего firefox, со своим собственным неперсистентным без твоего одобрения .cache, квотой на размер профиля, ожиданием подтверждения на доступ к микрофону и т.д. и т.п., отсутствием доступа в /home вообще окромя как через Save File c ручным подтверждением и т.д. и т.п.

Как по cgroups сейчас разводят, так и по sandbox’ам.

Кликаешь правой клавишей — и можешь выбрать любую версию firefox из nixpkgs, с соответствующим эпохе рантаймом. Можешь в общей песочнице, можешь в отдельной.

Вот это была бы красотень. Профили? Не дело Firefox, дело ОС, app-independent solution. Доступ к захвату экрана? Не дело Firefox, дело ОС, app-independent solution. И т.п.

Потом эволюция шагает еще вперед, и сэндбоксы начинают работать через виртуализацию, разделение доступа к ФС перекочевывает на уровень какой-нибудь virtiofs, изоляция крепчает, никто не чувствует разницы. Мир, дружба, торжество безопасности.

Вот этим надо заниматься, а не ПМы плодить.

твой «потентный» ПМ пока что-то не обеспечивает изоляции совсем. А что с ним станет когда начнет обеспечивать?

Run-time изоляция через незнание путей уже лучше, чем помойка в /. Ничего не станет, в том и прелесть.

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

Затем, чтобы 1) не дублировать нифига 2) все еще не дублировать нифига, когда ты захочешь во всех своих пакетах без исключения, системных и юзерских, libcanberra с нужным тебе патчем.

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

Run-time изоляция через незнание путей

Вот эта фраза мне очень очень сильно не нравится. Что значит через незнание. А если я начну шариться просто по всему что есть и все узнаю?

  1. не дублировать нифига 2) все еще не дублировать нифига, когда ты захочешь во всех своих пакетах без исключения, системных и юзерских, libcanberra с нужным тебе патчем.

Так ведь ostree позволяет сделать ровно это + все будет по чрутам при этом. Хардлинки же есть.

По остальному - выглядит нормально, но сильно переусложненно. Особенно там где пошло про virtiofs.

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

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

У флатпака все собирается, по сути без ПМ вообще. Это скорее недостаток чем преимущество.

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

А если я начну шариться просто по всему что есть и все узнаю?

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

Runtime-«изоляция» в Nix сделана от ошибок опакечивания. Было бы круто ее усилить хотя бы до всего применимого из build-time изоляции.

Так ведь ostree позволяет сделать ровно это + все будет по чрутам при этом. Хардлинки же есть.

Как до тебя донести мысль, что чруты не нужны и являются костылем, растущим от импотентности ПМ? Ничто не мешает жить рядом примерно всему, хоть семи разным инсталляциям ОС.

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

Можно. А еще можно под каждое новое приложение новый девайс задействовать. Но не нужно. И контейнер не нужно. И чрут. Но не делать же все по уму, да.

У флатпака все собирается, по сути без ПМ вообще.

НедоПМ во всей красе. Собирать пакеты — основная задача ПМ.

t184256 ★★★★★
()

что есть в техническом плане Flatpak.

Эталонное ненужно.

Dog ★★★
()

Из чего же, из чего же, из чего же сделан Flatpak?

Из палок и навоза, костылей и подпорок сделан ваш Flatpak.

Каштан.

anonymous
()
Ответ на: комментарий от t184256

Ничто не мешает жить рядом примерно всему, хоть семи разным инсталляциям ОС.

Кое-что мешает, точнее осложняет и портит красивую идею.

В итоге, насколько я понимаю, Nix не может обновить библиотеку без пересборки и перезалива пользователю всего приложения.

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

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

Плюс - еще вот такой немаловажный аспект. Как это все выглядит для пользователя.

Флатпак для пользователя выглядит как магазин приложений. А Nix - как «позовите админа».

James_Holden ★★★★
() автор топика

Пофигу как устроен флатпак, он не решает главной проблемы - стабильности.

Я периодически сталкиваюсь с проблемой, что понаставил софта разного (на попробовать, или помочь кому разобраться), потом удалил, потом опять, и вот система уже не та. Побиты ассоциации файлов, вместо окуляра даже Дольфин может вдруг начать открывать документы в gscan2pdf, например. Падают непонятно приложения, конфигурационный мусор и т.д. Хочется вынести всю эту мусорку в отдельное место.

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

Нет, это приятно, что снаружи остаётся почти чистенькая система с КДЕ, но унутре у ей уже далеко не неонка, флатпак (его пакетчики, наверное) создаёт столько же проблем, сколько и «решает».

Серебряной пули не получилось. Прав был Линус (хоть и лукавил), система должна собираться и строиться на свежем софте, а для этого API и пр. должны быть стабильными. Нельзя ломать boost на каждый чих! А тогда не нужны будут некродистры (или их наличие не будет критичным) и не нужны будут флатпаки. А до тех пор - вы просто переставили мусорку не под раковину, а поближе к окну.

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

Они, видимо, подставляют друг другу ножку, обновляя общие зависимости…

Что конкретно сыпется? Такого просто быть не может. У тебя диск сбойный скорее всего.

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

Мне нечего спрашивать у фанатика. Я просто показал обычный экспиеренс обычного пользователя.

Каштан.

anonymous
()
Ответ на: комментарий от Ros

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

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

К тому же во флетпаке и снапе софта ничерта нет

4.2

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

И теперь каждое приложение будет весить очень много

Так и с Flatpak так по факту. Если не забивать баки дурью про волшебную дедупликацию, которая вжух и…

Каштан.

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

Харэ под fornlr косить. Придумай что-то свое.

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

В итоге, насколько я понимаю, Nix не может обновить библиотеку без пересборки и перезалива пользователю всего приложения.

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

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

«Этого не может быть потому что этого не может быть никогда!»

Нет, не диск. Проявляется стабильно на нескольких системах на пакетах мессенджеров на электроне. Сейчас не посмотрю из-за какого конкретно, но ставишь его и начинаются проблемы. Да и с другими бывало - не запускается. И в топку. Разбираться во всём этом… Помогать воздвигать этого Колосса…

Смешно. Стоит в системе несколько электронов и во флатпаке ещё… Позорище! И электрону и всем кто коворяет его кривыми пальчиками! И Флатпаку, пытающемуся спрятать говно под ковёр!

Да Гугл! Я не робот!!!

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

Сделать из потентной системы аппстор — дело нехитрое. А вот сделать из dpkg или rpm что-то стоящее — нереальщина.

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

А нечего гуглить всякую фигню роботскую вместо биографий кардашьянов.

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

на пакетах мессенджеров на электроне

Это какие конкретно? Telegram и Viber вроде не на электроне? С ними у меня проблем нет.

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

Когда-то давно люди сравнивали приложение, которое было слинковано с ПРАВИЛЬНО собранными либами (кути по моему). В результате всё приложение весило едва больше динамически слинкованного, а уж если посчитать либы, то и вообще. Проблема в том, что никто не разбирается что канпелять из этой от кучи, канпеляют всё. В итоге всё весит тонну.

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

anonymous
()
Ответ на: комментарий от t184256

А вот сделать из dpkg или rpm что-то стоящее — нереальщина

Конечно. Тут вопросов нет.

Кстати, насчет аппстора - как там в NixOS с AppStream? Во всяких магазинах гнома, кде установка приложений работает?

У меня так и не дошли руки посмотреть когда ковырял NixOS.

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

Забылось как-то. Я несколько пробовал, люди постоянно спрашиают про какой-то другой мессенджер, их надо иметь ВСЕ. И даже для школы их надо ТРИ. Запоминать это всё неохота. Охота не сталкиваться с флатпаком, потому что это ещё один монстр. Хватит, и без него обойдусь.

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

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

Баги воспроизводиться должны.

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

Вспоминается гонка вебтехнологий. Никто не хочет разбираться, все хотят шлёп-шлёп и в продакшен. И займутся этим только после того как в США введут запрет на мощные компы (уже начинается) и ограничат сеть, потому что воякам нужны кристалы и толстые каналы для слежки за каждым в 4К. Тогда вспомнят и о статичных сайтиках и пр. Тогда, может, и займутся оптимизацией.

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

Тогда, может, и займутся оптимизацией.

Вряд ли - оно все и на слабых мобилах работает.

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

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

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

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

anonymous
()
Ответ на: комментарий от t184256

Нет, есть такая штука - AppStream, предоставляет кроссдистрибутивную обертку над любым ПМ. В итоге можно работать с системным ПМ через GUI-магазин. Такой магазин есть в GNOME, в KDE. То есть я запускаю гуевину, там - приложения. Тырк - и они ставятся через мой системный ПМ, будь то apt, pacman, flatpak или что угодно, для чего есть обертка.

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

Только на практике после такого тырканья бардак в системе. Гуёвины позволяют ставить удобно. Мусор из системы они, к сожалению, не убирают. И не дают выбрать откуда ставить. Например - в Discover открываю игры - там Wesnoth. Угадай откудава он? Из флатпака. Приложения из репозитория лежат где-то внизу. Человек не видит разницы и маленький квадратик (показывающий, что это снап или флатпак) ему ни о чём не говорит. И нет такого способа заставить родные приложения быть выше, для обычного пользователя это даже в голову не придёт. Он ставит и то и сё и даже не понимает что откуда.

И это только начало беды. Когда он понаобставляется, а потом понаудаляет - никакие зависимости этими «аппсторами» не подчистятся. Кэш тоже не чистится и диск переполняется. А когда он найдёт одно - другое объяснение как удалять пакеты - они все где-то не там. Где Веснот? А нетути! Полтора гига занял, а его нет в apt, или пакмане, или rpm. И ком наворачивается…

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

А я вот задумался, может дурное дело и хитрое.

Было бы интересно поглядеть, потому что тогда потребовалось бы ввести всякую дичь вроде nix install, nix update, nix list --upgadeable и nix upgrade, а мощь Nix до доисторических гадостей сплющивается неоднозначно. Все бы перессорились еще при сплющивании =)

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

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

Да, вот в этом-то и проблема. Существующие ПМ не позволяют это сделать нормально.

James_Holden ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.