学习目标

  • 理解 Nix 的核心理念
  • 掌握 Nix 的基本使用
  • 学会创建简单的开发环境

8.1 什么是 Nix

传统包管理的问题

你是否遇到过这些问题?

  • “在我机器上能运行”
  • 依赖冲突
  • 无法回滚到旧版本
  • 环境不一致

Nix 的解决方案

Nix 是一个纯函数式包管理器,特点:

  1. 可复现:相同的输入产生相同的输出
  2. 声明式:描述你想要什么,而不是怎么做
  3. 原子性:安装要么成功,要么失败,不会有中间状态
  4. 多版本共存:可以同时安装多个版本

8.2 Nix 的核心概念

Nix Store

所有包都安装在 /nix/store/ 下,每个包有唯一的哈希值:

/nix/store/abc123-gcc-11.2.0/
/nix/store/def456-python-3.9.7/

派生(Derivation)

描述如何构建一个包的配置文件。

环境(Environment)

通过符号链接组合多个包,形成一个环境。

8.3 安装 Nix

单用户安装

sh <(curl -L https://nixos.org/nix/install) --no-daemon

多用户安装(推荐)

sh <(curl -L https://nixos.org/nix/install) --daemon

验证安装

nix --version

8.4 基本使用

搜索包

# 搜索包
nix search nixpkgs hello

# 查看包信息
nix-env -qa hello

安装包

# 安装包
nix-env -iA nixpkgs.hello

# 运行
hello

列出已安装的包

nix-env -q

卸载包

nix-env -e hello

回滚

# 查看历史
nix-env --list-generations

# 回滚到上一代
nix-env --rollback

# 回滚到指定代
nix-env --switch-generation 42

8.5 临时使用包

不想安装,只是临时使用?

# 临时运行
nix-shell -p hello
hello
exit

# 运行后立即退出
nix run nixpkgs#hello

实践练习

  1. 安装 Nix
  2. 搜索并安装 cowsay
  3. 运行 cowsay "Hello XUPTArch"
  4. 卸载 cowsay
  5. 使用 nix-shell 临时运行 cowsay

下一步

第 9 章:Nix 包管理 - 强化

更新时间: