stringtranslate.com

НикОС

NixOS — это бесплатный дистрибутив Linux с открытым исходным кодом, основанный на менеджере пакетов Nix . NixOS настраивается с использованием составных модулей и опирается на пакеты, определенные в проекте Nixpkgs. Рецепты и конфигурации пакетов написаны на специально созданном «языке Nix», который поставляется с менеджером пакетов Nix.

NixOS использует неизменяемый дизайн и модель атомарного обновления. [5] Использование декларативной системы конфигурации обеспечивает воспроизводимость и переносимость. [6]

История

В 2003 году Eelco Dolstra запустила Nix как исследовательский проект. [7] [8] Долстра говорит, что целью проекта было создание системы для правильного развертывания программного обеспечения. [9] В 2006 году Армейн Хемель представил NixOS как результат своей магистерской диссертации. [10] В 2015 году в Нидерландах был основан NixOS Foundation с целью поддержки таких проектов, как NixOS, которые реализуют чисто функциональную модель развертывания. [11]

Версии

История версий релизов

NixOS публикует стабильные выпуски два раза в год, примерно в конце мая и конце ноября. [12] [13] [14]

Функции

Графический установщик NixOS

Декларативная модель конфигурации

В NixOS вся операционная система, включая ядро , приложения, системные пакеты и файлы конфигурации , создается менеджером пакетов Nix на основе описания на языке Nix. Создание новой версии не перезапишет предыдущие версии. [15]

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

{ ботинок . погрузчик . жратва . устройство  =  "/dev/sda" ;  файловые системы . "/" . устройство  =  "/dev/sda1" ;  услуги . сшд . включить  =  правда ; }

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

Надежные и атомарные обновления

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

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

Откаты

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

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

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

Модель на основе исходного кода с двоичным кешем

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

Последовательность

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

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

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

Выполнение

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

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

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

Прием

Джесси Смит, рассматривая NixOS 15.09 для DistroWatch Weekly в 2015 году, [20] написал:

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

В обзоре NixOS 21.11 «Porcupine» за 2022 год, опубликованном в журнале Full Circle, сделан вывод:

В целом NixOS Gnome 21.11 производит впечатление серьезного, аккуратного и элегантного. Если вы являетесь поклонником немодифицированного рабочего стола Gnome, то здесь вам есть что понравиться. Недостатком этого дистрибутива является крутая кривая обучения управлению пакетами, включая обновления и тому подобное. Независимо от того, из какого дистрибутива вы родом, вам придется многому научиться, чтобы заставить Nix хорошо работать в командной строке. [21]

Обзор NixOS 22.11 «Енот» Лиама Провена из The Register :

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

Примечания

  1. ^ В NixOS используются различные другие языки программирования (по состоянию на декабрь 2023 г.).
  2. ^ Для программного обеспечения, входящего в состав NixOS, используются различные другие лицензии, например, ядро ​​​​Linux лицензируется по лицензии GNU GPL версии 2.0 (по состоянию на декабрь 2023 г.).

Смотрите также

Рекомендации

  1. ^ "Сообщество - nixos.org" . Архивировано из оригинала 23 сентября 2022 г. Проверено 23 сентября 2022 г.
  2. ^ «Фундамент NixOS/nixos — Github» . Гитхаб . Архивировано из оригинала 23 сентября 2022 г. Проверено 23 сентября 2022 г.
  3. ^ ""Выпущена NixOS 23.11"". 29 ноября 2023 г.
  4. ^ «nixpkgs/КОПИРОВАНИЕ в master · NixOS/nixpkgs · GitHub» . Гитхаб.com . Проверено 19 сентября 2015 г.
  5. ^ «Что такое неизменяемый дистрибутив Linux и стоит ли его использовать?» HowToGeek.com. Архивировано из оригинала 07 декабря 2023 г. Проверено 7 декабря 2023 г.
  6. ^ "DistroWatch.com: NixOS" . Distrowatch.com . Проверено 19 сентября 2015 г.
  7. ^ Долстра, Eelco (2003). «Интеграция разработки и развертывания программного обеспечения» (PDF) . Управление конфигурацией программного обеспечения . Конспекты лекций по информатике. Том. 2649. стр. 102–117. дои : 10.1007/3-540-39195-9_8. ISBN 978-3-540-14036-8. Архивировано из оригинала (PDF) 21 апреля 2019 г.
  8. ^ Долстра, Eelco (2006). Чисто функциональная модель развертывания программного обеспечения (PDF) (доктор философии). Архивировано из оригинала (PDF) 9 июня 2019 г.
  9. ^ Джоната Лоример. «Тезис Никса».
  10. ^ Долстра, Eelco. «Чисто функциональное управление конфигурацией системы». www.usenix.org . Проверено 4 марта 2024 г.
  11. ^ "Фонд Stichting NixOS" . Никсос.орг . Проверено 19 сентября 2015 г.
  12. ^ «Управление». Никсос.орг. Архивировано из оригинала 16 августа 2020 г. Проверено 28 августа 2020 г.
  13. ^ «Nix RFCS (Запрос комментариев)» . Гитхаб . 17 декабря 2021 г.
  14. ^ «Объявления о выпуске» . Никсос.орг . Проверено 9 декабря 2023 г.
  15. ^ Долстра, Eelco; Хемель, Армейн (7 мая 2007 г.). Чисто функциональное управление конфигурацией системы (PDF) . 11-й семинар USENIX «Актуальные темы в операционных системах». Сан-Диего, Калифорния, США: Ассоциация USENIX. Архивировано (PDF) из оригинала 10 июля 2020 г. Проверено 19 июля 2023 г.
  16. ^ «О NixOS». Никсос.орг . Проверено 19 сентября 2015 г.
  17. ^ ван дер Бург, Сандер; Долстра, Eelco; де Йонге, Мерейн (20 октября 2008 г.). Атомная модернизация распределенных систем (PDF) . 1-й международный семинар по актуальным темам обновления программного обеспечения. Нэшвилл, Теннесси, США: Ассоциация вычислительной техники. дои : 10.1145/1490283.1490294. ISBN 978-1-60558-304-4. Архивировано (PDF) из оригинала 13 ноября 2021 г. Проверено 19 июля 2023 г.
  18. ^ Руководство NixOS — Откат изменений конфигурации, Nixos.org
  19. ^ Долстра, Eelco (07.11.2005). Безопасное совместное использование ненадежными пользователями в прозрачной исходной/двоичной модели развертывания (PDF) . 20-я Международная конференция IEEE/ACM по автоматизированной разработке программного обеспечения. Лонг-Бич, Калифорния, США: Ассоциация вычислительной техники. дои : 10.1145/1101908.1101933. ISBN 978-1-58113-993-8. Архивировано (PDF) из оригинала 13 ноября 2021 г. Проверено 19 июля 2023 г.
  20. DistroWatch Weekly, выпуск 637, 23 ноября 2015 г.
  21. Хант, Адам (28 октября 2022 г.). «Обзор — NixOS» (PDF) . Журнал «Полный круг» . Архивировано (PDF) из оригинала 28 октября 2022 года . Проверено 28 октября 2022 г.
  22. ^ Доказано, Лиам. «NixOS 22.11 «Енот»: как доказательство концепции, вы можете делать что-то с операционными системами».
  23. ^ "В память: Элко Виссер (1966-2022)" .

Внешние ссылки