Состоялся релиз дистрибутива NixOS 17.03, основанного на пакетном менеджере Nix и предоставляющего ряд собственных разработок, упрощающих настройку и сопровождение системы. Например, в NixOS используется единый файл системной конфигурации (configuration.nix), предоставляется возможность быстрого отката обновлений, присутствует поддержка переключения между различными состояниями системы, поддерживается установка индивидуальных пакетов отдельными пользователями (пакет ставится в домашнюю директорию), возможна одновременная установка нескольких версий одной программы. Размер полного установочного образа с KDE - 790 Мб, сокращённого консольного варианта - 315 Мб.

В создании нового выпуска приняли участие 625 разработчиков, подготовивших 12479 изменений. Основные новшества:

  • Добавлена возможность использования оверлеев для расширения или изменения пакетов Nixpkgs. Оверлеи могут применяться для добавления дополнительных слоёв, влияющих на сборку всех зависимых пакетов. Например, через оверлеи можно изменить используемую версию Python или задействовать альтернативный набор библиотек;
  • Окружение рабочего стола переведено с KDE 4 на KDE Plasma 5;
  • Обновлены версии системных компонентов: ядро Linux 4.9, Glibc 2.25, GCC 5.4.0, systemd 232, пакетный менеджер Nix 1.11.8;
  • В обвязке для запуска приложений с повышенными привилегиями (setuid wrapper) обеспечена возможность выборочного предоставления отдельных привилегий через capabilities;
  • X.org server обновлён о ветки 1.19, но из-за несовместимости на уровне ABI работа проприетарных драйверов ati_unfree возможна только с X.org server 1.17, а amdgpu-pro с 1.18;
  • Переписан код для организации кросскомпиляции;
  • Переработана функция overridePackages, вместо которой теперь предлагаются оверлеи;
  • По умолчанию задействован PHP 7.1;
  • Пакеты в репозитории nixpkgs теперь могут быть явно помечены как небезопасные, при наличии уязвимостей. Для установки таких пакетов требуется определить переменную окружения "NIXPKGS_ALLOW_INSECURE=1";
  • Запрещено повторное использование идентификаторов UID/GID, освободившихся после удаления пользователя или группы.

При использовании Nix пакеты устанавливаются в отдельное дерево директорий /nix/store или поддиректорию в каталоге пользователя. Например, пакет устанавливается как /nix/store/f6dvq84649f324959bh52r9vf7a0n3-firefox-52.0.0/, где "f6d4q8..." является уникальным идентификатором пакета, используемым для контроля зависимостей. Пакеты оформляются в виде контейнеров, содержащих необходимые для работы приложений компоненты.

Между пакетами возможно определение зависимостей, при этом для поиска наличия уже установленных зависимостей используется сканирование хэшей-идентификаторов в директории установленных пакетов. Возможна как загрузка готовых бинарных пакетов из репозитория (при установке обновлений к бинарным пакетам загружаются только delta-изменения), так и сборка из исходных текстов со всеми зависимостями. Коллекция пакетов представлена в специальном репозитории Nixpkgs.

Источник: http://www.opennet.ru/opennews/art.shtml?num=46297