LINUX.ORG.RU
ФорумTalks

Snap vs nix

 ,


0

2

Вопрос нейросети: Преимущества Nix перед Snap.

Ответ:

Функциональное управление пакетами:

  • Воспроизводимость:
  • Поддержка нескольких версий:
  • Декларативные конфигурации: Nix позволяет вам декларативно определять конфигурацию вашей системы. Вы можете указать всю свою операционную систему или среду разработки в одном выражении Nix, что упрощает управление и обновления.
  • Атомарные обновления и откаты:
  • Нет необходимости в привилегиях root: Пользователи могут устанавливать и управлять пакетами в своих домашних каталогах без необходимости привилегий root. Это делает его хорошим выбором для общих сред или для пользователей, у которых нет административного доступа.
  • Расширенная настройка: Nix позволяет расширенную настройку пакетов во время установки с помощью своего языка выражений. Вы можете легко изменять зависимости, флаги компиляции и другие конфигурации в соответствии с вашими конкретными потребностями.
  • Интеграция с NixOS:
  • Улучшенное управление зависимостями: Это предотвращает «ад зависимостей», который может возникнуть в других системах, и гарантирует, что все зависимости будут удовлетворены без конфликтов.
  • Изолированные среды сборки:

В чём проблема? А проблема в том, что это всё враньё от начала и до конца. Да, nix это умеет, но и snap умеет буквально всё то же самое. Ну кроме интеграции с NixOS. И «нет необходимости в привилегиях root» - что, вообще-то, дыра.

Ещё часто snap ругают за жирноту. Ну, вот я в качестве теста пересел на NixOs и знаете что? Потребление ОЗУ по сравнению со snap+pacman-based ОС одинаковое. Вообще разницы никакой.

Так всё-таки, какие преимущества snap перед nix?

★★★★★

Последнее исправление: next_time (всего исправлений: 1)

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

Nix ценится вовсе не за тонкоту или толстоту, а за декларативный подход к описанию того, что ты хочешь получить от системы и повторяемость этой конфигурации на 99%.

Это декларативный vs императивный подход.

В декларативном, ты заявляешь, что ты хочешь, чтобы у тебя в системе стоял KDE, и чтобы был установлен фаерфокс, а в фаерфокс был такой-то конфиг в user.js.

В императивном, ты ставишь дистрибутив с набором пакетов KDE, затем ставишь пакет с фаерфоксом, затем либо скриптом, либо ручками, императивненько, копируешь свой шаблон user.js в нужное место.

Вроде результат тот же самый, так какая нахер разница? Одна даёт, другая дразнится?

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

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

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

/thread

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

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

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

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

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

Я всё же, тоже укажу на то, что ТС первый начал…

Зачем вообще читать комментарии, если не понимать сути поста?

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

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

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

У никса, как раз, плохо с повторяемостью в плане установки пакета на любую конфигурацию. Например DeepIn DE и KDE не дают установить друг друга одновременно - на NixOS возникают конфликты установки пакетов. Хотя почти любой диструбутив линукса совершенно спокойно даст поставить несколько DE параллельно. У DE же буквально вообще нечему друг с другом конфликтовать, лол. В этом вся их суть, что они независимы.

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

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

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

Это какой-то edge-case. Я бы ни за что не стал устанавливать сразу 2 DE. Меня уже коробит от необходимости тянуть kf6 в GNOME, например.

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

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

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

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

2025 год. У меня сейчас на компе (убунта) вся система целиком, вместе с двумя DE, IDE, компиляторами, двумя браузерами, пачкой снап пакетов и т.д. весит меньше, чем один единственный фильм в блюрей качестве. К чему экономить на спичках?

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

Вот это вот враньё, например:

«Пакеты в Nix легковесны, так как используют общие библиотеки и ресурсы только тогда, когда это необходимо. Зависимости не дублируются, если они уже существуют в системе.» - это верно только для NixOs. Когда никс сам по себе, он точно также пачку зависимостей притянет, как и снап. И причём гарантированно притянутое будет жрать места больше, чем снап.

