软件包管理完全指南
最后更新: 2026-01-09
作者: Linux Team
页面目录
目录
软件包管理概述
Linux软件包管理系统负责软件的安装、更新、卸载和依赖管理。
┌─────────────────────────────────────────────────────────────┐
│ Linux 软件包系统 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 软件包格式 │ │
│ ├─────────────────────────────────────────────────────┤ │
│ │ .deb ─── Debian/Ubuntu/Mint │ │
│ │ .rpm ─── Red Hat/CentOS/Fedora/SUSE │ │
│ │ .pkg.tar.zst ─── Arch Linux │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 包管理器 │ │
│ ├─────────────────────────────────────────────────────┤ │
│ │ apt/dpkg ─── Debian系 │ │
│ │ yum/dnf ─── Red Hat系 │ │
│ │ pacman ─── Arch Linux │ │
│ │ zypper ─── openSUSE │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
Debian/Ubuntu: APT
APT基础
APT (Advanced Package Tool) 是Debian系发行版的包管理前端。
# 更新软件包列表
sudo apt update
# 升级所有可升级的软件包
sudo apt upgrade
sudo apt full-upgrade # 处理依赖变化(可能删除包)
# 安装更新
sudo apt update && sudo apt upgrade -y
安装软件
# 安装单个软件
sudo apt install nginx
# 安装多个软件
sudo apt install nginx postgresql redis-server
# 指定版本安装
sudo apt install nginx=1.18.0
# 重新安装
sudo apt install --reinstall nginx
# 从本地.deb安装
sudo dpkg -i package.deb
sudo apt install ./package.deb # 自动处理依赖
卸载软件
# 移除软件包(保留配置)
sudo apt remove nginx
# 完全移除(包括配置)
sudo apt purge nginx
sudo apt --purge remove nginx
# 移除不需要的依赖
sudo apt autoremove
# 清理缓存
sudo apt clean # 清空本地缓存
sudo apt autoclean # 清理过时的包
sudo apt-get clean # 同apt clean
搜索和查看
# 搜索软件包
apt search nginx
apt-cache search nginx
apt-cache search "^nginx.*$"
# 查看软件包信息
apt show nginx
apt-cache show nginx
# 查看软件包详情
apt-cache showpkg nginx # 显示版本和依赖
apt-cache policy nginx # 显示可用版本
apt list --upgradable # 列出可升级包
apt list --installed # 列出已安装
dpkg直接管理
# 安装.deb包
sudo dpkg -i package.deb
# 列出已安装
dpkg -l # 所有已安装
dpkg -l nginx # 指定包
dpkg -l | grep "^ii" # 正常安装的包
# 查看文件属于哪个包
dpkg -S /bin/ls # 显示包含ls的包
dpkg -L nginx # 列出nginx安装的文件
# 查看.deb包信息
dpkg -I package.deb # 显示包信息
dpkg --contents package.deb # 列出包内容
# 配置损坏的包
sudo dpkg --configure -a
# 强制安装/卸载
sudo dpkg --force-depends -i package.deb
sudo dpkg --force-overwrite -i package.deb
高级APT配置
# 查看依赖关系
apt-cache depends nginx # nginx依赖
apt-cache rdepends nginx # 依赖nginx的包
# 下载包(不安装)
apt download nginx # 下载到当前目录
apt source nginx # 下载源码包
# 修复依赖问题
sudo apt -f install # 修复依赖
sudo dpkg --configure -a # 配置所有包
# 锁定版本
sudo apt-mark hold nginx # 锁定当前版本
sudo apt-mark unhold nginx # 解除锁定
apt-mark showhold # 显示锁定的包
APT源配置
# 源配置文件
/etc/apt/sources.list
/etc/apt/sources.list.d/*.list
# 阿里云镜像
sudo sed -i 's/cn.archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
# 清华镜像
sudo sed -i 's/cn.archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
# 添加PPA(Personal Package Archive)
sudo add-apt-repository ppa:nginx/stable
sudo add-apt-repository -r ppa:nginx/stable # 删除PPA
Red Hat/CentOS: YUM/DNF
YUM基础
# 安装
sudo yum install nginx
sudo yum install nginx-1.20.1 # 指定版本
sudo yum localinstall package.rpm # 本地安装
# 卸载
sudo yum remove nginx
sudo yum erase nginx # 完全移除
# 更新
sudo yum update
sudo yum update nginx # 更新指定包
sudo yum check-update # 检查可更新
# 清理
sudo yum clean all # 清空缓存
sudo yum makecache # 重建缓存
DNF基础
DNF (Dandified YUM) 是YUM的下一代版本,Fedora默认使用。
# 安装
sudo dnf install nginx
sudo dnf install @httpd # 安装组
# 卸载
sudo dnf remove nginx
# 更新
sudo dnf upgrade
sudo dnf upgrade --refresh # 强制刷新
# 历史
dnf history # 查看操作历史
dnf history undo 5 # 撤销第5个操作
dnf history redo 5 # 重做第5个操作
YUM/DNF搜索和查看
# 搜索
yum search nginx
dnf search nginx
yum search all nginx # 全文搜索
# 信息
yum info nginx
dnf info nginx
# 列表
yum list installed
yum list available
yum list updates
dnf list --installed
dnf list --extras # 不在源中的已安装包
# 文件查询
yum provides /etc/nginx/nginx.conf
yum whatprovides "*bin/nginx"
YUM/DNF组管理
# 组列表
yum grouplist
yum groups list
dnf group list
# 安装组
yum groupinstall "Development Tools"
yum install @'Basic Web Server'
dnf group install "Web Server"
# 更新组
yum groupupdate "Development Tools"
# 删除组
yum groupremove "Development Tools"
RPM直接管理
# 安装
sudo rpm -ivh package.rpm # 安装并显示进度
sudo rpm -ivh --nodeps package.rpm # 忽略依赖
sudo rpm -ivh --force package.rpm # 强制安装
# 卸载
sudo rpm -e package-name # 卸载
sudo rpm -e --nodeps package-name # 忽略依赖
# 查询
rpm -qa # 所有已安装
rpm -qa | grep nginx # 查找包
rpm -qi nginx # 包信息
rpm -ql nginx # 文件列表
rpm -qc nginx # 配置文件
rpm -qd nginx # 文档文件
rpm -qf /usr/sbin/nginx # 文件属于哪个包
rpm -qR nginx # 依赖
YUM/DNF源配置
# 源位置
/etc/yum.repos.d/*.repo
/etc/dnf/dnf.conf
# EPEL源(CentOS/RHEL)
sudo yum install epel-release
# 阿里云镜像
sudo yum install -y wget
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清理重建缓存
sudo yum clean all
sudo yum makecache
Arch Linux: Pacman
# 安装
sudo pacman -S nginx # 安装
sudo pacman -Syu # 同步并升级
sudo pacman -S extra/nginx nginx-debug # 从不同仓库
# 卸载
sudo pacman -R nginx # 移除
sudo pacman -Rs nginx # 移除及依赖
sudo pacman -Rdd nginx # 强制移除(忽略依赖)
# 搜索
pacman -Ss nginx # 搜索
pacman -Qs nginx # 已安装搜索
pacman -Si nginx # 仓库信息
pacman -Qi nginx # 本地信息
pacman -Ql nginx # 文件列表
# 清理
sudo pacman -Sc # 清理未安装的缓存
sudo pacman -Scc # 清理所有缓存
# 组
pacman -Qg # 已安装组
pacman -Sg base # base组包列表
sudo pacman -S base base-devel # 安装组
Snap通用包管理
Snap是Canonical开发的跨发行版包管理系统。
# 安装
sudo snap install nginx
# 查找
snap find nginx
snap find --name nginx # 精确名称
# 信息
snap info nginx
snap list # 已安装列表
snap connections nginx # 接口连接
# 更新
snap refresh # 更新所有snap包
snap refresh nginx # 更新指定
snap refresh --channel=stable nginx # 切换频道
# 卸载
sudo snap remove nginx
sudo snap remove --revision=123 nginx # 移除特定版本
# 其他
snap revert nginx # 回滚
snap disable nginx # 禁用
snap enable nginx # 启用
Flatpak通用包管理
# 安装
flatpak install flathub org.mozilla.firefox
# 查找
flatpak search firefox
# 信息
flatpak info org.mozilla.firefox
flatpak list # 已安装
flatpak list --app # 只显示应用
# 更新
flatpak update
flatpak update org.mozilla.firefox
# 卸载
flatpak uninstall org.mozilla.firefox
flatpak uninstall --unused # 清理未使用的运行时
# 权限
flatpak run --share=network --socket=x11 org.mozilla.firefox
综合对比
| 功能 | apt | yum/dnf | pacman | snap |
|---|---|---|---|---|
| 安装 | apt install |
yum install |
pacman -S |
snap install |
| 卸载 | apt remove |
yum remove |
pacman -Rs |
snap remove |
| 更新列表 | apt update |
yum check-update |
pacman -Sy |
- |
| 升级 | apt upgrade |
yum upgrade |
pacman -Syu |
snap refresh |
| 搜索 | apt search |
yum search |
pacman -Ss |
snap find |
| 查看 | apt show |
yum info |
pacman -Si |
snap info |
| 清缓存 | apt clean |
yum clean all |
pacman -Scc |
snap clean |
课后练习
实践任务
- 配置国内镜像源加速apt/yum
- 使用apt/dnf安装nginx,配置开机启动
- 练习软件包的搜索、安装、卸载流程
- 使用dpkg/rpm查看.deb/.rpm包信息
- 了解snap和flatpak的使用场景
下一篇预告:我们将学习网络配置与管理,掌握Linux网络设置和诊断技能。