LINUX.ORG.RU

Nix vs Flatpak

 ,


1

3

Поставим вопрос ребром.

Какие преимущества имеет Nix перед Flatpak на десктопе?

Опираюсь на такую статью

https://serokell.io/blog/what-is-nix

Интересно и достаточно доступно расписано про Nix. Но! Я не могу понять, чем это лучше Flatpak?

Вот такие преимущества у Nix:

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

  2. Бинарный кеш - конечно же есть у Flatpak, только называется не кеш а сами пакеты. Кроме того есть все манифесты для их сборки в гите, и внутри каждого пакета. То есть все как у Nix.

  3. Разные версии пакета одновременно. И там, и там это конечно же возможно.

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

  5. Сборка без привилегий для пользователя. Точно так же flatpak-builder не требует никаких привилегий и не использует ничего из хостовой системы.

Как видим, все перечисленное в равной мере характерно для Nix и для Flatpak. Так в чем тогда преимущество Nix?

Далее - у Nix есть возможности еще и по управлению конфигами. Эта функциональность выходит за границы пакетного менеджера и у Flatpak вообще отсутствует. Я предлагаю пока разделить эти сферы, и обсудить отдельно непосредственно сборку и управление пакетами.

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

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

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

t184256 ★★★★★
()

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

t184256 ★★★★★
()

flatpak конечно же.

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

О отлично, буду смотреть.

На самом деле, мало иформации для людей со стороны. Дошло до того что я ставил NixOS на виртуалку, ставил софт, типа проьовал основные фишки про которые обычно пишут, но так и не понял самого главного, чем оно кардинально отличается.

Только в этом треде ты мне объяснил.

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

Касательно самого вопроса Nix vs Flatpak это тебе лично кажется странным, как человеку знающему Nix. А в массах сейчас он позиционируется как аналог Flatpak по установке кроссдистрибутивных пакетов, и принципа «сразу несколько версий».

И в этом плане он действительно аналог Flatpak, только никто не знает что это на фоне возможностей Nix малозначительная побочка.

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

Естественно, врать запрещено правилами форума, если что.

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

Ну вот примерно об этом я там и, и о своем опыте ныряния в прорубь.

А в массах сейчас он позиционируется как аналог Flatpak по установке кроссдистрибутивных пакетов.

Ничего, заменой Cabal он уже к известности пришел, так может с пересадками и к успеху доедет.

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

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

И чего вы на картинке показывали бриллиант?

А про логотип: я так понимаю, что там лямбды разных цветов не просто так (хотя надо было их сделать двухцветными, снежинка же).

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

алмаз / бриллиант

Ммм, мой косяк.

Про алмаз, что значит его сложно объяснить?

Я прямым текстом говорю, что define легко. Не define, не describe, а explain.

А про логотип: я так понимаю, что там лямбды разных цветов не просто так (хотя надо было их сделать двухцветными, снежинка же).

Я просто взял официальное лого, а у тебя, кажется, СПГС =)

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

Я прямым текстом говорю, что define легко. Не алмаз а бриллиант, не define, не describe а explain.

Вот именно, я про explain и говорю. Вон то всё — описание алмаза.

Я просто взял официальное лого, а у тебя, кажется, СПГС =)

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

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

Вот именно, я про explain и говорю. Вон то всё — описание алмаза.

И то и это define. Explain — это накой их майнят, зачем на шею вешают и почему высоко ценят.

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

Шли pull-реквесты. Я вроде еще под другим начинал.

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

Explain — это накой их майнят, зачем на шею вешают и почему высоко ценят

<душнила> Это объяснение не алмаза, а части мира, соприкасающегося с алмазом. </душнила>

Шли pull-реквесты

В графику? Возможно, когда совсем дел не будет.

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

Так и объяснение NixOS в вакууме никого не замотивирует. Прикладные примеры нужны, мало ли красивых внутренне дистров.

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

Вот блин обломамс с прикладным примером.

Смешно, но я не могу целый вечер заставить работать VS Code!

Он тянет свои пакеты, в которых бинарники конечно же не работают. Блин!!!!

Ну ладно, я понял уже что надо через configuration.nix добавлять расширения. Сначала получалось, потом я установил PlatformIO (ради которого мне и нужен VS Code).

Так он блина туда же! Он зачем-то тянет свой бинарный тулчейн под STM32 и ставит его в /home!!!! Естественно он не работает. Я не могу целый вечер собрать проект. Это кошмар какой-то…

Это при том что я поставил тулчейн через Nix и из VS Code он доступен.

Ну что мне через флатпак что ли ставить… Там все сразу работать будет.

Кто-нибудь использует это PlatformIO из-под Nix?

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

Это не то. Это для командной строки, а мне надо IDE, которое как расширение для VS Code идет.

Я его поставил через Nix уже, но проблема в том что оно тянет свой бинарный тулчейн и что с этим делать совершенно не понятно.

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

