Nix — мощный менеджер пакетов для Linux и Unix
Некоторое время назад мы писали о Linuxbrew, общем менеджере пакетов для Linux и Mac OS X. Отличительной особенностью Linuxbrew является то, что вы можете устанавливать пакеты без root или sudo. привилегия. Сегодня в этом руководстве мы поговорим об еще одном подобном менеджере пакетов. Встречайте Nix, чисто функциональный и надежный менеджер пакетов для Linux и других вариантов Unix. В отличие от других менеджеров пакетов, он обеспечивает параллельную установку нескольких версий одного и того же пакета, поддержку атомарности и отката, управление пакетами для каждого пользователя, простую настройку сред разработки пакетов и многое другое. Менеджер пакетов Nix изначально был разработан для NixOS, дистрибутива GNU/Linux с уникальным подходом к управлению пакетами и конфигурациями. Первоначально NixOS был запущен как исследовательский проект компанией Eelco Dolstra в 2003 году.
Функции
Менеджер пакетов Nix немного отличается от других менеджеров пакетов Linux с точки зрения функциональности и возможностей. Что касается особенностей, то можно перечислить следующее:
- Многопользовательская система управления пакетами. Это означает, что у каждого пользователя в системе может быть свой набор установленных пакетов.
- Пользователи могут устанавливать пакеты без прав root или sudo.
- Менеджер пакетов Nix хранит пакеты в магазине Nix, обычно в каталоге /nix/store. Каждый пакет имеет свой собственный уникальный подкаталог. Скажем, например, пакет gzip будет храниться в уникальном каталоге /nix/store/c5y9w08xkiz6kvnscpjv3205gyr6iybz-gzip-1.8/ вместе со всеми необходимыми зависимостями и библиотеками.
- Разные пользователи могут одновременно устанавливать разные версии одного и того же пакета. Это полезно для разработчиков, которые хотят протестировать свои приложения, созданные с использованием различных версий пакетов и зависимостей.
- Поскольку все пакеты устанавливаются в уникальные каталоги, один пользователь не может вмешиваться (например, удалять, обновлять или обновлять пакеты) в пакеты, установленные другим пользователем. Кроме того, обновление пакета не влияет на другую версию того же пакета или его зависимости.
- Возможен откат пакетов к предыдущим версиям.
- Поддержка атомного обновления. Это означает, что при обновлении пакета существующая версия не заменяется. Каждая новая версия будет храниться в новом уникальном каталоге. Поскольку пакет не перезаписывается, старые версии остаются доступными даже после обновления.
- Неиспользуемые пакеты можно безопасно удалить.
- Менеджер пакетов, удобный для DevOps. Nix помогает пользователям собирать пакеты из исходников, если они еще недоступны в репозиториях. Таким образом, Nix чрезвычайно полезен для разработчиков, поскольку позволяет легко автоматически настроить среду сборки для пакета.
- Менеджер пакетов Nix можно использовать в GNU/Linux и Mac OS X.
Теперь мы увидим, как установить менеджер пакетов Nix в Unix-подобных операционных системах.
Установить менеджер пакетов Nix в Linux
Установка менеджера пакетов Nix тривиальна.
Чтобы установить его на свой компьютер Linux, запустите от имени обычного пользователя:
curl https://nixos.org/nix/install | sh
Пример вывода:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2354 100 2354 0 0 833 0 0:00:02 0:00:02 --:--:-- 833
downloading Nix 1.11.9 binary tarball for x86_64-linux from 'https://nixos.org/releases/nix/nix-1.11.9/nix-1.11.9-x86_64-linux.tar.bz2' to '/tmp/nix-binary-tarball-unpack.SoCHJhv4Vz'...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27.3M 100 27.3M 0 0 525k 0 0:00:53 0:00:53 --:--:-- 248k
performing a single-user installation of Nix...
directory /nix does not exist; creating it by running ‘mkdir -m 0755 /nix && chown sk /nix’ using sudo
[sudo] password for sk:
copying Nix to /nix/store...............................
initialising Nix database...
creating /home/sk/.nix-profile
installing ‘nix-1.11.9’
building path(s) ‘/nix/store/7dv1lghxz40rbvv9ffg7fq2as972a4r7-user-environment’
created 6 symlinks in user environment
downloading Nix expressions from ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’...
downloading ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’... [7625/8656 KiB, 403.0 KiB/s]
unpacking channels...
created 2 symlinks in user environment
modifying /home/sk/.bash_profile...
Installation finished! To ensure that the necessary environment
variables are set, either log in again, or type
. /home/sk/.nix-profile/etc/profile.d/nix.sh
in your shell.
После установки Nix выйдите из системы и снова войдите в нее, чтобы убедиться, что необходимые переменные среды установлены правильно. Альтернативно, чтобы убедиться в этом, запустите следующую команду из терминала.
. /home/sk/.nix-profile/etc/profile.d/nix.sh
Обратите внимание, что в начале стоит точка (.). Если вы не видите никаких результатов, значит, все готово! Менеджер пакетов Nix успешно установлен в вашей системе. Кроме того, добавьте указанную выше строку в PATH своего профиля, чтобы избежать запуска указанной выше команды каждый раз после входа в систему.
Для этого отредактируйте ~/.profile или ~/.bashrc (или аналогичный):
vi ~/.bashrc
Добавьте следующую строку в конце.
. /home/sk/.nix-profile/etc/profile.d/nix.sh
Сохраните и закройте файл. Перезагрузите систему. Теперь вам не нужно запускать указанную выше команду каждый раз после входа в систему.
В следующем руководстве объясняется, как использовать диспетчер пакетов Nix для выполнения общих операций управления пакетами, таких как установка, удаление, обновление, обновление и сборка пакетов.
- Начало работы с диспетчером пакетов Nix
Ресурс:
- Веб-сайт Nix