软件包管理完全指南

最后更新: 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

课后练习

实践任务
  1. 配置国内镜像源加速apt/yum
  2. 使用apt/dnf安装nginx,配置开机启动
  3. 练习软件包的搜索、安装、卸载流程
  4. 使用dpkg/rpm查看.deb/.rpm包信息
  5. 了解snap和flatpak的使用场景

下一篇预告:我们将学习网络配置与管理,掌握Linux网络设置和诊断技能。