Жечь каленым железом, пакетный менеджер должен быть только один^UТам по моей ссылке файлик chrootenv.nix с buildFHSUserEnv внутре ненавязчиво подсказывает, что идти на уступки доисторическим практикам.

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

Да я бы вообще по Редмонду (или где там MS) стратегический удар нанес, но работать как-то надо )))

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

Еще https://nixos.wiki/wiki/Platformio намекает, что надо заставить плагин юзать системный platformio, а https://discourse.nixos.org/t/how-to-use-platformio-with-vscode/15805/3 жалуется, что эта схема сломалась довольно недавно. На прошлых версиях проверить можешь?

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

На прошлых версиях проверить можешь?

Лень возиться. Судя по тому что я вижу, оно 100% работало раньше, когда можно было использовать системный platformio.

И сейчас можно, если в терминале VS Code ввести вручную команду platformio run. Не работает кнопочка в IDE «сделать зашибись» )))

Я вот думаю чем так мучиться, так проще в FHS окружение завернуть весь VS Code.

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

И ведь полюбому проще всего это починить в nixpkgs какой-нибудь элегантной парой строк, просто мы не знаем каких =)

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

Ну просто бляха…

Эта проблема решилась, та опция из https://nixos.wiki/wiki/Platformio таки работает.

Проект собирается. Но теперь чтобы прошивку на девайс залиииить… скачивается еще штук 5 бинарных утилит! И там уже настроек нет.

Эта хреновина впринципе несовместима с философией Nix…

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

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

В общем, выдрессировать его можно.

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

Эта хреновина впринципе несовместима с философией Nix… … Ну это решаемо

История каждой второй софтины, я полагаю =)

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

Я тоже, судя по всему, оказал влияние на содержимое этого видео. Занятно наблюдать эффект своего «щитпостинга» на реальный мир. Авось так и мой «план» по «достучиванию» до RH сработает :P

Вот я смотрю, и от некоторых моментов у меня аж приступы «so much this» наступают. Постепенно за последние несколько недель пришёл уже к тому, что для серверов и нет-то нормальных вариантов, кроме NixOS. Для базовой конфигурации (типа того, что описано в «арчевики» в разделе «установка») Nix выглядит значительно привлекательнее, чем разношёрстная помойка в /etc. Подумываю попробовать накатить себе на «локалхост».

Когда-то тоже задумывался, как можно решить проблему, когда зоопарку ПМ нужно друг у друга тянуть зависимости. Придумалась некая библиотека, чтобы ПМчики могли слать друг другу стандартизированные запросы. А Nix решил проблему грубой силой, пойдя по пути наибольшего сопротивления и не терпя никаких компромиссов. Получилось, конечно, замечательно с эстетической точки зрения. Но тут стоит задать вопрос: а для кого вообще эта ОС и где она будет применяться? Потому что подход «забудь всё, что ты знал до этого, и кури стони страниц документации» осилят разве что всякие рептилоиды с разноцветными волосами, коих 1 % от 1 %. Особенно когда нужно, чтобы «просто работало», притом уже вчера.

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

Ещё бы хотелось, чтобы оно не занимало сотни места на диске. А то ведь теряется одно из основных преимуществ «линукса». И yaml хотеть.

Спасибо за внимание. Надеюсь, моя тёплая графоманская простыня помогла вам согреться этим зимним вечером.

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

А это была моя презентация перед этим.

Коротко — xonsh это Python, настоящий полноценный ЯП общего назначения. И одновременно с этим шелл умеренной совместимости.

А fish это просто шелл умеренной совместимости.

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

Это и так понятно. Меня вот тоже недавно посетила идея переписать все шкрипты на Python. Вопрос в интерактивном использовании. Можно ли на неё пересесть, не отказавшись от «киллерфич» fish? Или получится как c zsh?

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

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

По сути появление докера и OSTree при уже живом Nix и можно объяснить таким стремлением.

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

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

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

Вот только эти две причины формируют его архитектуру.

А людям это надо? Время показывает что нет. Это не решает никаких проблем пользователя. Тупиковый путь.

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

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

Забыл добавить, а исправить уже нельзя: я вообще удивлён, что у них на это хватило ресурсов.

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

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

Тут можно ещё провести аналогию с unsafe в Rust. Может потребоваться его использование, но всё равно гораздо лучше, чем когда «помойка» явялется глобальной.

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

Это вообще магия чуть ли не хлеще всего остального. Как это все сделать без ресурсов.

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

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

Авось так и мой «план» по «достучиванию» до RH сработает :P

Есть где почитать? =)

Ещё бы хотелось, чтобы оно не занимало сотни места на диске.

Оно тюнится до занимания штук места на диске, у меня на одной VPS всего 10 гиг и ничего. Сейчас проверил, ест 2.

И yaml хотеть.

Лол, приделаешь где-нибудь yaml =D

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

Короче, создал FHS shell с нужной библиотекой.

