Linux软件包管理
Linux软件包管理全指南
适用系统说明
- RPM系:CentOS/RHEL(Yum/DNF)、Fedora(DNF)
- Debian系:Debian/Ubuntu(APT/dpkg)
- Arch系:Arch/Manjaro(Pacman)
一、Yum软件包管理器(RPM系核心工具)
核心特性
- 专为Red Hat系设计的高级包管理器,自动解决依赖关系
- 基于RPM底层工具,通过仓库元数据实现智能依赖分析
核心操作命令
-
安装软件(含自动依赖处理)
yum install httpd -y # -y跳过确认 yum localinstall /path/to/package.rpm # 安装本地RPM包
-
卸载与清理
yum remove httpd # 仅卸载软件 yum autoremove # 清除孤立依赖包 yum clean all # 清理缓存(/var/cache/yum)
-
升级管理
yum check-update # 检查可升级包 yum update # 常规升级(保留旧内核) yum upgrade # 激进升级(可能移除旧内核)
-
信息查询
yum list installed | grep nginx # 查询已安装 yum info nginx # 显示包详细信息 yum provides /usr/sbin/nginx # 查询文件所属包
高级技巧
- 更换国内源:替换
/etc/yum.repos.d/
下的仓库文件为阿里云/清华镜像源7wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum makecache # 重建元数据缓存
- 仓库管理:
yum repolist all # 列出所有仓库状态 yum-config-manager --add-repo=http://repo.url # 添加新仓库
二、APT与dpkg(Debian/Ubuntu核心工具)
工具层级解析
- 底层工具:dpkg(直接操作.deb文件,不处理依赖)
- 高层工具:APT(自动解决依赖,管理远程仓库)
APT核心命令
# 仓库更新与维护
sudo apt update # 刷新仓库索引(必须定期执行)
sudo apt-get autoclean # 清理旧版本缓存
# 安装与卸载
sudo apt install nginx=1.18.0-0ubuntu1 # 指定版本安装
sudo apt purge nginx # 彻底删除软件及配置
# 系统升级
sudo apt full-upgrade # 处理依赖关系变更(等效旧版dist-upgrade)
dpkg关键操作
dpkg -i package.deb # 手动安装本地deb包(需自行处理依赖)
dpkg -l 'nginx*' # 通配符查询已安装包
dpkg-reconfigure nginx # 重新配置已安装包
工具对比(APT vs apt-get)
功能 | 传统命令 | 新版APT命令 | 优势 |
---|---|---|---|
安装软件 | apt-get install | apt install | 彩色进度条/精简输出3 |
搜索包 | apt-cache search | apt search | 结果高亮显示 |
显示包信息 | apt-cache show | apt show | 关键信息优先展示 |
三、DNF(新一代RPM包管理器)
核心改进
- 依赖解析算法:采用libsolv库,速度比Yum快30%
- 事务历史:支持
dnf history undo 6
回滚操作
关键操作
dnf install --nogpgcheck package # 跳过GPG验证
dnf module list # 查看模块化软件流(如NodeJS多版本)
dnf downgrade package-1.2.3 # 降级到指定版本
四、跨发行版操作对比表
操作类型 | RHEL/CentOS (Yum/DNF) | Debian/Ubuntu (APT) | Arch (Pacman) |
---|---|---|---|
安装软件 | yum install httpd | apt install apache2 | pacman -S apache |
删除软件 | yum remove httpd | apt purge apache2 | pacman -Rns apache |
更新源 | yum makecache | apt update | pacman -Sy |
搜索包 | yum search ‘^nginx’ | apt search nginx | pacman -Ss nginx |
查看包信息 | yum info nginx | apt show nginx | pacman -Si nginx |
清理缓存 | yum clean all | apt autoclean | pacman -Scc |
五、最佳实践与故障处理
-
依赖冲突解决
- Debian系:
aptitude
提供交互式解决方案(按提示选择降级/删除) - RHEL系:
yum deplist package
查看完整依赖树
- Debian系:
-
锁定软件版本
# Yum/DNF yum versionlock add nginx # APT echo "nginx hold" | sudo dpkg --set-selections
-
离线安装方案
- RPM系:
yumdownloader --resolve httpd
下载包及依赖 - Deb系:
apt-offline
生成离线安装包集合
- RPM系:
-
安全更新策略
# 仅安装安全更新 yum --security update # RHEL unattended-upgrades -d # Ubuntu
六、图形化管理工具推荐
- RPM系:dnfdragora(DNF图形前端)
- Debian系:Synaptic(支持仓库优先级调整)
- 跨平台:Cockpit(Web管理界面,支持容器管理)