第 8 章:Nix 包管理 - 入门
学习目标
- 理解 Nix 的核心理念
- 掌握 Nix 的基本使用
- 学会创建简单的开发环境
8.1 什么是 Nix
传统包管理的问题
你是否遇到过这些问题?
- “在我机器上能运行”
- 依赖冲突
- 无法回滚到旧版本
- 环境不一致
Nix 的解决方案
Nix 是一个纯函数式包管理器,特点:
- 可复现:相同的输入产生相同的输出
- 声明式:描述你想要什么,而不是怎么做
- 原子性:安装要么成功,要么失败,不会有中间状态
- 多版本共存:可以同时安装多个版本
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
实践练习
- 安装 Nix
- 搜索并安装
cowsay包 - 运行
cowsay "Hello XUPTArch" - 卸载
cowsay - 使用
nix-shell临时运行cowsay