我最近安装了NixOS,最后得到了3个配置文件:bruno(用户配置文件),默认(由root使用)和系统(由NixOS使用)。
我发现为系统配置文件使用稳定通道和为我使用不稳定通道(bruno配置文件)很方便:
~> nix-channel --list
unstable https://nixos.org/channels/nixos-unstable
~> sudo nix-channel --list
nixos https://nixos.org/channels/nixos-17.09
Run Code Online (Sandbox Code Playgroud)
然后,我通过声明方式安装了一些软件包/etc/nixos/configuration.nix:
environment.systemPackages = with pkgs; [
firefox
chromium
htop
# ...
];
Run Code Online (Sandbox Code Playgroud)
还有一些命令式:nix-env --install firefox。
现在列出我已安装的软件包,我希望还会看到系统配置文件提供的软件包(因为它们在我的用户配置文件中可用):
~> htop --version
htop 2.0.2 - (C) 2004-2016 Hisham Muhammad
Released under the GNU GPL.
~> nix-env -q | grep htop
~> nix-env -q | grep firefox
firefox-57.0
Run Code Online (Sandbox Code Playgroud)
仅列出Firefox。让我们尝试使用根配置文件:
~> sudo nix-env -q | grep htop
Run Code Online (Sandbox Code Playgroud)
同样,它实际上是完全空的。也许使用系统配置文件:
~> sudo nix-env -p /nix/var/nix/profiles/system -q
Run Code Online (Sandbox Code Playgroud)
依然没有。
来自传统的软件包管理器(Debian,Red Hat),我感到困惑的是,将Nix定义为“纯功能软件包管理器”似乎没有提供普遍查询软件包的工具-整个手册中都提到了nix-env,感觉就像debian apt的另一自我。
是否有这样的工具,或者这不是问题,也就是说,人们通常不需要列出所有概要文件/环境中的所有软件包的列表吗?
nix-env -q只会报告安装到命令性“环境”中的软件包,例如由创建的软件包nix-env -i。
nix-env是用于命令性软件包管理的工具,它是在声明性和不变的Nix系统上的薄层。该profiles机制提供了一种可变性的方法,并在配置文件中nix-env创建manifest.nix以记录环境中的一组软件包。
NixOS系统仅使用,profiles但不提供manifest.nix文件。这是有道理的,因为NixOS系统每次都会从头开始重建,这使它具有很好的声明性。
结果nix-env是无法查询NixOS配置文件。
因此,nix-env -q查询您必须安装的用户软件包。sudo nix-env -q显示了由root命令安装的命令,其中不包含您的NixOS软件包,因为它们是声明式的系统。指向nix-env -q -p您的NixOS系统会给出一个空列表,因为它不是由创建的环境nix-env。
用户可以使用系统命令的原因不是因为系统是用户概要文件中(Nix)环境的一部分,而是因为(UNIX)环境变量指向这两个概要文件。
$ which firefox
/home/user/.nix-profile/bin/firefox
$ which cp
/run/current-system/sw/bin/cp
$ echo $PATH
[...]
Run Code Online (Sandbox Code Playgroud)
要弄清楚系统上安装了什么,可以运行以下命令:
nix-env -q 找出命令用户环境中安装了什么。nixos-option environment.systemPackages查询在构建和激活配置时将出现在/ run / current-system / sw中的软件包集。引用其文档,“这些软件包将自动提供给所有用户。”nix-store -q --requisites /run/current-system ~/.nix-profile 当前系统和您的用户配置文件的依赖关系的合并关闭nix-store -q --references /run/current-system 当前系统的直接依赖关系有关更多选项,请参见的--query部分nix-store --help。
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |