如何获得 Nix 导数的大小?

如何获得 Nix 导数的大小?

构建推导后是否可以计算出推导的大小?例如,在 后nixos-rebuild,新的推导占用了多少空间,排除由于以前的构建而节省的任何存储空间?

答案1

你可能想要nix path-info(例如,对于 emacs):

$ nix-build -A emacs '<nixpkgs>'
$ nix path-info -Sh ./result
/nix/store/3l9lddwxz1mayaxvw8iy50ygzzfh1s1b-emacs-27.2   470.4M

来自尼克斯发行说明:

nix path-info显示有关存储路径的信息,替换nix-store -q.一个有用的功能是选项--closure-size( -S)。例如,以下命令显示当前 NixOS 系统闭包中每个路径的闭包大小,按大小排序:

nix path-info -rS /run/current-system | sort -nk2

另请参阅Nix 安装手册

答案2

尝试这个:

nix-store -q --requisites `nix-build --no-out-link '<nixpkgs>' -A vim` | sort -uf | xargs du -ch | tail -1

我也喜欢看:

for p in /nix/var/nix/profiles/system* /nix/var/nix/profiles/per-user/$USER/profile*
do
   echo -n $p" ⇒ "
   nix-store -q --requisites $p | sort -uf | xargs du -ch | tail -1
done

显然,派生的传递闭包的大小严重重叠(共享库等),因此这些数字总是会增加到超过总空间使用量。不过还是有用的。

相关内容