如何查看两个Nix home-manager世代间的软件包差异?
查看Nix Home-Manager两个世代的软件包差异
下面是几种查看指定世代(示例中的ID 4和ID 5)软件包差异的实用方法:
方法一:nix-env+diff对比包列表
直接提取两个世代的已安装包列表,再用diff工具做对比:
- 单独查看每个世代的包清单:
# 查看世代4的已安装包 nix-env -q --profile /nix/store/rsymanhv1an0l8f5m63zxif0wma7fgbl-home-manager-generation # 查看世代5的已安装包 nix-env -q --profile /nix/store/wc91v5ks0w8p7x9w0jqs31b2slw80bsb-home-manager-generation - 直接通过管道对比,带颜色高亮差异:
diff --color <(nix-env -q --profile /nix/store/rsymanhv1an0l8f5m63zxif0wma7fgbl-home-manager-generation) <(nix-env -q --profile /nix/store/wc91v5ks0w8p7x9w0jqs31b2slw80bsb-home-manager-generation)
方法二:用home-manager diff直接对比
如果你的Home-Manager版本支持,这个命令最便捷,还能同步查看配置文件的变更:
- 通过世代ID对比:
home-manager diff 4 5 - 通过世代的存储路径对比:
home-manager diff /nix/store/rsymanhv1an0l8f5m63zxif0wma7fgbl-home-manager-generation /nix/store/wc91v5ks0w8p7x9w0jqs31b2slw80bsb-home-manager-generation
方法三:解析manifest.json对比
每个世代目录下的manifest.json包含详细的包信息,用jq提取包名后对比:
diff <(jq -r '.packages[] | .name' /nix/store/rsymanhv1an0l8f5m63zxif0wma7fgbl-home-manager-generation/manifest.json) <(jq -r '.packages[] | .name' /nix/store/wc91v5ks0w8p7x9w0jqs31b2slw80bsb-home-manager-generation/manifest.json)
内容的提问来源于stack exchange,提问作者Derek Mahar
相关产品推荐
相关产品推荐

