Доступен пакетный менеджер Nix 2.0 Печать
23.02.18 20:34

Увидел свет релиз пакетного менеджера 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"). Добавлены компоненты для обеспечения повторяемых сборок.

Read more http://www.opennet.ru/opennews/art.shtml?num=48133