默认情况下订阅了什么nix通道

时间:2017-12-17 16:38:13

标签: nix nixos

几周前我在我的机器上安装了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只会产生本地更改吗?

2 个答案:

答案 0 :(得分:6)

以下可能是OSX特有的:

Nix频道是按用户管理的(source)。 nix-channel --list的输出为空,因为默认情况下您没有订阅任何频道 - 只有root订阅了nixpkgs-unstablesource)。

您可以以root身份运行nix-channel --list以查看其订阅。但

  1. 请勿通过sudo(请参阅:https://github.com/NixOS/nix/issues/1548)和
  2. 进行操作
  3. 不要使用简单的sudo su,因为它不会加载/ etc / profile(source),因此不会设置nix env变量(variables-setup
  4. 工作示例:

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

答案 1 :(得分:2)

您的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 updatebrew update,但nix-channel不会更新已安装的Nix版本。)