【Linux】rpm和yum包管理

发布时间:2026/8/31 22:52:49
【Linux】rpm和yum包管理 1.安装包和程序关系用一个形象的示例解释在计算机中安装包和程序的关系程序想要的玩具如微信qq。本质是存储在硬盘上等待被CPU执行的代码和数据安装包快递盒。快递盒中包含玩具的零部件、说明书、以及安装工具。目的是为了将玩具组装好即将软件安装到你的电脑上。Windows概念Linux对应概念说明安装包 (.exe / .msi)RPM包 (.rpm) / DEB包 (.deb)这就是“快递盒”里面装着编译好的程序文件。双击安装包rpm -ivh或yum install执行安装过程把文件解压到系统指定位置。程序的安装位置/usr/bin/、/usr/lib/、/etc/Linux没有C盘它把可执行命令放/usr/bin库文件放/usr/lib配置文件放/etc。程序启动入口 (.exe)命令如nginx、python在Linux里程序本体通常不叫.exe而是一个无后缀的二进制文件如/usr/bin/nginx你在终端敲命令就是在运行它。快捷方式软链接 (ln -s)相当于Windows的桌面快捷方式。在Linux环境下RPM包快递盒不会永久存放用yum下载暂存在/var/cache装完就删除程序玩具安装后它的可执行命令永久存放在/usr/bin/下库文件在/usr/lib下。你想用的时候直接在终端敲命令名如nginx系统就去/usr/bin/里找到它并运行。2.Linux包管理器下载流程2.Linux包管理器下载流程第一步下载当你敲下yum install nginx时系统会根据软件源Repo里的地址把nginx.rpm这个“快递盒”下载到本地的缓存目录/var/cache里。第二步校验下载完后系统会核对这个包的MD5/SHA256校验码确保下载过程没损坏防止文件不完整。第三步解压安装系统调用底层的rpm工具把这个“快递盒”拆开把里面的程序本体可执行文件解压到/usr/bin/把配置文件放到/etc/把库文件放到/usr/lib/。同时把安装信息写入本地的RPM数据库方便以后卸载。第四步缓存保留安装完成后原始的.rpm文件并不会被自动删除。它会默认留在缓存目录里。3.镜像和本地源镜像Mirror指的是“内容完全一致”。它是官方仓库在别的服务器上的一份克隆副本。本地源Local Repo指的是“位置在本地”。它是相对于你的电脑而言处在内网或本机硬盘上的软件仓库。①“本地源”的“本地”是相对于“公网Internet”而言的绝不是相对于“本机这台物理机”。②只要这个源服务器和你的测试机在同一个内网局域网里IP地址能互通ping通它就叫做“本地源”。③你yum install时流量是走内网局域网还是走公网互联网走内网就叫使用本地源走公网就叫使用远程镜像源。它们的关系是本地源通常是通过“同步克隆”一个远程镜像来搭建的。在本地配置文件查看当前所访问源类型你打开 Linux 的源配置文件/etc/yum.repos.d/xxx.repo里面的baseurl后面跟的地址直接说明了它们的身份如果baseurl后面是互联网地址如https://mirrors.aliyun.com这就是在访问公共镜像。如果baseurl后面是内网IP如http://192.168.1.100/centos或file:///mnt/cdrom这就是在访问本地源。4.rpmrpm用于互联网下载包的打包及安装工具包含在某些Linux分发版中处理具有.RPM扩展名的文件。RPM是redHat Package Manager的缩写类似windows的setup.exe4.1简单查询指令rpm -qa功能描述查询已安装的rpm列表注上面2提到的缓存目录/var/cache中保存的是下载的.rpm文件本身当这些rpm文件被RPM工具解压安装后系统在数据库写入这条安装记录此时rpm -qa就能查到此条记录应用示例查询当前系统是否安装了firefoxrpm -q 软件包名功能描述查询软件包是否安装应用实例指定查询firefox是否安装rpm -qi 软件包名功能描述查询软件包的详细信息应用实例查询firefox安装包详细信息rpm -ql 软件包名功能描述查询软件包中的文件应用实例查看firefox软件包在本机所安装的文件rpm -qf 文件全路径名功能描述查询文件所属的软件包应用实例eg1 查询gcc文件属于哪个软件包eg2 查询gcc目录属于哪个软件包注在 Linux 文件系统中一个目录可以被多个 RPM 软件包同时声明为“自己的”在打包规范中用%dir标记。/lib/gcc是所有 GCC 相关工具链存放子文件的“大本营”。为了互不冲突C 编译器、C 编译器、Fortran 编译器、数学库等都会把各自的子目录或文件放进去。因此在安装时它们都会在 RPM 数据库里登记“我也拥有/lib/gcc这个目录”。当你用rpm -qf查询目录而不是具体文件时RPM 会把所有登记过拥有该目录的包全部列出来所以就出现了你看到的 5 个。4.2 删除指令rpm -e 软件包名功能描述删除软件将安装包解压进系统的文件和注册表信息全部删除。注如果其他软件包依赖于要卸载的软件包则卸载时会产生错误信息应用实例删除firefox4.3 安装指令rpm -ivh RPM包全路径名称功能描述安装rpm包即安装软件参数说明i(install) 安装v(verbose)提示h(hash)进度条应用实例安装firefox5.yumyum也是包管理器底层调用rpm。能够自动从yum源下载并安装软件包到本地同时可以自动处理依赖性关系并且一次性安装所有依赖的软件包。5.1 基本指令yum list | grep xx软件包功能描述查询yum服务器是否有指定的软件包应用实例查询yum是否有firefoxyum install xx软件包功能描述安装指定的软件包应用实例使用yum 安装firefoxyum remove xx软件包功能描述卸载指定的软件包并自动处理依赖关系将不再被其他软件使用的依赖包一并移除。参数说明-y 自动确认跳过卸载过程中的交互式确认提示应用实例卸载firefox与 rpm -e 的区别rpm -e卸载时如果遇到其他软件包依赖该软件会直接报错并停止卸载而yum remove会自动分析依赖关系把需要一并移除的依赖包也处理掉卸载过程更省心。6. rpm和yum区别rpmyum数据源本地.rpm文件网络 yum 源仓库依赖处理❌不处理缺依赖直接报错✅自动下载安装全部依赖卸载 / 安装直接操作本地包联网解析底层调用 rpm使用场景手里已经有 rpm 文件离线操作绝大多数日常安装、升级软件总结yum底层还是调用 rpm 去安装软件但是 yum 多了这些能力联网访问 yum 源仓库自动下载.rpm自动分析依赖把所有需要的包一并下载调用 rpm 批量安装处理升级自动解决版本冲突