Готовясь к выпуску новостного дайджеста (планирую начать уже со следующей недели) я стал мониторить события в мире Linux и Opensource. Одна из новостей касалась выпуска новой версии дистрибутива NixOS, который меня заинтересовал, и про который захотел рассказать подписчикам и читателям.
Вначале пакетный менеджер - потом дистрибутив
Фактически NixOS является системой-надстройкой над пакетным менеджером Nix, использующем свой формат установочных пакетов. То есть, он пытается взобраться на ту же планку, где уже находятся apt, pacman, dnf, yum и прочие известные пакетные менеджеры.
При этом, пакетный менеджер Nix можно использовать в любой системе, не только в NixOS. Доступна поддержка не только дистрибутивов Linux, но и macOS, а также системы WSL в Windows.
Все в одном файле
Особенность NixOS в том, что это декларативный дистрибутив. То есть, вся его конфигурация (запуск ядра, менеджер входа в систему, запускаемые сервисы, данные о пользователях и пр.) хранится в одном конфигурационном файле (/etc/nixos/configuration.nix). При этом каждый элемент системы можно разместить в отдельном конфиге и подключить их все в одном общем конфигурационном файле. Все зависит от желания пользователя и сложности его системы.
Один пакет - одна директория
Каждый устанавливаемый пакет через менеджер Nix хранится в отдельной папке. Получается, что каждая программа изолирована от другой. Можно установить несколько версии одного и того же пакета, каждая займет свою папку в системе и не будет мешать другим версиям. При желании в конфигурационном файле можно прописать с какой конкретной версией пакета системе нужно взаимодействовать.
Каждая «папка с программой» содержит еще и закодированный перечень зависимостей и библиотек. Выходит так, что вы берете программу и можете с легкостью менять ей зависимости и библиотеки, с которыми она должна взаимодействовать, при этом другим установленным программам и всей системе подобная смена версий зависимостей и библиотек не принесет никакого вреда. У NixOS отсутствуют «классические» проблемы других дистрибутивов: неверные, поломанные или ранее удаленные зависимости, которые полностью ломают дистрибутив или другие пакеты.
При обновлении новая версия устанавливается в новую папку, а не затирает старую. Значит, в любой момент можно откатиться на предыдущую версию программы, сохранив и обновление, и ту версию, которая в данный момент необходима.
Похоже на SNAP или Flatpak
С первого взгляда может показаться, что NixOS использует ту же технологию, что SNAP и Flatpak. Но суть работы NixOS и пакетного менеджера Nix не имеет ничего общего с контейнеризацией, что обеспечивает быстродействие в запуске программ и работе системы.
Почему NixOS так нравится системным администраторам?
Вы настраиваете конфигурационный файл один раз и потом просто используете его на множестве серверов, где установлен NixOS. Поэтому дистрибутив популярен у системных администраторов. Чтобы получить готовую «машину» достаточно скопировать конфиг и выполнить одну-две команды. В случае сбоя в системе откатиться назад тоже просто, так как необходимый файл рядом на флэшке или в репозитории на Github.
Все ли так просто и легко?
Естественно на такое количество преимуществ должно быть что-то в минус. Это высокий порог входа в NixOS. Чтобы создавать собственный конфигурационный файл нужно вначале освоить синтаксис и базовые конструкции для описания того, что вы желаете видеть в дистрибутиве. Просто так установить и начать использовать NixOS не получится. Но зато если вы освоите его, то потом сможете с легкостью управлять дистрибутивом по своему желанию.
Итог
Скачать установочный образ NixOS можно с официального сайта. Доступны как серверный вариант установки, так и имеется поддержка популярных сред рабочего стола и тайлинговые оконные менеджеры. Кроме того, существует специальный образ предназначенный для виртуальных машин.
В общем, дистрибутив необычный и не на слуху, несмотря на его особенности. Напишите в комментариях сталкивались ли вы с ним и если нет, то не хотите ли попробовать.
Ну и конечно не забываем про лайки и подписки.