Linux - 10 软件包管理(rpm,Yum)

1)RPM 底层包管理格式

RPM是CentOS、RHEL等系统的底层包管理格式,对应的rpm命令可直接操作.rpm包,不过不具备自动解决依赖的能力。而yum/dnf是基于RPM封装的工具,能弥补依赖处理的短板。下面按功能分类梳理各命令,明确不同场景下的用法:

一、RPM原生命令(直接操作.rpm包)

这类命令是操作RPM包的基础,适合离线场景或精准排查问题,但需手动处理依赖关系。
1. rpm -i:安装本地.rpm包

  • 一般使用 rmp -ivh
  • 核心参数:-v显示安装的详细过程;-h#标识安装进度条;--force强制安装,可覆盖已安装的冲突版本。
  • 典型示例:正常安装nginx的.rpm包,可执行sudo rpm -ivh nginx-xxx.rpm;若安装时出现版本冲突,需强制覆盖安装,执行sudo rpm -ivh --force nginx-xxx.rpm
  • 适用场景:无网络环境下离线安装单个.rpm格式软件,比如服务器无法联网时,提前下载好软件的.rpm包进行本地安装。

image

2. rpm -e:卸载已安装的RPM软件

  • 核心参数:--nodeps忽略依赖关系强制卸载,此参数慎用。
  • 典型示例:常规卸载已安装的nginx,执行sudo rpm -e nginx;若卸载时因依赖报错无法执行,紧急情况下可执行sudo rpm -e --nodeps nginx跳过依赖检查。
  • 适用场景:删除通过RPM方式安装的软件。需注意,--nodeps可能导致其他依赖该软件的程序异常,仅在排查问题等特殊情况使用。

3. rpm -q:查询已安装的RPM软件相关信息

  • 核心参数:-a查询系统中所有已安装的RPM包;-i显示目标软件包的详细信息(如版本、发布日期、开发者等);-l列出软件包安装的所有文件路径;-f查询指定文件属于哪个RPM包。
  • 典型示例:想确认nginx是否安装,执行rpm -q nginx;查看nginx安装的所有文件位置,执行rpm -ql nginx;若想知道/bin/ls这个文件来自哪个安装包,执行rpm -qf /bin/ls
  • 适用场景:验证软件是否成功安装、定位软件安装目录、排查文件归属问题,比如系统文件丢失时,可查询该文件对应的软件包来修复。

image

4. rpm -U:升级RPM软件包

  • 核心参数:-vh显示升级的详细过程和进度条,方便查看升级状态。
  • 典型示例:将已安装的nginx升级到新版本,执行sudo rpm -Uvh nginx-new-xxx.rpm,若系统中未安装nginx,该命令会自动完成安装。
  • 适用场景:需要将RPM安装的软件更新到新版本,无需先卸载旧版本,操作更便捷。

5. rpm -V:校验已安装软件的文件完整性

  • 无核心额外参数,直接跟软件包名即可。
  • 典型示例:怀疑nginx的安装文件被篡改或误删,执行rpm -V nginx,若输出异常字符,代表对应文件存在修改、丢失等问题。
  • 适用场景:系统排查故障时,校验软件文件是否保持安装时的原始状态,比如服务器被入侵后,可通过此命令检查关键软件是否被篡改。

二、RPM关联优化命令(自动解决依赖)

这类命令基于RPM底层,优化了依赖处理能力,日常使用比纯rpm命令更高效,是CentOS等系统中常用的包管理方式。

  1. yum localinstall:安装本地.rpm包并自动解决依赖
    • 核心参数:-y自动确认安装过程中的所有提示,无需手动输入y确认。
    • 典型示例:安装本地下载的xxx.rpm包,且需要自动补全依赖,执行sudo yum localinstall -y xxx.rpm
    • 适用场景:相比rpm -i,适合安装本地.rpm包但该包依赖其他软件的场景,无需手动逐一安装依赖包,大幅减少操作步骤。
  2. dnf install:RHEL 8+/CentOS 8+专属,处理本地/仓库RPM包
    • 核心参数:-y自动确认安装操作,简化流程。
    • 典型示例:在CentOS 8及以上系统中,安装本地的xxx.rpm包,执行sudo dnf install -y xxx.rpm,既支持本地包安装,也能直接安装仓库中的软件,且依赖处理速度比yum更快。
    • 适用场景:CentOS 8及以上系统中,替代yum处理本地.rpm包或仓库软件安装,日常批量安装、升级软件时优先使用,效率更高且不易因依赖问题报错。

关键注意事项

  1. 依赖问题:rpm 命令最大短板是不自动解决依赖,比如安装A包需先装B包,直接用rpm -i A.rpm会报错,此时可改用yum localinstall自动补全依赖;
  2. 强制操作慎用--force(强制安装)和--nodeps(忽略依赖卸载)可能破坏系统依赖关系,仅在紧急排查时使用;
  3. 适用场景:rpm 命令适合离线安装单个.rpm包、校验软件完整性、查询文件归属等场景;日常批量安装/升级建议优先用 yum/dnf,效率更高且不易出错。

2)Yum 仓库配置

