未知标题

主要观点:应停止使用 nix-env,因其存在诸多问题,如导致意外行为、引发名称冲突、导致意外的主版本跳跃、存在性能问题、造成隐晦的遮蔽以及隐含的包固定等,有多种替代方案。
关键信息:

  • nix-env 为传统管理包工具,常致意外行为,需用其他替代。
  • 安装包时通过派生名可能导致意外,用 nix-env -iA 可避免但不知包来源。
  • 升级包时名称冲突,不同语言生态包虽属性路径不同但派生名可能相同。
  • 会导致无意的主版本跳跃,如安装 PostgreSQL 。
  • 性能不佳,遍历大型包集效率低。
  • 会造成隐晦的遮蔽,影响系统工具使用。
  • 安装的包独立于系统配置,易致混淆。
  • 有 Matthew Croughan 的相关视频演示问题。
    替代方案:
  • 声明式包管理:用于长期使用的包,通过 NixOS 配置或 Home Manager 管理,系统服务可通过其配置自动定义 systemd 服务。
  • 临时 shell 环境:用于临时需要某命令,可通过 ephemeral shells 或 nix shell 获得临时访问。
  • nix profile:从 Nix 3.0 开始,通过属性名安装包,避免升级时的名称冲突,可从其他包集合安装包。
    文档版本 1.2.1,是活文档,欢迎贡献。
阅读 13
0 条评论