LINUX.ORG.RU

Nix 2.0

 , , ,


3

8

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

Одной из особенностей данного пакетного менеджера является то, что для описания пакетов в нём используется функциональный язык nix. Набор пакетов nixpkgs, описанный на этом языке, на данный момент содержит более 8 тысяч пакетов применимых для широкого круга задач. Все пакеты с их зависимостями образуют Merkle tree, в котором уникальный хэш каждого пакета зависит от его собственного описания и от хешей всех его зависимостей, также огромное внимание уделяется изоляции сборок друг от друга (используется множество разных механизмов), всё это позволяет окончательно решить проблему так называемого «DLL hell». Nix также является сердцем декларативного дистрибутива Linux под названием NixOS. Nix 2.0 будет использован в следующем релизе NixOS 18.03 Impala.

Нововведения в релизе:

  • Обновлённый интерфейс командной строки на базе единой команды nix должен стать более удобным и однородным (интерфейсы nix-env, nix-build и другие сохранены для обратной совместимости)
    • nix build пришел на замену nix-build
    • nix run служит для запуска программ в окружении заданных пакетов (в чём-то похож на старый nix-shell -p ... --run ...)
    • nix search заменяет nix-env -qa. В отличии от последнего, nix search умеет кэшировать список пакетов для быстрого поиска
    • nix copy позволит копировать пакеты между произвольными хранилищами пакетов, является обобщением nix-copy-closure и nix-push
    • nix verify проверяет, что файлы пакета не были модифицированы
    • nix repl — встроенный REPL для языка nix
    • nix why-depends демонстрирует каким образом один пакет зависит от другого. Помогает мейнтейнерам бороться с «распуханием» дерева зависимостей
  • Улучшения безопасности
    • Nix теперь сохраняет цифровые подписи к пакетам в локальном хранилище. Подписи также копируются автоматически вместе с пакетами при копировании между хранилищами.
    • Цифровые подписи больше не требуются для содержимого с фиксированным хешем
    • Команда nix verify позволяет проверять наличие необходимых цифровых подписей
    • Цифровые подписи теперь по-умолчанию требуются для бинарных сборок (раньше так было только в NixOS)
    • В сборках в песочнице на платформе Linux теперь в качестве временной директории используется /build вместо /tmp
  • Режим чистого выполнения выражений на языке nix в котором не доступны некоторые функции позволяющие получать переменные окружения, скачивать файлы с недетерминированным содержимым.
  • Добавлены несколько фич для поддержки бинарной воспроизводимости (проверки на то, что независимые сборки одного и того же пакета имеют одинаковый результат). Если флаг enforce-determinism установлен в false, то различие в промежуточных сборках (например, зависимостей) приведёт всего лишь к предупреждению, а не к фатальной ошибке. Также параметр diff-hook позволяет задать приложение, такое как diffoscope, которое будет запущено в случае обнаружения несовпадений.
  • Унифицирована внутренняя логика работы с локальными хранилищами пакетов (место, куда пакеты устанавливаются) и удалёнными хранилищами (для передачи бинарных сборок). На данный момент поддерживаются следующие протоколы: http://, https://, file://, s3://, ssh://, ssh-ng://. Добавленная поддержка HTTP/2 позволит немного быстрее работать с бинарными кэшами.
  • Новые встроенные функции языка nix такие как builtins.fetchGit, builtins.fetchMercurial, builtins.path, builtins.split, builtins.partition. Поддержка значений типа float.
  • Избавление от зависимости от Perl. Компоненты зависящие от него либо были переписаны на C++ либо удалены. Биндинги к Perl были вынесены в отдельный пакет.

>>> Полный список изменений



Проверено: jollheef ()

nix search заменяет nix-env -qa. В отличии от последнего, nix search умеет кэшировать список пакетов для быстрого поиска

Джва года ждал!

jollheef ★★★★★ ()

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

щето?

mos ★★★★★ ()

Самого главного не сказал. В NixOS 18.03 попадет или не успело до фриза?

