Обсуждение:NixOS

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

отличие от других (императивных) дистрибутивов

[править код]

Я сейчас расскажу, о том, что мало где можно найти - о принципиальном отличии между обычным линуксом и nixos.


В никсос есть некий механизм хранения и связки пакетов в поколение - состояние в текущий момент. Отдельные куски не видят друг-друга, если явно не запросят связать себя с другим. Тут очень похоже на GoboLinux и на самом деле это ОЧЕНЬ хорошо, потому что нельзя просто так пойти и поломать что-то в системе. Любое изменение состояния програмы, как и взаимодействия между ними нужно внести в общий рецепт. Некоторые жалуются, что классические программы, ожидающие кучу файлов (FHS) не смогут запустится - но это не так; можно предоставить видимость этим програмам нужных компонентов прописав их размещение прямо в них на этапе сборки (для каждого поколения оно индивидуально), либо можно создать окружение где все нужные компоненты будут связаны и лежать в ожидаемом месте. Так делает например скрипт steam-run.


Еще кое-что крайне важное. У nixos есть главный скрипт, формирующий определённые блоки програм, он формирует ядро системы. У этой системы есть загрузкчик, есть система сервисов, есть ядро (разумеется), есть определение файловой системы, есть стандартный софт, есть переменные окружения определяющие настройки. То есть, скрипт пользователя добавляет свои ОТКЛОНЕНИЯ от главного либо привносит в него блоки. Эта система не может работать на простом уровне програм, у которых есть настройки, - а как комок, с кучей настроек, куда пользователь добавляет свои "отклонения" под свои нужды.


Классический же линукс, например Gentoo, LFS, Arch не строится через такой блок ядро и саморазворачиваемый рецепт. Мы имеем диск (или несколько), на который автоматическим либо ручным способом ставим загрузчик (настравивая его), ставим ядро (и правим его под свои нужды), систему сервисов (и правим её под свои нужды), системный софт (и правим его под свои нужды). Мы имеем как бы набор кубиков, которые складываем по очереди руками либо автоматом, но всегда в ту же комнату, где и работаем. Фактически отсутствует чёткое чистое разделение "рецепт построения" и "результат", потому что результат непосредственно влияет на рецепт: с самом начале компилятор с заводскими настройками будет собирать по рецепту нужный нам компилятор немного подругому, чем уже собранный по рецепту компилятор будет собирать себя же. Поэтому нужно несколько прогонов и каждый из этих прогонов будет иметь разный результат, но внешне это не как не отличается. В nixos же каждый результат хранится в своей изоляции и можно затребовать использовать тот или иной для своей цели.


Если всё упростить, то nixos это управляемое окружение, сцепливающее нужные компоненты в результат и затем работающее из него. А обычный linux - набор блоков со своими индивидуальными настройками и они разворачиваются в той же комнате, что их разворачивает. 81.173.170.71 00:41, 24 марта 2023 (UTC)[ответить]