На какой канал nix подписан по умолчанию

Я установил менеджер пакетов nix на свою машину (macOS 10.12.6 Sierra) несколько недель назад.

Я хочу обновить коллекцию mylocal nixpkgs, чтобы синхронизировать ее с любыми вышестоящими обновлениями на канале. Насколько я понимаю, этого можно добиться, запустив: nix-channel --update. Однако, когда я запускаю это, я получаю следующий вывод:

unpacking channels... created 0 symlinks in user environment

Предлагаю не обновлять выражения на каналах, на которые подписана моя система. Если я запускаю nix-channel --list, я не вижу в списке ни одного канала. На какой канал моя система подписана по умолчанию? и я должен ожидать, что он будет указан?

Это тот случай, когда nix-channel --update обычно производит локальные изменения только в том случае, если я изменил каналы, на которые я подписан, или если я подписан на нестабильный канал?


person b73    schedule 17.12.2017    source источник


Ответы (2)


Следующее может быть характерно для OSX:

Каналы Nix управляются индивидуально для каждого пользователя (источник). Вывод nix-channel --list пуст, потому что по умолчанию вы не подписаны ни на какие каналы — только root подписан на nixpkgs-unstable (источник).

Вы можете запустить nix-channel --list как root, чтобы увидеть его подписки. Но

  1. не запускайте его через sudo (см.: https://github.com/NixOS/nix/issues/1548) и
  2. не используйте простой sudo su, потому что он не загружает /etc/profile (источник) и, следовательно, не будет иметь nix настройка переменных env (variables-setup< /а>).

Рабочий пример:

    user$ nix-channel --list

    user$ sudo su -
    root# nix-channel --list
    nixpkgs https://nixos.org/channels/nixpkgs-unstable
person fghibellini    schedule 06.01.2018

Ваш nix-channel --update предполагает, что у вас в списке каналов ноль каналов, а не ноль пакетов. Вы можете увидеть конфигурацию своего канала с помощью nix-channel --list. Вероятно, вам нужно настроить канал.

Сценарий установки Nix в настоящее время настраивает один канал с именем nixpkgs:

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

Так что это канал по умолчанию, и он должен быть указан в nix-channel --list после установки, пока вы не nix-channel --remove nixpkgs или rm ~/.nix-channels.

Команда nix-channel обновляет только ваши выражения Nix. Он не будет обновлять какие-либо установки пакетов. Это повлияет только на будущие вызовы nix-build, nix-env и всего остального, что использует $NIX_PATH. (В этом отношении он похож на apt-get update или brew update, за исключением того, что nix-channel не будет обновлять установленную версию Nix.)

person Robert Hensing    schedule 18.12.2017
comment
Спасибо, Роберт, я думаю, что моя терминология была немного неправильной - я использовал термин пакеты взаимозаменяемо с выражениями. Я обновил свой пост соответственно. nix-channel --list не отображает для меня никаких каналов. Означает ли это, что в моей системе что-то неправильно настроено? Я не добавлял/удалял каналы с момента установки. Когда nix-channel --update сообщает created 0 symlinks in user environment, означает ли это, что в восходящем направлении не было обновлено ни одного выражения? (не то, что я ожидал бы от нестабильного канала - учитывая его настройку для непрерывных сборок). - person b73; 18.12.2017
comment
Сообщение created 0 symlinks in user environment указывает на то, что он создал пустую среду для вашего ~/.nix-defexpr/channels. Это имеет смысл, потому что ваша конфигурация (nix-channel --list) пуста. Я предлагаю запустить nix-channel --add https://nixos.org/channels/nixpkgs-unstable, чтобы исправить вашу конфигурацию. - person Robert Hensing; 19.12.2017
comment
Спасибо Роберт, это все имеет смысл. Как всегда ваша помощь очень ценится :) - person b73; 20.12.2017