Nix
Диспетчер пакетов Nix — развитое средство для опытных пользователей, позволяющее получить практически любой пакет свободного программного обеспечения из обширного репозитория, который поддерживает сообщество.
В KDE Linux он устанавливается в однопользовательском режиме. Nix хранит программы и зависимости в /nix/store и сам обновляет путь поиска по мере добавления и удаления средств.
Установка
Диспетчер пакетов Nix устанавливается для текущего пользователя так:
sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --no-daemon
Завершите сеанс, войдите снова и проверьте:
nix-shell -p mc emacs-nox # теперь вы в оболочке с mc и emacs
Учтите: после выхода из этой оболочки mc и emacs исчезают из её пути поиска. Как сделать такие средства доступными постоянно, описано в следующем разделе.
Подробности — на https://nixos.org/download/#nix-install-linux.
Постоянная установка пакетов
Чтобы установить пакеты в /nix/store и добавить их в путь поиска пользователя, используйте nix-env -iA или nix-env --install --attr:
$ nix-env -f '' -iA mc ⋮ building '/nix/store/1q2sh2f178jx9fl37gd9ks85ysfvpwd9-user-environment.drv'...
При этом создаётся новое «окружение» со всеми изменениями состояния, которые нужны для доступа к пакету mc; такие изменения можно откатывать и применять заново. В этом и состоит ''главная'' привлекательность системы управления пакетами Nix, но эта тема выходит за рамки руководства.
Убедитесь, что команда mc теперь доступна пользователю:
$ which mc /home/username/.nix-profile/bin/mc
Пакеты удаляются командой nix-env --uninstall или nix-env -e:
$ nix-env -e mc uninstalling 'mc-4.8.33' building '/nix/store/rqbghiyds6f7a49qiwi9gmq7bnkgn9qi-user-environment.drv'...
Как освободить место, занятое ненужными пакетами, описано ниже в разделе о [[#garbage-collection|сборке мусора]].
Подробности — на https://nix.dev/manual/nix/latest/command-ref/nix-env.html.
Использование nix profile
Формально интерфейс nix <command> до сих пор считается экспериментальным (подробнее об «экспериментальном» статусе nix profile — в этом RFC), но на деле он широко используется и удобнее. Автодополнение по клавише Tab и параметр --help у различных подкоманд nix работают сразу после установки. Как и nix-env, nix profile устанавливает пакеты в /nix/store и добавляет их в путь поиска, причём они сохраняются между сеансами.
Простой пример: установка средства поиска по коду ag с помощью nix profile:
$ mkdir -p ~/.config/nix $ cat >> ~/.config/nix/nix.conf <<EOF experimental-features = nix-command flakes EOF $ nix search nixpkgs silver searcher ⋮ * legacyPackages.x86_64-linux.silver-searcher (2.2.0) Code-searching tool similar to ack, but faster $ nix profile add nixpkgs#silver-searcher $ which ag /home/username/.nix-profile/bin/ag
Вывод списка установленных пакетов и их удаление:
$ nix profile list ⋮ Name: silver-searcher Flake attribute: legacyPackages.x86_64-linux.silver-searcher Original flake URL: flake:nixpkgs Locked flake URL: github:NixOS/nixpkgs/f08e6b11a5ed43637a8ac444dd44118bc7d273b9?narHash=sha256-7vUo0qWCl/rip%2Bfzr6lcMlz9I0tN/8m7d5Bla/rS2kk%3D Store paths: /nix/store/l120si3zsshmf3jr7dkn5dvcj0n586xb-silver-searcher-2.2.0 $ nix profile remove silver-searcher
Как освободить место, занятое ненужными пакетами, описано ниже в разделе о сборке мусора.
Подробности — на https://nix.dev/manual/nix/latest/command-ref/new-cli/nix3-profile.html.
Переустановка Nix
Если «экспериментальная» возможность nix profile включена, то перед переустановкой её нужно отключить и удалить файлы состояния профиля пользователя, иначе появится сообщение об ошибке вида:
error: profile '/home/username/.local/state/nix/profiles/profile' is incompatible with 'nix-env'; please use 'nix profile' instead
Закомментируйте строку experimental-features в файле настройки Nix, затем удалите каталог состояния профиля:
$ sed -i'' 's/^experimental-features = nix-command flakes$/#&/' ~/.config/nix/nix.conf $ rm -rf ~/.local/state/nix/profiles/profile
Теперь можно повторить установку.
Сборка мусора для освобождения места на диске
Учтите: nix-env -e и nix profile remove убирают команды пакета из текущего окружения пользователя, но сами программы остаются в /nix/store, пока не будут удалены при сборке мусора.
Запустить сборку мусора и освободить место на диске можно одной из следующих команд:
nix-store --gc # обычная сборка мусора nix-collect-garbage -d # удалить «недостижимые» пакеты из хранилища
Удаление Nix
Чтобы удалить диспетчер пакетов Nix, выполните следующие команды:
run0 systemctl disable --now nix-daemon.service nix-daemon.socket run0 rm -rf /nix /etc/nix /etc/profile.d/nix.sh /etc/tmpfiles.d/nix-daemon.conf /nix /root/.nix-channels /root/.nix-defexpr /root/.nix-profile /root/.cache/nix ~/.nix-channels ~/.nix-defexpr ~/.nix-profile ~/.cache/nix for i in $(seq 1 32); do run0 userdel nixbld$i; done run0 groupdel nixbld
Дополнительные сведения
Статья предоставлена Ernstki и распространяется под лицензией CC-BY-4.0.