t184256 ★★★★★ ()

всё это позволяет окончательно решить проблему так называемого «DLL hell».

Этот пакетный менеджер что, доступен под оффтопик? Или при чём тут dll?

Crocodoom ★★ ()

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

anonymous ()
Ответ на: комментарий от anonymous

NixOS с его nixpkgs - это дистр на базе пакетного менеджера Nix. Там и надо разбираться с сильной зависимостью от ... systemd. Пакетный менеджер не виноват в пагубных привычках. Хотя стоит заметить, что у пакетного менеджера есть некоторая привязанность к ... nixpkgs.

anonymous ()
Ответ на: комментарий от Crocodoom

Этот пакетный менеджер что, доступен под оффтопик? Или при чём тут dll?

В линуксах с so тоже самое.

AVL2 ★★★★★ ()
Ответ на: комментарий от t184256

Как он будет доступен, есть поддерживается только Unix-like, вроде.

xaizek ★★★★★ ()
Последнее исправление: xaizek (всего исправлений: 1)
Ответ на: комментарий от anonymous

да? а то, что невозможно сделать руками изменения например в конфигурацию grub - это тоже никсос виновата или «воспроизводимость сборок» - это когда всё намертво прибито и мамка запрещает такое воспроизводить?

anonymous ()
Ответ на: комментарий от anonymous

сборка не должна делать что-либо кроме сборки. иначе это уже содом.

anonymous ()
Ответ на: комментарий от anonymous

авторы этого поделия почему-то называют это менеджером пакетов, а не системой сборки, так ведь? как менеджить ко-ко-ко 14 тысяч пакетов после внесения изменений в конфигурацию grub, братюнь?

anonymous ()
Ответ на: комментарий от anonymous

да? а то, что невозможно сделать руками изменения например в конфигурацию grub

Ты не умеешь ни в NixOS, ни в Nix, но мнение имеешь. Оставайся на линии, ваше мнение очень важно.

anonymous ()
Ответ на: комментарий от anonymous

теперь давай ещё какие-нибудь файлы из системы по удаляй и удивись чего это потом менеджер пакетов не работает.

anonymous ()

Чет не втыкаю, если у меня уже nixos, это чтобы этими более удобными командами пользоваться надо еще пакет nix ставить? O_o

anonymous ()

Long live Nix!

Отличная задумка, неплохая реализация. Пакетный режим будущего.

frigate_freedom ★★ ()

Как у этого NixOS с кедами, аэмдэшным блобом, и десятилетним сроком поддержки релиза?

Napilnik ★★★★★ ()
Последнее исправление: Napilnik (всего исправлений: 1)
Ответ на: комментарий от Napilnik

С кедами гуд,с амд дровами гуд,а насчет срока поддержки фиг знает

playX ★★ ()
Ответ на: комментарий от playX

с амд дровами гуд

Интересуют именно блобовые дрова. На аэмдешном сайте дрова раздаются для шапки, центоса и бубунты и как бы всё.

Napilnik ★★★★★ ()
Ответ на: комментарий от Napilnik

Интересуют именно блобовые дрова

Есть ati_unfree, который суть fglrx. Есть ещё amdgpu_pro.

Но зачем? Сейчас же вроде AMD сами пишут открытый драйвер и потихоньку открывают то, что было закрыто.

anonymous ()
Ответ на: комментарий от playX

У меня свежий -unstable. При запуске любой команды nix получаю предложение поставить nix.

$ nix run firefox
The program ‘nix’ is currently not installed. You can install it by typing:
  nix-env -iA nixos.nixUnstable

anonymous ()
Ответ на: комментарий от Napilnik

Так ну все работает,только Xorg окатывается на более старую версию

playX ★★ ()
Ответ на: комментарий от anonymous

Нету же команды nix run,надо запускать просто выполняя команду Firefox или через /usr/bin/env firefox

playX ★★ ()

чем он лучше воспроизводимых сборок Debian ?

Einstok_Fair ()
Ответ на: комментарий от Einstok_Fair