Даже без пересборки пакета, просто при запуске VS Code из этой FHS shell все работает как в обычном линуксе. Все что он скачивает запускается теперь.

Думаю что да, проще всего завернуть VS Code в FHS и не мучиться. Очень уж оно виндузятник-вей.

James_Holden ★★★
() автор топика
Ответ на: комментарий от t184256
  1. Автодополнение.

  2. History substring search.

  3. Генерация автодополнений из «манов». (Уже увидел, что есть.)

  4. Подсветка синтаксиса.

  5. abbr + мгновенное развёртывание !!/!$.

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

Ещё мне нравится, что для установки невырвиглазной цветовой схемы (например, Tomorrow Night Bright) достаточно зайти в настройки и нажать пару кнопок, а не брутфорсить 20-мерный (или сколько там) вектор.

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

Есть где почитать? =)

Вот же.

Оно тюнится до занимания штук места на диске, у меня на одной VPS всего 10 гиг и ничего. Сейчас проверил, ест 2.

А зачем тогда на ноутбуке 100 ГБ занимать?

Лол, приделаешь где-нибудь yaml =D

Это я к тому, что Nix мне напоминает VerboseFuck.

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

А зачем тогда на ноутбуке 100 ГБ занимать?

  1. Я сижу на unstable, там масс-ребилды почаще.

  2. А че бы и нет, мне не жалко. Месяц-другой роллбэков в подарок.

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

Вот я тупой!!

Ковырялся с этими FHS shell, уже разобрался как все сделать. И тут обнаружил, что есть же готовый пакет vscode-fhs! Все уже украдено до нас.

Открыл код пакета, а там коммент

# buildFHSUserEnv allows for users to use the existing vscode
# extension tooling without significant pain.

ну вот именно.

Причем, они еще и bubblewrap используют в этом пакете. То есть получается, в NixOS начали делать изоляцию через bubblewrap, и в перспективе появятся разрешения по типу флатпака у приложений?

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

А кстати, вот ты активно ковыряешь всякие флатпаки, а есть какая-то графическая управлялка этим Мордором? Именно разрешения раздавать-забирать, чистить кэши и пр. Есть такое?

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

Именно разрешения раздавать-забирать

Конечно! Flatseal. Ставится через тот же флатпак. Рулит всеми разрешениями, можно как угодно перенастроить каждый пакет.

чистить кэши и пр

А вот для управления установкой, удалением, очисткой только cli утилиты. Устанавливать и удалять флатпаки можно гномовым или кедовым магазином, но они сами по себе это позор какой-то. Тут я не знаю как быть, никто не может разработать приложение магазина приложений ))

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

Кеши по идее создаются в /var/tmp и должны очищаться при перезагрузке естественным путем.

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

Вот еще такая фишка.

Многие спрашивают, почему flatpak install показывает один размер пакета, скажем 150 Mb. Ставишь его и бумц - у тебя минус гигабайт свободного места. Причина в том что он показывает объем скачивания, в сжатом виде. А потом оно распаковывается и прощай твое свободное место )))

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

у flatpak явный же недостаток - это то что в системе мусор копится в виде дублей уже и так имеющихся в системе библиотек. пакетный менеджер же ставит пакет и его зависимости, если тех нет, faltpak тебе поставит как правило программу с графическим интерфейсом и ее зависмости даже если те есть в системе. он не просто так возник. он решает проблему некродистров (все что не arch), в которых нельзя ставить новые версии каких-то системных библиотек. snap тоже самое. nix - это ОСНОВНЫЙ СИСТЕМНЫЙ пакетный менджер, flatpak - вспомогательный. так как nixos особо на некродистр не тянет, я не думаю, что в нем этот мусор нужен

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

у flatpak явный же недостаток - это то что в системе мусор копится в виде дублей уже и так имеющихся в системе библиотек

Ага.

он решает проблему некродистров (все что не arch), в которых нельзя ставить новые версии каких-то системных библиотек. snap тоже самое

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

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

nix - это ОСНОВНЫЙ СИСТЕМНЫЙ пакетный менджер

Он вполне работает и не как основной, по аналогии с флатпаком работая на любом дистре.

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

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

flatpak - вспомогательный

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

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

а не могу представить ситуацию когда мне требовалось бы поставить какое-то старое графическое приложение. в случае со старыми версиями баз данных - для этого есть docker. для php,python,ruby и пр - asdf-vm/pyenv,nvm,phpenv и пр

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

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

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

в случае со старыми версиями баз данных - для этого есть docker

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

Пример старого графического которое мне надо - Qucs, Qucs-S. Оно на qt4.

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

flatpak по определению не может быть основным

Почему? Может. Основная система тоже ставится как флатпак. Внутри любого флатпака этот «основной» образ зашит (но не полный). Нужно только образ initrd научить грузиться не в корень диска, а во флатпак. Что я и сделал вот с этой системой с которой пишу.

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