Debian 核心概念
bash
安装一个本地 .deb 包(若有依赖缺失会直接报错)
sudo dpkg -i package.deb
查看已安装包列表
dpkg -l
移除一个包但保留配置文件
sudo dpkg -r package_name
完全清除包括配置文件
sudo dpkg -P package_name
#### 2.2 APT:高级包管理工具
APT(Advanced Package Tool)在 `dpkg` 之上工作,自动处理依赖关系,从仓库下载并安装。常用命令:
```bash
# 更新本地包索引(获取仓库中最新软件列表)
sudo apt update
# 将所有已安装包升级到最新版本
sudo apt upgrade
# 升级并智能处理依赖变化(可能会卸载或新增包)
sudo apt full-upgrade
# 搜索软件
apt search keyword
# 安装软件
sudo apt install package_name
# 移除软件但保留配置文件
sudo apt remove package_name
# 彻底移除包括配置文件
sudo apt purge package_name
# 自动清理不再需要的依赖包
sudo apt autoremove
认知陷阱:apt update 只更新“可安装软件的列表”,并非升级系统本身。一定要先 update 再 upgrade。
3. 软件仓库与 sources.list
Debian 从哪里获取软件?答案在 /etc/apt/sources.list 文件中。每一行指定一个仓库,格式为:
deb 镜像地址 发行版代号 组件1 组件2 ...
例如,官方稳定版主仓库的典型行:
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
- 组件含义:
main:完全符合《Debian 自由软件准则》的软件,官方支持。contrib:遵守自由准则的软件,但依赖非自由软件(如某些驱动)。non-free:不完全符合自由准则的软件。non-free-firmware:从 Debian 12 开始独立出的固件组件,包含硬件固件。
- 附加仓库:
bookworm-updates(正式发布前的更新)、bookworm-backports(从测试版反向移植的新软件)和bookworm-security(安全更新,极其重要)。
在修改 sources.list 后,务必运行 sudo apt update 使更改生效。
4. 自由软件哲学与 DFSG
Debian 不仅是一个操作系统,更是一份社会契约。它的核心基石是 《Debian 自由软件准则 (DFSG)》。只有符合该准则的软件才能进入 main 仓库。
准则要点:自由使用、自由修改、自由分发、允许修改后的再分发、不得歧视任何人或用途。因此 Debian 默认不包含闭源驱动或部分有版权限制的解码器。你可以主动选择添加 non-free 仓库来获取这些组件,但这体现了 Debian 对用户知情权和软件自由底线的坚持。
5. 系统维护核心概念
5.1 包依赖与冲突
每个 .deb 包都定义了其依赖关系。APT 会确保在安装软件时,所有被依赖的包自动安装;当移除冲突包时,会提醒或自动处理。apt autoremove 就是为清理无人再依赖的“孤儿包”而生。
5.2 包保持与锁定
如果某个包升级会导致问题(例如特定内核版本),可以使用 apt-mark 将其“留住”:
# 标记包为手动安装,防止被 autoremove 移除
sudo apt-mark manual package_name
# 阻止一个包被升级
sudo apt-mark hold package_name
# 取消阻止
sudo apt-mark unhold package_name
5.3 包缓存管理
下载的 .deb 包被缓存在 /var/cache/apt/archives/,占据磁盘空间。定期清理:
# 仅删除过时的缓存包
sudo apt autoclean
# 清空所有缓存
sudo apt clean
6. Debian 网络支柱:镜像站与安全团队
Debian 的全球镜像网络确保你能从地理上最近的服务器获取软件。你可以使用 deb.debian.org 这类全球 CDN 自动选取最佳镜像,也可手动编辑 sources.list 使用教育网/企业特定镜像。
Debian 安全团队单独维护 security.debian.org 仓库。一旦稳定版发现安全漏洞,修复补丁会立即通过该仓库推送,而不等待整个发行版更新。保持安全更新开启是服务器安全的第一道闸门。
7. Debian 内核与启动概念
Debian 使用 Linux 内核,但同样提供 FreeBSD 内核的实验版本(Debian GNU/kFreeBSD)。对于主流系统,理解以下概念很有必要:
- initramfs:包含启动必需驱动与脚本的临时根文件系统,确保内核能挂载真正的根分区。
- DKMS:动态内核模块支持,允许第三方驱动(如 NVIDIA 驱动)在内核升级时自动重新编译匹配,避免系统启动失败。
8. 虚拟包与替代依赖
有些包并非真实软件,而是 虚拟包(如 mail-transport-agent)。当某个软件需要一个“能发邮件的程序”,它可以依赖这个虚拟包,任何提供该功能的真实包(如 postfix, exim4)都可以满足依赖。这增加了系统配置的灵活性。
9. 配置管理与 debconf
安装软件包时弹出的交互式配置界面由 debconf 控制。你可以预先配置或事后重新配置:
# 重新配置一个包(再次进入交互式设置)
sudo dpkg-reconfigure package_name