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 вообще отсутствует. Я предлагаю пока разделить эти сферы, и обсудить отдельно непосредственно сборку и управление пакетами.

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

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

Только в случае флатпака это будет вопреки флатпаку

Почему вопреки? Собирать пакеты для ПМ это значит вопреки? Это основная задача любого ПМ.

а Nixу просто достаточно написать, что тебе от него надо

Я и flatpak-builder’у могу написать что мне от него надо, но это будет не так лаконично.

«Опакетить», написав соответствующее Nix-выражение.

Чем это кардинально отличается от «опакечивания» у флатпака, кроме длины того что надо написать?

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

А можно пример, вот гипотетически нужно так установить питоновский модуль, он есть на гитхабе, на pypi.org, готового пакета Nix нету. Как его «опакетить»?

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

Сначала надо придумать, зачем это нужно. Я пока не придумал.

Зачем нужно разрабатывать веб-приложения не придумал? Шланг форте.

pip install evdev, а хедеры и так есть, зачем их именно в virtualenv?

Пакетный менеджмент «на авось» и в LFS есть, но ты же зачем-то используешь (допотопный, но все же) ПМ.

Последний, коронный пример, я из-за него остался на NixOS.

Я захотел, заодно, раз уж дистр меняю, попробовать bcachefs. bcachefs незамэйнлайнен, надо собирать не просто патченное, а прям кастомное ядро. В какой-нибудь убунте пришлось бы собирать это ядро, расколупывать iso, подменять ядро, модули ядра в initramfs, грузиться и после этого, если очень повезет, с него ставиться. А в NixOS? add "bcachefs" to boot.supportedFilesystems!!!

t184256 ★★★★★
()
Ответ на: комментарий от James_Holden
buildPythonPackage rec {
  pname = "yourpkg";  version = "0.0.0";
  src = fetchPypi {
    inherit pname version;
    sha256 = "00000000000000000000000000000000000000000000000000000";
  };
}

засовывать в pythonWithPackages, естественно

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

Ты эту тему завёл от отсутствия опыта. Рекомендую, чтобы всю эту кухню прочувствовать - поставить и пожить пару недель или месяцев.

Когда проникнешься, переходи на Guix, возможностей и проблем поболе.

А так это тупизм, тебе как горохом о стенку.

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

Почему вопреки? Собирать пакеты для ПМ это значит вопреки? Это основная задача любого ПМ.

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

Чем это кардинально отличается от «опакечивания» у флатпака, кроме длины того что надо написать?

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

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

Когда проникнешься, переходи на Guix, возможностей и проблем поболе.

не слушай гнутого

t184256 ★★★★★
()

Из никс я поставил нужную в одно время gui программу (которой не было в системе), которой точно также нет в жирпаке.

У никс пакетов один рантайм. У жирпака их туча, причем в системе можно установить хоть с десяток рантаймов что превысит размер установленного линукс дистрибутива. В жирпаке приветствуется тотальное форсирование Gui стилей и тем (считай привет ЩитХат).

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

У никс пакетов один рантайм

Это крайне спорное утверждение. Неявно там «рантаймов» сколько угодно.

В жирпаке приветствуется тотальное форсирование Gui стилей и тем

С чего это вдруг? Форсируют в гноме как таковом, флатпак тут особо не причем. KDE софт меняет темы как хочет.

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

Напиши хоть одно из уже где-то пяти примеров выше, там и поговорим

Что писать, на каждый пример будет полный манифест больше чем на экран моего ноута. Уже готовый манифест нельзя взять и «переиспользовать» в однострочнике, его надо взять целиком и переписать. Потом натравить на него flatpak-builder.

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

Больше всего интересует вот такой юзкейс.

Допустим, есть софтина, которую нельзя пересобрать, а надо брать в бинарном виде из .deb, snap, tar или чего-то похожего. Естественно там будут библиотеки, LD_LIBRARY_PATH на себя и подобное. Как это можно опакетить в Nix? Насколько геморройно? Что будет с тем, что нету FHS? Он будет патчить бинарники и добавлять rpath?

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

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

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

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

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

а вот ОС

Тут как раз проблем нет. Как один неделимый пакет собрать можно.

девелоперское окружение

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

Да, можно наваять манифест и flatpak-builder соберет любое окружение, в том числе с pip и npm пакетами внутри. И этот манифест будет текстовым файлом, переносимым и повторяемым на любой машине.

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

самодостаточный вим с плагинами не собрать

Собрать не проблема, писанины будет больше.

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

Как один неделимый пакет собрать можно.

Это не ПМ, даже по меркам доисторическим.

Собрать не проблема, писанины будет больше.

Там плагину нужна конкретная версия pylint =)

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

Ну я почитал код как спотифай опакечевается, вроде ничего экстраординарного. Какие-то либы симлинкаются в каталог к спотифаю, потом патчится rpath. Почему и то и другое надо я пока не понял.

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

Они не прочитали ту главу кандидатской, где объяснялось, почему пришлось делать Nix с нуля и не подходил ни один готовый язык и ВНЕЗАПНО получилась немасштабируемая хрень. + распыление усилий на гнутый фанатизм и вендорлокин само по себе зло.

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

Приятно вас читать, ребята.

