Command-Line

如何在 NixOS 中查找系統範圍內安裝了哪些軟體包?

  • October 12, 2018

是否有一個命令可用於確定在 NixOS 中系統範圍內安裝了哪些軟體包?

例如,我可以列出為我目前使用者安裝的包,使用nix-env -q. 我不知道有什麼方法可以列出從/etx/nixos/configuration.nix.


我想使用兩個單獨的實例:

  1. 假設我在 in 中添加了一個包/etc/nixos/configuration.nixenvironment.systemPackages但我忘記了我是否已經執行nixos-rebuild switch了。如果我可以執行一個命令來檢查包是否在系統環境中,那就太好了。
  2. 我已經programs.bash.enableCompletion設置true/etc/nixos/configuration.nix. 如果不查看nixpkgs中的選項,我猜這個選項會設置bash-completion要安裝的包。如果我可以執行一個命令來檢查bash-completion包是否真的在系統環境中,那就太好了。

對此沒有特定的工具。您可能會喜歡該system.copySystemConfiguration選項(請參閱“警告”文件)。

您會比較接近nix-store -q --references /run/current-system/sw- 直接包含在 中的 nix 儲存路徑列表systemPackages,但請注意,各種 NixOS 選項可能會在其中添加包。

由於 NixOS 採用了安裝軟體的方法,因此沒有安裝在系統範圍內的軟體包之類的東西。與大多數包管理器不同,也就是說。

但是,如果您將使用者環境(又名配置文件)視為等效於system-wide,那麼您可以使用nix-store -q -R /nix/var/nix/profiles/system-${n}-link列出給定使用者環境的依賴關係;其中${n}是配置文件的代號。我所說的依賴是指直接和間接依賴。

此外,如果您使用--tree而不是-R參數,您可以獲得一個 ASCII 依賴樹。

引用自:https://unix.stackexchange.com/questions/422147