Никс (менеджер пакетов)
Оригинальный автор(ы) | Элко Долстра |
---|---|
Первоначальный выпуск | 15 июня 2003 г |
Стабильная версия | 2.22.1 [1] ![]() |
Репозиторий | |
Написано в | С++, [2] Перл, [2] сценарий оболочки, [2] Никс, [2] делать, [2] автоконф, [2] Ржавчина, [2] С, [2] Расширяемый язык разметки [2] ![]() |
Платформа | Linux , Unix-подобный |
Тип | чисто функциональный менеджер пакетов, бесплатное программное обеспечение, язык программирования ![]() |
Лицензия | Меньшая стандартная общественная лицензия GNU, версия 2.1 [3] ![]() |
Веб-сайт | Никсос |
Nix — кроссплатформенный менеджер пакетов для Unix-подобных систем, изобретенный в 2003 году. [4] от Элко Долстра.
Подход
[ редактировать ]Менеджер пакетов Nix использует модель, в которой каждый пакет программного обеспечения устанавливается в уникальные каталоги с неизменяемым содержимым. Эти имена каталогов соответствуют криптографическим хешам , которые учитывают все зависимости пакета, включая другие пакеты, управляемые Nix. В результате имена пакетов Nix идентифицируют содержимое, поскольку пакеты с одинаковым именем будут иметь одинаковые входные данные и одну и ту же платформу сборки и, следовательно, одинаковый результат сборки. [5]
Выполнение
[ редактировать ]Рецепты пакетов для Nix написаны на специально созданном «языке Nix», декларативном, чисто функциональном , лениво вычисляемом , динамически типизированном языке программирования. [6] Отличительными особенностями языка Nix являются строки с «контекстом», строковая интерполяция, первоклассные пути файловой системы и «строки с отступом», которые в совокупности позволяют лаконично выражать зависимости между данными файловой системы при указании содержимого новых файлов.
Зависимости между файлами, объявленные на языке Nix, автоматически отслеживаются и сохраняются в «хранилище Nix». [7] Новые файлы в магазине Nix создаются посредством «дериваций». Деривация — это постоянная структура данных, которая определяет исполняемый файл, аргументы и переменные среды для ее вызова (см. execve
) и другие файлы для чтения из магазина Nix. Затем исполняемый файл запускается в песочнице, которая запрещает доступ ко всему, кроме явно указанных входных файлов, и разрешает запись только по назначенному выходному пути. Nix сохраняет информацию о зависимостях в выходных файлах, сканируя отличительные хэши, используемые для имен каталогов пакетов. [5]
Автоматическое отслеживание ссылок обеспечивает целостность пакетов, даже когда они перемещаются между машинами. Он также позволяет собирать мусор из неиспользуемых пакетов, когда от них не зависит ни один другой пакет. За счет увеличения требований к памяти все обновления в Nix гарантированно будут атомарными и способны к эффективному откату . Уникальные имена каталогов позволяют устанавливать множество пакетов с разными версиями общих библиотек и, как утверждается, устраняют так называемый ад зависимостей . [8] Это также позволяет нескольким пользователям безопасно устанавливать программное обеспечение в одной системе без прав администратора . В результате модель управления и развертывания пакетов Nix предлагает более надежные, воспроизводимые и переносимые пакеты. [5] [9]
Nix имеет полную поддержку Linux , macOS и WSL и может безопасно устанавливаться параллельно с другим менеджером пакетов.
Никспкгс
[ редактировать ]Nixpkgs — это репозиторий пакетов, созданный на основе менеджера пакетов Nix. По данным Repology , по состоянию на июль 2024 года он содержит более 110 000 пакетов. [10] и имеет большее количество обновленных пакетов, чем любой другой репозиторий пакетов. [11] Nixpkgs поддерживает следующие архитектуры: x86_64-linux, aarch64-linux, x86_64-darwin и aarch64-darwin. Пакеты для этих архитектур регулярно создаются с использованием службы непрерывной интеграции под названием Hydra. [12] и результаты этих сборок загружаются в общедоступный двоичный кеш. [13] Когда Nix устанавливает пакет, он проверяет этот кеш и загружает двоичный пакет, чтобы избежать его локальной сборки.
Nixpkgs разрабатывается в одном репозитории Git на GitHub. [14] Помимо пакетов, он также содержит исходный код NixOS .
Проекты с использованием Nix
[ редактировать ]НикОС [15] — это дистрибутив Linux , который использует Nix для управления всей конфигурацией системы, включая ядро Linux. [16]
Nix используется для упаковки и распространения программного обеспечения в LHCb эксперименте CERN . [17] Nix лежит в основе распределенных платформ разработки программного обеспечения Replit [18] и Google IDX . [19]
Форки и альтернативные реализации
[ редактировать ]Исходная реализация Nix от Eelco Dolstra, написанная на C++ , для двусмысленности называется CppNix. [20]
В 2021 году было объявлено о повторном внедрении под названием Tvix . [21] с целью обеспечения модульности, полной совместимости с Nixpkgs и улучшения производительности оценщика. По состоянию на 2024 год у Tvix есть оценщик. [22] и реализация магазина, [23] хотя авторы не считают проект пока стабильным или готовым к использованию в производстве. [24] [ нужен неосновной источник ] Tvix написан в основном на Rust . [25]
В 2024 году команда волонтеров выпустила первую версию Lix . [26] [ нужен неосновной источник ] форк CppNix, ориентированный на корректность и совместимость и использующий систему автоматизации сборки Meson . Проект намерен постепенно переписать части кода на Rust. [26]
См. также
[ редактировать ]- GNU Guix : еще один декларативный менеджер пакетов и ранний клон Nix, использующий GNU Guile для настройки и настройки.
- Maak : утилита автоматизации сборки, похожая на make и ранний предшественник Nix.
- Автоматизация Runbook
Ссылки
[ редактировать ]- ^ «Выпуск 2.22.1» . 10 мая 2024 г. Проверено 17 мая 2024 г.
- ^ Jump up to: а б с д и ж г час я «Проект Nix с открытым исходным кодом на Open Hub: страница языков» . Открыть хаб . Проверено 18 мая 2024 г.
- ^ «nix/КОПИРОВАНИЕ на мастере» . 26 апреля 2006 г. Проверено 18 мая 2024 г.
- ^ Долстра, Eelco (2003). «Интеграция разработки и развертывания программного обеспечения» (PDF) . Управление конфигурацией программного обеспечения . Конспекты лекций по информатике. Том. 2649. стр. 102–117. дои : 10.1007/3-540-39195-9_8 . ISBN 978-3-540-14036-8 . Архивировано из оригинала (PDF) 21 апреля 2019 г.
- ^ Jump up to: а б с Долстра, Eelco; де Йонге, Мерейн; Виссер, Eelco (ноябрь 2004 г.). «Nix: безопасная и свободная от политик система развертывания программного обеспечения» (PDF) . LISA '04: Материалы 18-й конференции USENIX по системному администрированию . стр. 79–92 . Проверено 11 июля 2023 г.
- ^ «Справочное руководство Nix: язык Nix» . Проверено 4 марта 2024 г.
- ^ «Справочное руководство Nix: Магазин Nix» . 4 марта 2024 г.
- ^ Принс, Петр; Суреш, Джива; Долстра, Eelco (22 декабря 2008 г.). «Nix исправляет ад зависимостей во всех дистрибутивах Linux» . Linux.com . Проверено 11 июля 2023 г.
- ^ Долстра, Eelco (2006). Чисто функциональная модель развертывания программного обеспечения (PDF) (доктор философии). Утрехтский университет . Проверено 11 июля 2023 г.
- ^ «Информация о нестабильном репозитории Nixpkgs — Репология» .
- ^ «Статистика репозитория — Репология» .
- ^ «RFC 0046 — Уровни поддержки платформы» . Гитхаб .
- ^ «Официальный двоичный кеш NixOS» .
- ^ «Репозиторий Nixpkgs на GitHub» . Гитхаб .
- ^ «Nix и NixOS | Воспроизводимые сборки и развертывания» . nixos.org .
- ^ Долстра, Eelco; Лё, Андрес; Пьеррон, Николя (сентябрь 2008 г.). NixOS: чисто функциональный дистрибутив Linux (PDF) . ICFP 2008: 13-я Международная конференция ACM SIGPLAN по функциональному программированию. стр. 367–378.
- ^ Берр, Крис; Клеменчич, Марко; Кутюрье, Бен (2018). «Упаковка и распространение программного обеспечения для LHCb с использованием Nix» (PDF) .
- ^ Реплита (25 мая 2023 г.). «Replit — Super Colliding Nix Stores: Nix Flakes для миллионов разработчиков» . Реплит блога . Проверено 5 марта 2024 г.
- ^ «Настройте рабочее пространство IDX | Project IDX» . Гугл для разработчиков . Проверено 5 марта 2024 г.
- ^ Темкин, Кейт (1 мая 2024 г.). «Открытое письмо в фонд NixOS» . save-nix-together.org . Проверено 6 мая 2024 г.
- ^ «Блог TVL: Tvix: Мы переписываем Nix» . tvl.fyi . Проверено 19 мая 2024 г.
- ^ «Блог TVL: Статус Tvix - 22 сентября» . tvl.fyi . Проверено 19 мая 2024 г.
- ^ «Блог TVL: Статус Tvix — 24 февраля» . tvl.fyi . Проверено 19 мая 2024 г.
- ^ tvlfyi/tvix , The Virus Lounge, 18 мая 2024 г. , получено 19 мая 2024 г.
- ^ "tvix - депо - Sourcegraph" . cs.tvl.fyi . Проверено 19 мая 2024 г.
- ^ Jump up to: а б «Ликс | О Ликсе» . lix.systems . Проверено 19 мая 2024 г.
Внешние ссылки
[ редактировать ]- программное обеспечение 2012 года
- Программное обеспечение для управления данными
- Бесплатные инструменты компьютерного программирования
- Бесплатные системы управления пакетами
- Функциональное программирование
- Программное обеспечение для управления пакетами Linux
- Программное обеспечение Unix
- Управление конфигурацией
- Программное обеспечение, использующее лицензию LGPL
- Бесплатное программное обеспечение, написанное на C++.