yum(Yellowdog Updater Modified)是 CentOS 7 自带的包管理工具,基于 RPM 底层,核心优势是 自动解决依赖关系,无需手动处理包之间的依赖依赖,日常安装、升级、卸载软件优先用它。

一、基础配置(可选,解决仓库相关问题)

1. 更换国内源(推荐,提升下载速度)

CentOS 7 官方源可能速度慢,可替换为阿里云源(步骤简单):

# 1. 备份默认源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak  #不会保留CentOS-Base.repo

# 2. 下载阿里云 CentOS 7 源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 3. 清理并生成缓存(让新源生效)
yum clean all && yum makecache

2. 常用缓存操作(解决“找不到包”“版本旧”问题)

yum clean all  # 清理过期缓存
yum makecache  # 生成新的软件包索引缓存(加速后续查询/安装)

二、核心功能:安装软件

1. 安装仓库中的软件(最常用)

# 语法:yum install -y 软件包名
yum install -y nginx  # 安装 Nginx 服务(自动解决依赖,包括你已有的 nginx-filesystem)
yum install -y mysql-server  # 安装 MySQL 服务
yum install -y vim wget  # 同时安装多个软件(用空格分隔)
  • 参数 -y:自动确认所有安装提示(不用手动输 y,适合脚本或快速操作);
  • 适用场景:安装系统仓库中存在的软件,比如 Web 服务(Nginx/Apache)、数据库(MySQL)、工具(vim、git)等。

2. 安装本地 RPM 包(并自动解决依赖)

如果你下载了 .rpm 包到本地,用 yum localinstallrpm -i 更方便(自动补依赖):

# 语法:yum localinstall -y 本地RPM包路径
yum localinstall -y /root/nginx-1.20.1-10.el7.x86_64.rpm
  • 适用场景:离线环境或手动下载的 RPM 包安装(比如特殊版本软件)。

3. 重新安装软件(修复损坏的安装)

如果软件文件被误删或篡改,可重新安装还原:

yum reinstall -y nginx  # 重新安装 Nginx,覆盖损坏文件

三、核心功能:查询软件

1. 搜索仓库中的软件(确认包名)

不知道软件的准确包名时,用 search 搜索关键词:

yum search nginx  # 搜索所有包含“nginx”关键词的软件包
yum search mysql  # 搜索 MySQL 相关软件(会显示 mysql-server、mysql-client 等)

2. 查看已安装的软件

# 查看所有已安装软件(太多,通常搭配 grep 过滤)
yum list installed | grep nginx  # 查看已安装的 Nginx 相关包
yum list installed | grep mysql  # 查看已安装的 MySQL 相关包

# 查看单个软件是否安装
yum list installed nginx  # 若输出包信息则已安装,否则未安装

3. 查看软件详情(版本、功能、依赖)

yum info nginx  # 查看 Nginx 的版本、描述、依赖包、安装大小等信息

四、核心功能:升级软件

1. 升级单个软件

yum update -y nginx  # 将已安装的 Nginx 升级到仓库中的最新版本

2. 升级系统所有软件(谨慎使用)

yum update -y  # 升级系统中所有已安装的软件(包括内核、系统组件)
  • 适用场景:系统日常维护、修复安全漏洞;
  • 注意:生产环境建议先备份数据,避免部分软件升级后不兼容(比如内核升级可能影响驱动)。

3. 排除不需要升级的软件

如果不想升级某个软件(比如内核),可临时排除:

yum update -y --exclude=kernel  # 升级所有软件,排除内核

五、核心功能:卸载软件

# 语法:yum remove -y 软件包名
yum remove -y nginx  # 卸载 Nginx 服务(自动删除关联的依赖包,不残留配置)
yum remove -y mysql-server  # 卸载 MySQL 服务
  • 对比 rpm -e:yum 会自动删除该软件的依赖包(且这些依赖包无其他软件使用时),更干净;rpm -e 需手动处理依赖;
  • 适用场景:软件无用时彻底删除,释放磁盘空间。

六、常用辅助功能

1. 查看软件安装的文件路径

yum provides nginx  # 查看 Nginx 包安装的所有文件路径(比如配置文件、可执行文件)

2. 清理无用依赖包(释放空间)

系统安装软件后,可能残留无用的依赖包,可清理:

yum autoremove -y  # 自动删除无依赖的无用包

3. 查看 yum 仓库列表

yum repolist  # 查看当前启用的软件仓库(确认源是否生效)
yum repolist all  # 查看所有仓库(包括禁用的)

七、针对之前的 Nginx 场景实操

你已安装 nginx-filesystem(依赖包),想安装完整 Nginx 服务:

# 1. 直接安装(yum 会复用已有的依赖包,无需重复安装)
yum install -y nginx

# 2. 安装后验证是否成功
yum list installed nginx  # 查看安装结果
systemctl start nginx     # 启动 Nginx 服务
systemctl enable nginx    # 设置开机自启
curl localhost            # 访问本地,若返回 Nginx 欢迎页则成功
posted @ 2025-11-07 22:03  【唐】三三  阅读(2)  评论(0)    收藏  举报