几周前我在我的机器上安装了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
只会产生本地更改吗?
答案 0 :(得分:6)
以下可能是OSX特有的:
Nix频道是按用户管理的(source)。 nix-channel --list
的输出为空,因为默认情况下您没有订阅任何频道 - 只有root订阅了nixpkgs-unstable
(source)。
您可以以root身份运行nix-channel --list
以查看其订阅。但
sudo
(请参阅:https://github.com/NixOS/nix/issues/1548)和sudo su
,因为它不会加载/ etc / profile(source),因此不会设置nix env变量(variables-setup) 工作示例:
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 nixpkgs
或rm ~/.nix-channels
。
nix-channel
命令仅更新您的Nix表达式。它不会更新任何软件包安装。它只会影响nix-build
,nix-env
以及使用$NIX_PATH
的所有其他内容的未来调用。 (在这方面它类似于apt-get update
或brew update
,但nix-channel
不会更新已安装的Nix版本。)