Пользовательские пакеты nix против системных пакетов

Я использую Vagrant + virtualBox и образ Debian 8/Ubuntu для своих сред разработки.

Я хочу использовать nix для подготовки, но не могу заставить nixOS работать полностью правильно (т.е. с сетью, подготовка...), но я был бы более чем счастлив переключиться. Поэтому я возвращаюсь к nix + Debian 8 или nix + Ubuntu, чтобы имитировать рабочий сервер.

Я не могу понять разницу между user packages и system packages и то, что предпочтительнее использовать в моем контексте, чтобы иметь возможность повторно использовать это на рабочем сервере.

Должен ли я устанавливать пакеты с nix -i или редактировать файл configuration.nix?


nix
person nha    schedule 19.07.2015    source источник


Ответы (1)


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

Системные пакеты определяются в файле глобальной конфигурации, который обычно находится в /etc/nixos/configuration.nix. Пользователи, отличные от root, обычно не могут редактировать этот файл и, следовательно, не могут добавлять или удалять пакеты из списка. Определенные там пакеты будут установлены как часть nixos-rebuild и будут доступны в $PATH каждому пользователю вашей системы. Однако, если какой-либо из этих пакетов по какой-либо причине не компилируется, вы не сможете пересобрать свою систему, т. е. вы можете оказаться в ситуации, когда вы не сможете обновить ядро, потому что, скажем, nano не компилируется. Люди, которые следят за веткой master git-репозитория Nixpkgs, могут часто сталкиваться с этой проблемой, но это не так часто случается с пользователями каналов unstable или release-x.y.

Пользовательские пакеты могут быть установлены, обновлены и удалены любым пользователем в вашей системе без необходимости наличия привилегий суперпользователя. Пакеты одного пользователя не будут видны другому пользователю (если только он не предпримет сознательной попытки импортировать их в $PATH). Таким образом, два пользователя могут установить две разные версии одного и того же пакета.

Если пользователь не обновляет свой профиль регулярно, то в вашем магазине Nix будут накапливаться старые пакеты, которые невозможно будет удалить сборщиком мусора. Это может быть проблемой или особенностью, в зависимости от того, как вы на это смотрите. С другой стороны, системные пакеты обновляются каждый раз, когда вы обновляете систему, поэтому они, как правило, занимают меньше места на диске.

Лично я предпочитаю, чтобы мой системный профиль был как можно меньше; Я устанавливаю пакеты в основном в профили пользователей с nix-env. Однако я знаю многих людей, которые делают прямо противоположное, и мы все прекрасно ладим. :-)

person Peter Simons    schedule 19.11.2015