Доступен пакетный менеджер Nix 2.0

23 февраля 2018 года

Увидел свет релиз пакетного менеджера Nix 2.0, применяемого в дистрибутиве NixOS. При использовании Nix пакеты оформляются в виде срезов, содержащих необходимые для работы приложений компоненты, которые устанавливаются в отдельное дерево директорий /nix/store или поддиректорию в каталоге пользователя. Код проекта поставляется под лицензией LGPLv2.1.

Nix позволяет выполнять атомарные обновления пакетов, даёт возможность откатывать изменения и одновременно устанавливать несколько версий одной программы. Несколько пользователей могут совместно использовать общее хранилище установленных пакетов и устанавливать программы без необходимости получения прав root.

Между пакетами возможно определение зависимостей, при этом для поиска наличия уже установленных зависимостей используется сканирование хэшей-идентификаторов в каталоге установленных пакетов. Например, пакет устанавливается как /nix/store/f3d4q25649f394359bh52d5vf7a0f3-firefox-58.0.0/, где хэш "f3d4q8..." является уникальным идентификатором пакета, используемым для контроля зависимостей.

Возможна как загрузка готовых бинарных пакетов из репозитория (при установке обновлений к бинарным пакетам загружаются только delta-изменения), так и сборка из исходных текстов со всеми зависимостями. Коллекция пакетов представлена в специальном репозитории Nixpkgs и насчитывает около 6500 пакетов, собранных для платформ GNU/Linux (i686, x86_64, ARM aarch64) и macOS (x86_64-darwin).

В новом выпуске отмечается достаточно много изменений, нарушающих обратную совместимость. Например, прекращена поддержка загрузки на основе манифеста (удалены команды nix-pull, nix-generate-patches, bsdiff и bspatch), копирования из других хранилищ (применялось в инсталляторе NixOS для копирования путей с установочного носителя). Проведена работа по исключению из зависимостей Perl (удалена команда nix-push, вместо которой следует использовать nix copy). Прекращена поддержка системы проверки цифровых подписей на основе OpenSSL и кэширования информации о сбоях в процессе сборки.

Из новшеств можно отметить новую команду nix, которая пришла на смену командам nix-* и предоставляет более понятный и простой в использовании синтаксис. Например, доступны подкоманды:

  • "nix build" вместо nix-build
  • "nix run" вместо "nix-shell -p"
  • "nix search" вместо "nix-env -qa"
  • "nix copy" вместо "nix-copy-closure" и "nix-push"
  • "nix optimise-store" вместо "nix-store --optimise"
  • "nix repl" вместо nix-repl
  • "nix verify" вместо "nix-store --verify" и "nix-store --verify-path"
  • "nix add-to-store" вместо "nix-store --add"
  • "nix eval" вместо "nix-instantiate --eval"
  • "nix why-depends"
  • "nix path-info" вместо "nix-store -q"
  • "nix dump-path" вместо "nix-store --dump"
  • "nix edit"
  • "nix upgrade-nix"
  • "nix ls-store" и "nix ls-nar"
  • "nix cat-store" и "nix cat-nar"
  • "nix show-derivation"
  • "nix sign-paths"
  • "nix copy-sigs"
  • "nix show-config"

Существенно расширены методы доступа к хранилищам, среди поддерживаемых типов хранилищ: LocalStore (локальный путь), RemoteStore (daemon), BinaryCacheStore, HttpBinaryCacheStore (http://, https://), LocalBinaryCacheStore (file://), S3BinaryCacheStore (s3:// Amazon S3), LegacySSHStore (ssh://), SSHStore (ssh-ng://). Добавлена поддержка протокола HTTP/2 и алгоритма сжатия Brotli. Обеспечено сохранение цифровых подписей для путей в локальном хранилище и автоматическое подписывание новых локальных сборок (для проверки следует использовать команду "nix verify"). Добавлены компоненты для обеспечения повторяемых сборок.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Доступен пакетный менеджер Nix 2.0», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.