使用指南

更新与选择

理解全部更新、选择性更新、失败保留和取消行为。

全部更新

nix-pins update

没有名称或 --filter 时,处理全部配置中的 Pin。全部更新还会移除 Pins File 中已经不在配置里的 Pin 和 failure。

选择性更新

nix-pins update patchelf ripgrep
nix-pins update --filter '^python-'
nix-pins update patchelf --filter '^python-'

名称与正则匹配结果取并集。显式名称必须全部存在;仅提供正则却没有匹配项时会报错。选择性更新不修改范围之外的锁定条目,也不清理范围之外已经从配置删除的条目。

Source 与 Package 都不能单独作为选择对象。一个 Pin 的所有 Source 共同成功后,才会更新这个 Pin。

只读查看

nix-pins
nix-pins status
nix-pins status patchelf

未指定子命令时执行 status。它读取已有锁定结果和上次失败信息;当前 CLI 没有 status --refresh。

失败与取消

配置错误在执行 Checker 前使整次操作失败。单个 Pin 的运行失败不会阻止其他 Pin 更新:失败 Pin 保留原来的可用内容;首次锁定失败时只记录 failure,不创建带假哈希的 Pin 条目。

成功结果最终统一原子写入 Pins File。取消时不写入。不同进程不能同时写同一 Pins File;工具通过写锁拒绝并发写者。

交互式终端显示 Pin/Source/Package 进度,重定向和 CI 使用文本输出。显示完成表示计算成功,持久化发生在最终写入阶段。