默认订阅什么 nix 频道

What nix channel is subscribed to by default

我几周前在我的机器 (macOS 10.12.6 Sierra) 上安装了 nix 包管理器。

我想更新 mylocal nixpkgs 集合,使其与频道中的任何上游更新同步。我的理解是可以通过运行ning:nix-channel --update来实现。但是,当我 运行 时,我得到以下输出:

unpacking channels... created 0 symlinks in user environment

表明我的系统订阅的频道中没有更新任何表情。如果我 运行 nix-channel --list 我没有看到列出任何频道。我的系统默认订阅了哪个频道?我应该期望它被列出吗?

是不是一般情况下nix-channel --update只有在我修改了我订阅的频道或者订阅了不稳定的频道后才会产生局部变化?

您的 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 nixpkgsrm ~/.nix-channels.

nix-channel 命令仅更新您的 Nix 表达式。它不会更新任何软件包安装。它只会影响以后对 nix-buildnix-env 和所有其他使用 $NIX_PATH 的调用。 (它在这方面类似于 apt-get update,或者 brew update,除了 nix-channel 不会更新已安装的 Nix 版本。)

以下内容可能特定于 OSX:

Nix 频道是按用户管理的 (source). nix-channel --list's output is empty because by default you are not subscribed to any channels - only root is subscribed to nixpkgs-unstable (source)。

您可以 运行 nix-channel --list 作为 root 查看他的订阅。但是

  1. 不要运行它通过sudo(参见:https://github.com/NixOS/nix/issues/1548)和
  2. 不要使用简单的 sudo su,因为它不会加载 /etc/profile (source) and thus will not have the nix env variables set up (variables-setup)。

工作示例:

    user$ nix-channel --list

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