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

NixOS - это дистрибутив Linux, построенный на основе диспетчера пакетов Nix . Он использует декларативную конфигурацию и позволяет надежно обновлять систему. [3] Предлагаются две основные ветки: текущий стабильный выпуск и нестабильный после последней разработки. Хотя NixOS начиналась как исследовательский проект [4], это полностью функциональная и удобная операционная система. [ необходима цитата ] В NixOS есть инструменты, предназначенные для DevOps и задач развертывания. [5] [6]

История [ править ]

NixOS стартовал как исследовательский проект Eelco Dolstra в 2003 году. [4] [7]

Штихтинг NixOS была основана в 2015 году и направлен на поддержку проектов , таких как NixOS , которые реализуют чисто функциональную модель развертывания. [8]

Версии [ править ]

NixOS выпускается постепенно, два раза в год. [9] Раньше это происходило примерно в марте и сентябре, но, начиная с 21.05, NixOS нацелена на май и ноябрь. [10] Каждый номер версии имеет следующий формат: «ГГ.ММ».

Например: «20.03» - это версия, выпущенная примерно в марте 2020 года.

Кроме того, каждая версия имеет название, например «Мархур» для выпуска 20.03.

Особенности [ править ]

Декларативная модель конфигурации системы [ править ]

В NixOS вся операционная система - ядро , приложения, системные пакеты, файлы конфигурации и т. Д. - создается менеджером пакетов Nix из описания на функциональном языке сборки. Это означает, что создание новой конфигурации не может перезаписать предыдущие конфигурации. [12]

Система NixOS настраивается путем записи спецификации функциональных возможностей, которые пользователь хочет использовать на своей машине, в глобальном файле конфигурации. Например, вот минимальная конфигурация машины, на которой запущен демон SSH: [13]

{ boot . погрузчик . жратва . устройство =  "/ dev / sda" ;  файловые системы . "/" . устройство =  "/ dev / sda1" ;  услуги . sshd . enable =  true ; }

После изменения файла конфигурации систему можно обновить с помощью nixos-rebuild switchкоманды. Эта команда делает все необходимое для применения новой конфигурации, включая загрузку и компиляцию пакетов и создание файлов конфигурации.

Надежные обновления [ править ]

Поскольку файлы Nix являются чистыми и декларативными , их оценка всегда дает один и тот же результат, независимо от того, какие пакеты или файлы конфигурации находятся в системе. Таким образом, обновление системы так же надежно, как и переустановка с нуля.

Атомные улучшения [ править ]

NixOS использует транзакционный подход к управлению конфигурацией, делая изменения конфигурации, такие как обновления, атомарными . Это означает, что если обновление до новой конфигурации будет прервано - скажем, произойдет сбой питания на полпути - система все равно будет находиться в согласованном состоянии: она загрузится либо в старой, либо в новой конфигурации. В других системах машина может оказаться в несогласованном состоянии и даже больше не загружаться. [14]

Откаты [ править ]

Если после обновления системы новая конфигурация нежелательна, ее можно откатить с помощью специальной команды ( nixos-rebuild switch --rollback). Каждая версия конфигурации системы автоматически отображается в меню загрузки системы. Если новая конфигурация дает сбой или не загружается должным образом, можно выбрать более старую версию. Откаты - это легкие операции, не связанные с восстановлением файлов из копий.

Воспроизводимые конфигурации системы [ править ]

Модель декларативной конфигурации NixOS позволяет легко воспроизвести конфигурацию системы на другом компьютере. Копирование файла конфигурации на целевой компьютер и запуск команды обновления системы генерирует ту же конфигурацию системы (ядро, приложения, системные службы и т. Д.), За исключением частей системы, не управляемых диспетчером пакетов, таких как пользовательские данные.

Исходная модель с двоичными файлами [ править ]

Язык сборки Nix, используемый NixOS, определяет, как собирать пакеты из исходного кода. Это позволяет легко адаптировать систему к потребностям пользователя. Однако, поскольку сборка из исходного кода является медленным процессом, менеджер пакетов автоматически загружает предварительно созданные двоичные файлы с кэш-сервера, когда они доступны. Это дает гибкость модели управления пакетами на основе исходного кода с эффективностью бинарной модели. [15]

Последовательность [ править ]

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

Многопользовательское управление пакетами [ править ]

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

Реализация [ править ]

NixOS основан на диспетчере пакетов Nix, который хранит все пакеты изолированно друг от друга в хранилище пакетов.

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

