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-env -iA або nix-env --install --attr для встановлення пакунків до /nix/store і уможливлення доступ до них у шляху пошуку вашого користувача:
$ nix-env -f '' -iA mc ⋮ building '/nix/store/1q2sh2f178jx9fl37gd9ks85ysfvpwd9-user-environment.drv'...
Це створює нове «середовище», яке містить усі зміни стану, необхідні для того, щоб став доступним пакунок mc, і ці зміни можна накочувати чи відкочувати. Це «справжня» привабливість системи керування пакетами Nix, але це виходить за межі цього підручника.
Перевірка, що команда mc тепер доступна вашому користувачу:
$ which mc /home/користувач/.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), але на практиці він широко використовується та є більш ергономічним. Автозаповнення та параметри --help для різних підкоманд nix також працюватимуть «з коробки» при встановленні «з нуля». Як і nix-env, nix profile встановить пакунки до /nix/store і зробить їх доступними у вашому шляху пошуку, зберігаючи їх між сеансами входу до системи.
Ось тривіальний приклад використання nix profile для встановлення інструменту пошуку у програмному коді ag:
$ 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
Див. розділ щодо garbage collection нижче, щоб дізнатися про способи отримання місця, яке використовується пакунками, якими ви вже не користуєтеся.
Див. 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, віддайте такі команди:
sudo systemctl disable --now nix-daemon.service nix-daemon.socket sudo 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 sudo userdel nixbld$i; done sudo groupdel nixbld
Див. також
Статтю надіслано Ernstki, умови ліцензування — CC-BY-4.0.