LINUX.ORG.RU
ФорумTalks

В чем смысл nix/nixos?

 , воспроизводимость, поясните за,


0

1

Вот смотрю я на это дело, даже пробовал что nix, что целиком nixos. Я так и не понял нафиг оно вообще нужно? Объясните тупому. Пока оно выглядит как ещё один вариант управления конфигурацией систем, как ansible или его аналоги.

В чём там главная фишка, как заявляется? Типа есть некая конфигурация, которая задаёт состояние системы. Написал я некий конфиг, задал пакеты какие хочу чтобы были установлены, их настройки, все дела. Оно, скажем, работает отлично. Я доволен. Теперь, чтобы ни случилось, я смогу получить рабочую систему в один клик, правда? Развернуть это дело на другой машине, например.

Но, ведь это, мягко говоря не так. Версии-то не фиксируются никак. Т.е. то, что работает сейчас, не факт что заработает через какое-то время. Если мне нужна какая-то конкретная версия чего-либо, то я не смогу её жестко задать без костылей. Сейчас эту проблему «решают» делая несколько вариантов с версией в имени. Например: python39, python310 и т.д. Ещё можно зафиксировать ревизию nix-pkgs, но этим ты тупо фиксируешь всё вообще, а не конкретные пакеты, которые тебе важны.

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

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

Перемещено hobbit из general

★★★★☆

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

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

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

Проблема в том, что не существует «питон 3.11» как незыблемой неизменной сущности. Сегодня питон собирается с одной версией либц, а завтра с новой. Нужна полная информация о среде сборки и выполнения. В строчку ее нормально не записать, но никсос для этого использует хэши.

При этом процесс сборки программы с ее развитием обычно меняется, писать и поддерживать никс выражения, которые могут собрать любую заданную версию программы из когда-либо выпущенных - никакого человеческого ресурса не хватит. Поэтому в каждый момент времени в никсос для большинства программ есть дефолтное выражение, которое может собирать актуальные версии, по дефолту последнюю стабильную протестированную, и дефолтное attribute name без номера, который дергает его «как есть». Если ты оверрайднешь версию на другую - это может сработать, а может и нет, зависит от того, применимы ли к другой те шаги сборки, которые выполняет выражение. И наверняка рано или поздно это перестанет работать, даже если ты просто зафиксируешь актуальную на данный момент версию - когда само выражение изменится или вообще будет удалено в связи с превращением данного софта в заброшку.

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

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

Зачем в строчку? Записал от какого глибца питон зависит и всё.

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

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

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

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