首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在NixOS中找到在系统范围内安装的软件包?

如何在NixOS中找到在系统范围内安装的软件包?
EN

Unix & Linux用户
提问于 2018-02-05 23:46:40
回答 2查看 7.8K关注 0票数 8

是否有一个命令可以用来确定在NixOS中安装了哪些软件包?

例如,我可以用nix-env -q列出为当前用户安装的软件包。我不知道如何从/etx/nixos/configuration.nix中列出安装在整个系统上的软件包。

有两个单独的实例我想使用如下:

  1. 假设我在/etc/nixos/configuration.nixenvironment.systemPackages中添加了一个包,但我忘记了是否运行了nixos-rebuild switch。如果我可以运行一个命令来检查包是否在系统环境中,那就太好了。
  2. 我把programs.bash.enableCompletion设为true in /etc/nixos/configuration.nix。如果不查看尼克斯中的选项,我猜想该选项将设置要安装的bash-completion包。如果我可以运行一个命令来检查bash-completion包是否真的在系统环境中,那就太好了。
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-02-06 18:26:07

没有专门的工具来解决这个问题。您可能喜欢system.copySystemConfiguration选项(请参阅文档中的“注意事项”)。

您将相对接近于nix-store -q --references /run/current-system/sw -- systemPackages中直接包含的nix存储路径列表,但请注意,各种NixOS选项可能会在其中添加包。

票数 6
EN

Unix & Linux用户

发布于 2018-10-12 17:00:35

对于第一个用例,可以使用:

代码语言:javascript
代码运行次数:0
运行
复制
nixos-rebuild dry-build

此命令显示要构建和下载的内容。如果您只想知道是否有需要构建的新包,则可以使用上面的命令。

请注意,这将不会告诉您的软件包已经构建,但目前没有活动。例如。如果你把火狐添加到你的configuration.nix,重建,删除火狐,重建,然后添加火狐,然后运行上面它不会显示任何东西,因为没有什么新的构建。Nix将旧包保存到垃圾收集为止。

还有nixos-rebuild dry-activate,它构建了新的系统,但不做任何更改。它将显示其他更改,比如禁用/启用某些服务。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/422147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档