Следствием этого является то, что NixOS не следует Стандарту иерархии файловой системы . Единственное исключение - это символическая ссылка /bin/shна версию bash в магазине Nix (например:) /nix/store/s/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-bash-4.3.43/; и хотя в NixOS есть /etcкаталог для хранения общесистемных файлов конфигурации, большинство файлов в этом каталоге являются символическими ссылками на сгенерированные файлы, /nix/storeтакие как /nix/store/s2sjbl85xnrc18rl4fhn56irkxqxyk4p-sshd_config. Отсутствие использования глобальных каталогов, таких как /binчасть того, что позволяет сосуществовать нескольким версиям пакета.

Прием [ править ]

Джесси Смит сделал обзор NixOS 15.09 для DistroWatch Weekly. [16] Смит писал:

Мне очень нравится, как NixOS избавляет от беспокойства по поводу обновления пакетов, помещая каждое изменение в свое собственное «поколение», и я обнаружил, что с точки зрения конечного пользователя NixOS работает так же, как и любой другой дистрибутив Linux. Настройка NixOS не для новичков, и я не думаю, что NixOS предназначена для использования в качестве настольной операционной системы общего назначения. Но NixOS дает нам полезную площадку для изучения диспетчера пакетов Nix, и я думаю, что это очень интересная технология, которая заслуживает дальнейшего изучения и принятия в дополнительных дистрибутивах.

В DistroWatch Weekly также есть обзор NixOS 17.03, написанный Иваном Сандерсом. [17]

См. Также [ править ]

  • Диспетчер пакетов Nix - диспетчер пакетов, на котором основана NixOS.
  • GNU Guix System - операционная система, построенная на GNU Guix , вдохновленная Nix [18]

Ссылки [ править ]

  1. ^ "Релиз 20.09 (" Соловей ", 2020-10-27)" . 2020-10-27 . Проверено 28 октября 2020 .
  2. ^ "nixpkgs / КОПИРОВАНИЕ на master · NixOS / nixpkgs · GitHub" . Github.com . Проверено 19 сентября 2015 .
  3. ^ "DistroWatch.com: NixOS" . Distrowatch.com . Проверено 19 сентября 2015 .
  4. ^ a b Dolstra, Eelco. «Интеграция создания программного обеспечения и развертывания программного обеспечения» (PDF) . Конспект лекций по информатике . 2649 : 102–117. Архивировано из оригинального (PDF) на 21.04.2019.
  5. ^ «NixOps - Инструмент развертывания облака NixOS» . Nixos.org . Проверено 19 сентября 2015 .
  6. ^ "Disnix" . Nixos.org . Проверено 19 сентября 2015 .
  7. ^ Dolstra, Eelco (2006). Модель развертывания чисто функционального программного обеспечения (PDF) (доктор философии). Архивировано из оригинального (PDF) на 2019-06-09.
  8. ^ "Stichting NixOS Foundation" . Nixos.org . Проверено 19 сентября 2015 .
  9. ^ «Управление» . Nixos.org . Проверено 28 августа 2020 .
  10. ^ https://github.com/NixOS/rfcs/blob/master/rfcs/0080-nixos-release-schedule.md
  11. ^ «Приложение Б. Примечания к выпуску» . Nixos.org . Проверено 28 августа 2020 .
  12. ^ Dolstra, Eelco; Хемель, Армийн (2007). «Чисто функциональное управление конфигурацией системы» (PDF) . Архивировано из оригинального (PDF) на 2019-07-06. Цитировать журнал требует |journal=( помощь )
  13. ^ «О NixOS» . Nixos.org . Проверено 19 сентября 2015 .
  14. ^ ван дер Бург, Сандер; Долстра, Eelco; де Йонге, Мерин (2008). «Атомарная модернизация распределенных систем» (PDF) . Архивировано из оригинального (PDF) на 2019-01-15. Цитировать журнал требует |journal=( помощь )
  15. ^ Dolstra, Eelco (2005). «Безопасное совместное использование между ненадежными пользователями в прозрачной исходной / двоичной модели развертывания» (PDF) . Архивировано из оригинального (PDF) 26 сентября 2019 года. Цитировать журнал требует |journal=( помощь )
  16. ^ DistroWatch Weekly, выпуск 637, 23 ноября 2015
  17. ^ DistroWatch Weekly, выпуск 712, 15 мая 2017
  18. ^ "О программе - GuixSD" . www.gnu.org . Проверено 3 мая 2018 .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • NixOS в DistroWatch
  • Репозиторий пакетов Nix
  • Неофициальная вики NixOS