Например, в Nix можно откатить изменения на уровне всей системы, а не только отдельных пакетов. – только для НиксОС

Nix-пакеты могут работать на различных Unix-подобных системах, включая macOS и даже Windows через WSL – И снап тоже может. И макОС и виндоуз.

Ну и так далее.

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

Никс в том числе позволяет устанавливать пакеты без сорсов, чисто бинарники, снап - только бинарники. Вот меня интересует: бинарный пакет, установленный, скажем, в OpenSuSe, будет обладать какими-то преимуществами с точки зрения пользователя перед таким же пакетом snap?

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

Никс, гикс это вообще какая-то шиза для нетакусиков, ужас.

Эта как ты говоришь «шиза» активно идёт в энтерпрайз и девопс.

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

«Пакеты в Nix легковесны, так как используют общие библиотеки и ресурсы только тогда, когда это необходимо. Зависимости не дублируются, если они уже существуют в системе.» - это верно только для NixOs.

Ну так это же логично, что дистрибутив заточенный на работу с Nix, хорошо работает с Nix и не дублирует зависимости, нет?

Например, в Nix можно откатить изменения на уровне всей системы, а не только отдельных пакетов. – только для НиксОС

Потому что условная убунту и не предполагает работу с Nix

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

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

Спасибо, я знаю.

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

Вот меня интересует: бинарный пакет, установленный, скажем, в OpenSuSe, будет обладать какими-то преимуществами с точки зрения пользователя перед таким же пакетом snap?

Будет обладать преимуществом в виде отсутствия необходимости монтировать loopback образ.

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

В остальном, нет. Особенно, если не установлен AppArmor.

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

Но вопрос никакого отношения к NixOS не имеет. Вопрос в преимуществах пакетного менеджера nix перед snap на обычных системах.

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

идёт в энтерпрайз и девопс.

Реально? мне казалось, что nixos и guix это скорее исследовательские проекты. Не для широкого применения.

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

Не, «nix» - именно как язык конфигураций оказался гораздо гибче чем хэшикорповский hcl, и на данный момент уже есть hercules ci https://hercules-ci.com, есть девопс-контора https://determinate.systems которая на нём деплои формируют. Во многих опсорсных репах можно заметить как минимум shell.nix или flake.nix, поскольку nix позволяет не засирая систему быстренько собрать для разработки сандбокс с выбранными версиями нужных библиотек, яп и т.д. Сам сейчас пользую nix в дебиане - офигенно удобная штука.

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

Но без поддержки приложений с плагинами

С чего вдруг?

и FHS

Либо в конфиге на всю систему выставляешь

environment.fhs.enable = true;
environment.fhs.linkLibs = true;
environment.lsb.enable = true;

Либо для того пакета который без fhs жить не может

(pkgs.buildFHSUserEnv {
    name = "персональный ад для FHS-дрочеров";
    runScript = "bash";
    targetPkgs = pkgs: with pkgs; [ <нужные пакеты> ];
  })

И он слинкует всё что нужно

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

сам лично не проверял

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

в общем, если тебе надо распространять софт для кого-то, кто будет его дальше заворачивать - остановитесь на .deb. И воткните snap только, если это клиентский софт с gui.

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

https://discourse.nixos.org/t/running-locally-built-qt-apps/29984/4

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

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

либо в конфиге на всю систему выставляешь

ну м.б. надо будет попробовать

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

ну, я не считаю это недостатком вообще - если мне понадобится распространять софт через докер, то зачем там воообще пакеты? - хоть снап, хоть апт, хоть что - просто в готовую систему закинул бинарники и всё

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

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

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

Но конкретно в том случае, мне хотелось потыкать DeepIn, не слезая особо c KDE.

next_time ★★★★★
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)