Следует ли вам устанавливать пакеты в системный профиль или в профиль пользователя, зависит от того, чего вы хотите достичь. Нет единого правильного ответа. Вместо этого оба типа установки пакетов имеют разные плюсы и минусы.
Системные пакеты определяются в файле глобальной конфигурации, который обычно находится в /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