В NixOS воспроизводимы не только отдельные пакеты, но и конфигурация всей системы в целом.

Можно скопировать configuration.nix на другую машину, сделать nixos-rebuild switch и получить идентичную систему (не считая всяких данных в /var).

anonymous ()
Ответ на: комментарий от playX

Да любую команду. В данном случае я хотел попробовать новый алиас «nix run firefox» вместо старого «nix-shell -p firefox --run firefox». Команда для примера.

anonymous ()
Ответ на: комментарий от playX

Т.е. речь о том что в свежей nixos из коробки nix-shell у меня есть, а просто nix нету.

anonymous ()
Ответ на: комментарий от anonymous

У меня свежий -unstable. При запуске любой команды nix получаю предложение поставить nix.

В nixpkgs пока по умолчанию используется старый nix. Если хочешь новый, надо его поставить самому:

nix.package = pkgs.nixUnstable;
anonymous ()

А кто сравнивал на практике, что из аналогичных проектов лучше, Nix, Guix, 0install или другое? Ещё Gobolinux был, жив ли...

pyroman ()
Ответ на: комментарий от pyroman

Guix работает быстрее Nix,но из его недостатков это то что проприетарных пакетов у него нет и соответственно надо самому их писать на Guile

playX ★★ ()
Ответ на: комментарий от anonymous

Но зачем? Сейчас же вроде AMD сами пишут открытый драйвер и потихоньку открывают то, что было закрыто.

Из открытого настройки выкинуты чтобы ничто не тормозило. Но это тупость, не всегда ~5% прироста скорости видухи что-то могут изменить. Если игра требует гиг видеопамяти, а у тебя есть полгига, то как ты не ускоряйся, будет пшик.

Napilnik ★★★★★ ()
Ответ на: комментарий от Napilnik

Как отсутствие настроек позволяет ускорить видеокарту?

Какие выкинутые настройки помогали «ужимать» требования видеопамяти в два раза?

BTW, как я понимаю, amdgpu только для новых видеокарт, их еще делают с полгигами памяти?

anonymous ()
Ответ на: комментарий от anonymous

Как отсутствие настроек позволяет ускорить видеокарту?

Постпроцессинг же. Сначала генерируется картинка, а потом её можно колбасить: сделать потемнее или почётче, на это жрутся процессорные мощности видеокарты.

Какие выкинутые настройки помогали «ужимать» требования видеопамяти в два раза?

В том то и дело, что если скорости видухи и видеопамяти не хватает очень сильно, то берёшь и покупаешь новую, а принудительно экономить скорость «на спичках» не есть хорошо. Если пользователь заплатил за видуху, то имеет право потратить её процессорные мощности как ему надо а не во славу драйверопИсателей, увеличивших прирост скорости вращающихся шестерёнок ещё немного. Когда я пишу на лоре, мне до тех шестерёнок дела мало, а настройки пригодились бы.

их еще делают с полгигами памяти

Несколько лет назад игровые видухи как раз делали с полгигами памяти, а много памяти было у офисных, маломощных. На фильмы 1280х720 и старые игрушки скорости хватает, а для новых надо больше памяти.

Napilnik ★★★★★ ()
Последнее исправление: Napilnik (всего исправлений: 1)
Ответ на: комментарий от pyroman

Nix более готовый (NixOS так и вообще уже в продакшн попало у некоторых проектов), но Guix более перспективный.

jollheef ★★★★★ ()
Ответ на: комментарий от jollheef

А чем более перспективный?

P.S. Их тех кто был на конфочке NixOS никто Guix не пробовал (инфа от третьих лиц)

anonymous ()
Ответ на: комментарий от anonymous

А чем более перспективный?

Использует язык общего назначения, проще их местные ебилды писать.

P.S. Их тех кто был на конфочке NixOS никто Guix не пробовал (инфа от третьих лиц)

У меня с GuixSD был очень неприятный опыт — он при каждой установке пакета хотел сам себя компилировать.

jollheef ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.