А чего появился Nix? Я то его появление как раз обсуждал с хаскелистами. Можно твоё мнение?

Этот JH странный. @James_Holden, что для тебя, не знаю, прыгать с парашюта? Или как играть на скрипке? А почему смычковые лучше?

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

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

Так-то, в целой одной конфигурации монолитным пакетом, и Microsoft Windows 11 небось тоже дистрибутив vim.

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

А Саймон, который Джонс, писал, что этот DSL никому не нужон, мертворожденное оно. Так что теперь? Я же тебя спросил, а не чужое мнение.

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

Мое мнение — DSL мог бы быть и получше, и в будущем и будет получше (Nickel какой-нибудь, потом что-нибудь следующее). Но DSL объективно и аргументированно нужен, иначе будешь эвалюировать мир по полчаса. Гнутые фанатики, у которых то ли повестка, то ли пунктик пихать схему во все щели к месту и не к месту, в случае именно с Guix пролетели на 146%. Спасает только то, что на их мертворожденный дистр всем плевать и в силу специфичной для GNU бесчеловечной модели разработки много сил эта черная дыра позора не оттягивает.

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

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

Молот во всем видит наковальню, а лоровец - вброс.

Я попросил чтобы мне объяснили преимущества Nix, и как показывает тред - это успешно и происходит.

А твой апломб вызывает просто смех.

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

Вот это клоунада.

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

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

А Guix я не рекламирую, Эскобар не даст соврать! Просто оно оказалось более удачным решением, вот и всё.

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

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

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

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

просто схема гибче

Схема гибче DSL, вот это да. А я быстрей безногого деда.

а калеки не смогли в готовый Haskell

не ходил по ссылке

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

пропустил мимо ушей даже мой коммент

А стало наоборот - недоязык оказался никому не нужен.

Отрыв от реальности полный, отчет пошел.

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

Чел, чтобы понять до глубины души этот ПМ как раз полжизни и нужно

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

Но я так и не понял зачем тут полжизни нужно. И так понятно чем Nix лучше, например. В той степени понятно чтобы решить его использовать или нет.

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

Вообще это все несколько напоминает мои споры с гентушниками. Когда мне отвечают, что юзфлаги нужны чтобы выбрать wayland или xorg. Но блин, для этого не нужны юзфлаги. А для чего они реально на практике нужны - они не называют, хотя под пытками скажут.

В некоторой степени так и тут. Есть куча писанины про декларативщину, чистоту, composable и все дела, но сразу надо впаривать не это, а то, зачем это на практике нужно. Желательно не под пытками.

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

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

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

Это баттл какой-то чтоли?

Да, конечно баттл. Мы же на лоре, тут одни баттлы, просто вопросов никто не задает.

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

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

Учитывая, что железо и софт под линуксом требуют костылей и подпорок, в Nix они быстро реализуемы.

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

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

Чтобы использовать его надо всего недельку.

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

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

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

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

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

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

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

Так не делается. Решение должно быть адекватным задаче.

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

Я его задаю, а мне в ответ «дурак, некомпетентный, тут полжизни изучать надо».

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

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

А это уже другие вопросы, и на них пока все человечество ответить не может. Nix точно не будет мэйнстримом ПМ, мэйнстрим ПМ 2040ого точно будет ближе к Nix, чем к троглодитам, но вот как именно подружить гибкость и простоту — пока никто не знает. Так что этот твой вопрос похож на сравнение юзабилити GNOME 1 с Mac OS ещё без X.

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

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

Я же просто спросил, и ответы на свои вопросы получил, благодаря тебе. Для этого форум и нужен.

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

Маны читать — не на лоре языком болтать.

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

Я это время делал некоторый эксперимент - может ли флатпак служить неким компромиссом в этих задачах.

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

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

Все равно это не удобно. Flatpak слишком упрощен и заточен под пользователя. Через него можно конечно какое-то подобие virtualenv делать, но по сравнению с Nix это не то.

Плюс - попытки собрать хостовую систему как монолит привели к пониманию того, что крайне сложно устаканить на 100% монолитную систему под все случаи. Все равно небольшие изменения по драйверам, bumblebee и прочей лабуде нужны для заточки под конкретную машину. Не то чтобы очень сильно затачивать надо, в итоге я сделал образ который на разное железо просто копируется и сразу работает, но это далеко от идеала.

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

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

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

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

не нужно жертвовать готовностью к ламеру.

Nix пока очень не стабилен даже в плане консольного интерфейса(команды и тп) а документация одна из самых признаных проблем сообщества. Но когда flake и тп станут удобной нормой, когда документацию подтянут, а сообщество увеличится до достаточного размера что бы легко сопровождать релизы(сейчас это со скрипом проходит), то сделать гуй для управления конфигом на nix будет совсем не сложно, и базовые настройки/пакеты можно будет менять вообще не зная что такое nix

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

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

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

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

Пример винды и мака показывает, что ламеру не нужен ПМ от слова вообще, так что за интерфейс между ними слишком переживать не надо.

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

Ставлю на «нет». В $PATH утилиты же появляются, скорей всего и плазма .desktop-файлы подхватит, если на какой-то особый плазменный баг с релоадом не напорется.

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