nix 工具使用 · 查询软件包、评估表达式与检查依赖至检查存储并清理不用的路径
查询软件包、评估表达式与检查依赖
search 定位包,eval/repl 评估表达式,edit 查看源码,why-depends 解释依赖关系。
nix search · 在 Nix Flake 中搜索软件包
更多信息:https://nix.dev/manual/nix/stable/command-ref/new-cli/nix3-search.html。
- 在
nixpkgs中根据软件包名称或描述进行搜索:
nix search {{nixpkgs}} {{搜索关键词}}- 显示 nixpkgs 中某个软件包的详细描述:
nix search {{nixpkgs#软件包名}}- 查看 GitHub 上某 Flake 仓库提供的所有可用软件包:
nix search {{github:所有者/仓库名}}nix eval · 评估 Nix 表达式并将结果输出到标准输出
更多信息:https://nix.dev/manual/nix/stable/command-ref/new-cli/nix3-eval.html。
- 在当前目录下评估 Nix flake 属性:
nix eval .#{{属性}}- 评估给定的 Nix 表达式:
nix eval --expr '{{你的表达式}}'- 从指定文件中评估 Nix 表达式:
nix eval --file {{文件路径}}- 打印 nixpkgs 中指定软件包的存储路径:
nix eval {{nixpkgs#软件包名}} --raw- 直接从 GitHub 评估 flake 的属性:
nix eval {{github:所有者/仓库名#属性}}- 评估给定的 lambda 函数,并将指定的软件包作为参数传递:
nix eval {{nixpkgs#软件包名}} --apply '{{lambda函数}}'nix repl · 启动一个用于计算 Nix 表达式的交互式环境
有关 Nix 表达式语言的介绍,请参阅 https://nixos.org/manual/nix/stable/language/index.html。 更多信息:https://nix.dev/manual/nix/stable/command-ref/new-cli/nix3-repl.html。
- 启动一个用于计算 Nix 表达式的交互式环境:
nix repl- 将所有包从某个 flake(例如
nixpkgs)加载到作用域中:
:lf {{nixpkgs}}- 从表达式构建一个软件包:
:b {{expression}}- 启动一个包含表达式所提供软件包的 shell 环境:
:u {{expression}}- 启动一个包含表达式所提供软件包依赖项的 shell 环境:
:s {{expression}}nix edit · 在 $EDITOR 中打开 Nix 包的 Nix 表达式文件
更多信息:https://nix.dev/manual/nix/stable/command-ref/new-cli/nix3-edit.html。
- 在
$EDITOR中打开 nixpkgs 中指定包的 Nix 表达式源码:
nix edit {{nixpkgs#软件包}}- 将包的源码直接打印输出至标准输出 (
stdout):
EDITOR=cat nix edit {{nixpkgs#软件包}}nix why-depends · 用于查询某个包为何依赖于另一个包
更多信息:https://nix.dev/manual/nix/stable/command-ref/new-cli/nix3-why-depends.html。
- 显示当前运行的 NixOS 系统为何需要某个存储路径:
nix why-depends {{/run/current-system}} /nix/store/{{checksum-package-version.ext}}- 显示 nixpkgs 中的某个包为何将另一个包作为构建时依赖:
nix why-depends --derivation {{nixpkgs#dependent}} {{nixpkgs#dependency}}构建表达式与项目
Flake 构建与传统表达式构建分别保留;按仓库已有文件选择命令。
nix build · 构建 Nix 表达式(尽可能从缓存下载)
另请参阅:
nix-build,nix flake。 更多信息:https://nix.dev/manual/nix/stable/command-ref/new-cli/nix3-build.html。
- 从 nixpkgs 构建包,并将结果符号链接到
./result:
nix build {{nixpkgs#包名}}- 构建当前目录中 Flake 的包,并显示构建日志:
nix build {{[-L|--print-build-logs]}} {{.#包名}}- 构建某目录中 Flake 的默认包:
nix build {{目录路径}}- 构建包但不创建
result符号链接,而是将存储路径输出到标准输出:
nix build --no-link --print-out-pathsnix-build · 构建 Nix 表达式
另请参阅:
nix build.3。 更多信息:https://nix.dev/manual/nix/stable/command-ref/nix-build.html。
- 构建 Nix 表达式:
nix-build '<nixpkgs>' {{[-A|--attr]}} {{包名}}- 构建沙盒化的 Nix 表达式(在非 NixOS 系统上):
nix-build '<nixpkgs>' {{[-A|--attr]}} {{包名}} --option sandbox true接口对照: 本节是带连字符的传统 nix-build;带空格的新接口见 nix build。
安装软件与管理配置集
新接口配置集和传统用户环境分别查 profile、nix-env,不混用示例中的参数。
nix profile · 从 Nix 配置集中安装、更新和删除软件包
更多信息:https://nix.dev/manual/nix/latest/command-ref/new-cli/nix3-profile.html。
- 从 nixpkgs 向默认配置集中安装软件包:
nix profile install {{nixpkgs#软件包1 nixpkgs#软件包2 ...}}- 将 GitHub 上某个 flake 中的软件包安装到自定义配置集:
nix profile install {{github:作者/仓库#软件包}} --profile {{目录路径}}- 列出默认配置集中当前已安装的软件包:
nix profile list- 通过名称从默认配置集移除从 nixpkgs 安装的软件包:
nix profile remove {{legacyPackages.x86_64-linux.软件包}}- 将默认配置集中的软件包升级到最新可用版本:
nix profile upgrade- 回滚(撤销)默认配置集上的最近一次操作:
nix profile rollbacknix-env · 管理或查询 Nix 用户环境
更多信息:https://nix.dev/manual/nix/stable/command-ref/nix-env.html。
- 列出所有已安装的软件包:
nix-env {{[-q|--query]}}- 查询已安装的软件包(支持
正则表达式):
nix-env {{[-q|--query]}} {{搜索模式}}- 从 Nixpkgs 注册表中查询可用的软件包:
nix-env {{[-qa|--query --available]}} {{搜索模式}}- 从 Nixpkgs 注册表中安装软件包:
nix-env {{[-iA|--install --attr]}} nixpkgs.{{软件包名称}}- 从自定义 URL 安装软件包:
nix-env {{[-i|--install]}} {{软件包名称}} {{[-f|--file]}} {{example.com}}- 卸载软件包:
nix-env {{[-e|--uninstall]}} {{软件包名称}}- 升级软件包:
nix-env {{[-u|--upgrade]}} {{软件包名称}}- 获取特定操作(
--install、--upgrade等)的使用帮助:
nix-env --help --{{选项名称}}检查存储并清理不用的路径
先核对依赖和配置代次,再选择新旧存储接口的清理方式;删除旧代次的示例在垃圾回收条目。
nix store · 管理 Nix 存储
另请参阅:
nix-store。 更多信息:https://nix.dev/manual/nix/stable/command-ref/new-cli/nix3-store.html。
- 收集垃圾,即删除未使用的路径以节省空间:
nix store gc- 将相同的文件硬链接在一起以节省空间:
nix store optimise- 删除特定的存储路径(必须是未使用的路径):
nix store delete /nix/store/{{校验和-包名-版本.扩展名}}- 列出远程存储中存储路径的内容:
nix store --store {{https://cache.nixos.org}} ls /nix/store/{{校验和-包名-版本.扩展名}}- 显示两个存储路径及其依赖关系之间的版本差异:
nix store diff-closures /nix/store/{{校验和-包名-版本.扩展名}} /nix/store/{{校验和-包名-版本.扩展名}}nix-store · 操作或查询 Nix 存储
另请参阅:
nix store.3。 更多信息:https://nix.dev/manual/nix/stable/command-ref/nix-store.html。
- 执行垃圾回收,比如删除未使用的路径:
nix-store --gc- 将相同的文件硬链接到一起以节省空间:
nix-store --optimise- 删除特定的存储路径(必须未在使用中):
nix-store --delete /nix/store/{{checksum-package-version.ext}}- 以树状格式显示存储路径(包)的所有依赖关系:
nix-store {{[-q|--query]}} --tree /nix/store/{{checksum-package-version.ext}}- 用 du 汇总该存储路径的完整依赖闭包占用(不是 Nix 逻辑闭包大小):
du {{[-cLsh|--total --dereference --summarize --human-readable]}} $(nix-store {{[-q|--query]}} --requisites /nix/store/{{checksum-package-version.ext}})- 显示当前存储中直接引用指定路径的条目(反向依赖,不是该路径所依赖的条目):
nix-store {{[-q|--query]}} --referrers /nix/store/{{checksum-package-version.ext}}接口对照: 本节是带连字符的传统 nix-store;带空格的新接口见 nix store。
nix-collect-garbage · 删除未使用且不可访问的 nix 存储路径
可通过
nix-env --list-generations查看各代配置。 更多信息:https://nix.dev/manual/nix/stable/command-ref/nix-collect-garbage.html。
- 删除与用户相关、未被当前各配置代次使用的所有存储路径:
nix-collect-garbage {{[-d|--delete-old]}}- 模拟删除旧的存储路径(仅展示可删除项):
nix-collect-garbage {{[-d|--delete-old]}} --dry-run- 删除超过 30 天的旧配置代次,并回收因此不再可达的存储路径(不是按每个路径创建时间删除):
nix-collect-garbage --delete-older-than 30d- 系统范围内删除各配置当前代次未使用的所有存储路径(需管理员权限):
sudo nix-collect-garbage {{[-d|--delete-old]}}示例整理自 tldr-pages,作者为 tldr-pages team and contributors,遵循 CC BY 4.0。
继续阅读
- 文件与文本处理完整实践与解答
- 文件与文本处理上手与对象
- 文件与文本处理任务与配置