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

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

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

Тебе никто не мешает любые СУБД упаковать во флатпак и запустить из флатпака. Как и любые консольные приложения.

Никакого ограничения «только графические» там нет.

Другое дело что это может быть весьма неудобно для пользователя. Но работать будет.

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

а я и не писал, что «невозможно» лишь указал на то что во флэтхабе по-моему вообще ни одной консольной утилиты

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

во флэтхабе по-моему вообще ни одной консольной утилиты

Ну тогда не путай флатпак и флатхаб

Это все равно что путать гит и гитхаб. Зашквар короче.

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

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

Это не проблема.

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

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

Если уж говорить о консольных утилитах на флатхабе то там недостатка в них нет.

Выполни

$ flatpak run --command=bash org.kde.Sdk

и ты попадешь в шелл, где доступны все основные юникс-утилиты, компиляторы gcc и clang, python3, системы сборки qmake, cmake, meson, autotools. Это только в одном пакете с флатхаба! К нему еще на флатХАБе есть куча пакетов-расширений со всякими нодами, растами и прочим.

Какие еще утилиты командной строки нужны я не знаю )))

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

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

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

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

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

Первый раз слышу, звучит круто. Больше кубиков лучшему конструктору.

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

Там функция buildFHSUserEnvBubblewrap.

Я до конца не разобрался как конкретно оно работает, но видимо это как раз оно.

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

а в докере можно запустить de и через rdp подключиться…

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

Да, что гномовский, что кдешный - ужас. Это правило такое, чтоли?

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

R_He_Po6oT ★★★★
()

Когда сидел в void то там сборка avidemux была с утилитой командной строки, что было удобно.

А вот в Mint уже хитрят и ставят flatpak и cli уже отсутсвует. :(

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

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

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

Символ «+» это символ провала. Значит что ни тот ни другой не могут делать того что от них требуется.

К Docker здесь претензий меньше - у него есть специфические функции выходящие за рамки управления софтом, и там его заменить пока нечем.

А вот что с zypper? Он обеспечивает повторяемые сборки? Атомарное обновление? Что с откатами обновлений? Обеспечивает частичное обновление, только тех приложений которые я хочу обновить гарантированно не затрагивая другие?

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

Интересно. Прям локальная победа flatpak над snap.

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

Это символ двух разных задач.

Zypper управляет пакетами, и справляется с этим отлично, а с приведёнными требования я не согласен, ибо задача ПМ — доставлять обновления и обеспечивать консистентность системы в целом, остальное — какие-то бестолковые хотелки с неясным целеполаганием. Docker позволяет невозбранно запускать что угодно и как угодно без влияния на окружение.

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

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

Zypper управляет пакетами, и справляется с этим отлично

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

а с приведёнными требования я не согласен

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

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

какие-то бестолковые хотелки с неясным целеполаганием

Я могу очень ясно пояснить целеполагание по каждому пункту, если надо.

доставлять обновления и обеспечивать консистентность системы в целом

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

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

Ой, ну толсто. =)

Задача ПМ — подавать мне нужный софт. Если ПМ не может просто взять и подать мне rsyslog с патченным gnutls, то это не ПМ, это аппстор. Если ему ещё и нужен для этого докер, то это уже провал.

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

Ты вообще не очень понимаешь назначение докера, судя по множеству твоих комментариев о нём. Хотя польщоваться умеешь, что характерно. Nix не то, что не заменяет докер, это вовсе разные плоскости.

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

Функция докера — стильно модно молодёжно распространять и послойно дополнять чруты.

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

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

Там был ремэйк https://www.youtube.com/watch?v=ZDhfpqRnpwI, может в чем-то чуть менее корявый и с заходом со стороны шелла а не питона, но вряд ли сильно более интересный. Могу так пересказать: xonsh is both shell and Python, try it.

t184256 ★★★★★
()

В долгую Nix лучше. Flatpak даёт лишь песочницу, а на долгой дистанции создаст фрагментацию похлеще 100500 различных дистрибутивов. Крупные дистрибутивы будут создавать свои runtime и на их основе создавать свои flatpak. Эту тенденцию уже сейчас можно проследить.

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

Крупные дистрибутивы будут создавать свои runtime и на их основе создавать свои flatpak. Эту тенденцию уже сейчас можно проследить.

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

И flatpak-builder, который не имеет фактически пакетной системы и предлагает собирать эдакий мини-LFS в песочницу, пусть и автоматизированно, этому сильно способствует тоже. У многих возникнет желание выкинуть flatpak-builder и создавать флатпаки просто перепаковкой из уже готовых классических deb/rpm репов.

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

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

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

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

Ну можно так, через –profile-name, тогда придется два configuration.nix файла иметь, в каждом со своим ядром? Теперь бы понять как их не дублировать.

Наверное, всю общую часть вынести в третий файл, и его инклудить в обе конфигурации.

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

А ты хотел один файл, с которого разом две конфигурации одного хоста? Это как-то чересчур для моей фантазии, ИМХО это уже надо будет NixOS патчить, переделывая опцию «выбранное ядро» в список выбранных ядер и чиня что сломается до самого загрузчика.

t184256 ★★★★★
()
Ответ на: комментарий от James_Holden
{ config, pkgs, ... }: {
  specialisation.latest = {
    inheritParentConfig = true;
    configuration = {
      system.nixos.tags = [ "latest" ];
      boot.kernelPackages = pkgs.linuxPackages_latest;
    };
  };
  specialisation.xanmod = {
    inheritParentConfig = true;
    configuration = {
      system.nixos.tags = [ "xanmod" ];
      boot.kernelPackages = pkgs.linuxPackages_xanmod;
    };
  };
}

Пользуйся.

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