Поиск по сайту:

Nix — чисто функциональный менеджер пакетов для Linux


Nix — это мощная, чисто функциональная система управления пакетами, предназначенная для надежного и воспроизводимого управления пакетами, выпущенная в соответствии с условиями GNU LGPLv2.1. Это основная система управления пакетами в NixOS, менее известном дистрибутиве Linux.

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

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

Nix также имеет многопользовательскую поддержку, что означает, что обычные (или непривилегированные) пользователи системы могут безопасно устанавливать пакеты, и каждый пользователь идентифицируется по профилю (набору пакетов в хранилище Nix, которые отображаются в PATH пользователя).

Если один пользователь установил пакет, а другой пользователь попытается установить тот же пакет, пакет не будет собран или загружен во второй раз.

В настоящее время он поддерживает Linux (i686, x86_64) и Mac OS X (x86_64). Однако он достаточно портативен, его можно попробовать на большинстве платформ, поддерживающих потоки POSIX и имеющих компилятор C++11.

В этой статье мы покажем, как установить (в многопользовательском режиме) и использовать менеджер пакетов Nix в Linux. Мы обсудим некоторые основные задачи управления пакетами применительно к широко используемым инструментам.

Как установить диспетчер пакетов Nix в Linux

Мы установим последнюю версию Nix (v2.1.3 на момент написания статьи) в многопользовательском режиме. К счастью, существует готовый сценарий установки, который вы можете запустить из своей оболочки как обычный пользователь, используя следующую команду Curl в вашей системе.

sh <(curl https://nixos.org/nix/install) --daemon

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

Чтобы просмотреть подробный список того, что произойдет в процессе установки, введите y и нажмите Enter. Если вы удовлетворены и готовы продолжить, введите y и нажмите Enter.

Скрипт будет вызывать команду sudo много раз по мере необходимости. Вам необходимо разрешить ему использовать sudo, ответив на y и нажав Enter.

Затем установщик выполнит несколько тестов и создаст отчет о конфигурации Nix, создаст пользователей сборки с идентификаторами пользователей 30001 и 30032, а также группу с идентификатором группы . 30000. Введите y, чтобы продолжить, когда будет предложено. Он настроит группы сборки для разных пользователей сборки и создаст базовую структуру каталогов Nix.

Он изменит файл /etc/bashrc/etc/zshrc для zsh), если они существуют. Обратите внимание, что сначала выполняется резервное копирование упомянутых файлов с расширением .backup-before-nix, а установщик также создает файл /etc/profile.d/nix.sh.

Установщик также настроит службу nix-daemon и службу сокетов nix-daemon, загрузит модуль systemd для nix-daemon и запустит две вышеупомянутые службы.

После завершения установки вам необходимо открыть новое окно терминала, чтобы начать использовать Nix. Либо закройте и снова откройте оболочку, чтобы применить последние изменения. Затем создайте файл /etc/profile.d/nix.sh (поскольку это не файл запуска оболочки, открытие новой оболочки не приведет к его исходному состоянию).

source /etc/profile.d/nix.sh

Затем выполните следующую команду, чтобы загрузить с официального сайта проекта некоторые пути, необходимые для работы Nix. После того, как все пути будут загружены и скопированы в правильные места, вы увидите сводную информацию о типах установки системы и nix, как показано на снимке экрана.

nix-shell -p nix-info --run "nix-info -m"

Как использовать диспетчер пакетов Nix в Linux

В Nix управление пакетами осуществляется утилитой nix-env. Он используется для установки, обновления и удаления/удаления пакетов, а также для запроса того, какие пакеты установлены или доступны для установки.

Все пакеты расположены в канале Nix, который представляет собой URL-адрес, указывающий на репозиторий, содержащий как коллекции выражений Nix, так и указатель на двоичный кеш.

Каналом по умолчанию является Nixpkgs, а список подписанных каналов хранится в ~/.nix-channels. Вы можете перечислить их с помощью следующей команды (нет вывода означает отсутствие каналов) .

nix-channel --list

Чтобы добавить канал Nix, используйте следующую команду.

nix-channel --add https://nixos.org/channels/nixpkgs-unstable

Прежде чем устанавливать какие-либо пакеты, начните с обновления канала Nix; это похоже на запуск apt update в менеджере пакетов APT.

nix-channel --update

Вы можете запросить, какие пакеты доступны для установки, используя следующую команду.

nix-env -qa

В этом примере мы установим сервер Apache Tomcat, используя предыдущую команду в сочетании с grep, чтобы обнаружить, что пакет доступен для установки, как показано.

nix-env -qa | grep "apache-tomcat"

Чтобы установить пакет, используйте следующую команду, указав версию пакета, например apache-tomcat-9.0.2.

nix-env -i apache-tomcat-9.0.2

В локальной системе Nix хранит пакеты в Nix store, который по умолчанию является каталогом /nix/store, где каждый пакет имеет свой собственный уникальный подкаталог. Например, пакеты apache-tomcat хранятся в:

/nix/store/95gmgnxlrcpkhlm00fa5ax8kvd6189py-apache-tomcat-9.0.2

В этом пути случайные символы 95gmgnxlrcpkhlm00fa5ax8kvd6189py являются уникальным идентификатором пакета, учитывающим все его зависимости.

Вы можете просмотреть установленные пакеты с помощью следующей команды.

nix-env -q

Чтобы обновить пакет apache-tomcat, вы можете использовать переключатель обновления -u, как показано.

nix-env -u apache-tomcat

Если вы хотите удалить/стереть apache-tomcat, используйте флаг -e. Здесь пакет не удаляется из системы сразу, а только становится неиспользованным. Это полезно, потому что вы хотите выполнить откат или это может быть в профилях других пользователей.

nix-env -e apache-tomcat

После удаления пакета вы можете выполнить сборку мусора с помощью утилиты nix-collect-garbage.

nix-collect-garbage

Как удалить диспетчер пакетов Nix в Linux

Чтобы удалить Nix, удалите все файлы, связанные с Nix, за один раз.

sudo rm -rf /etc/profile/nix.sh /etc/nix /nix ~root/.nix-profile ~root/.nix-defexpr ~root/.nix-channels ~/.nix-profile ~/.nix-defexpr ~/.nix-channels

В системах с systemd выполните следующие команды, чтобы остановить все службы, связанные с nix, и отключить их.

sudo systemctl stop nix-daemon.socket
sudo systemctl stop nix-daemon.service
sudo systemctl disable nix-daemon.socket
sudo systemctl disable nix-daemon.service
sudo systemctl daemon-reload

Кроме того, вам необходимо удалить любые ссылки на Nix в этих файлах: /etc/profile, /etc/bashrc и /etc/zshrc. >.

Для получения дополнительной информации см. man-страницы рассмотренных выше утилит.

man nix-channel
man nix-env

Вы можете найти документацию по диспетчеру пакетов Nix на веб-сайте проекта: https://nixos.org/nix/.

Краткое содержание

Nix — это чисто функциональный менеджер пакетов, предназначенный для надежного и воспроизводимого управления пакетами. Он предоставляет интересную концепцию управления пакетами, сильно отличающуюся от часто используемых инструментов Linux, таких как YUM, APT и многих других.

В этой статье мы показали, как установить nix в многопользовательском режиме, и обсудили, как управлять пакетами с помощью Nix. Поделитесь с нами своими мыслями или задайте любые вопросы через форму комментариев ниже. Наконец, в следующей статье мы объясним больше команд управления пакетами Nix. А пока оставайтесь на связи.