【Linux】中的软件安装:深入探索RPM、SRPM与YUM

news/2025/3/13 14:44:50/

🐇明明跟你说过:个人主页

🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅

🔖行路有良友,便是天堂🔖

目录

一、引言

1、Linux的起源与发展

2、RPM、SRPM与YUM的简要介绍

二、RPM基础 

1、RPM的定义与起源

2、使用RPM安装软件 

3、使用RPM升级软件

4、使用RPM卸载软件

三、SRPM

1、SRPM是什么

2、SRPM的组成部分

3、 SRPM的用途

四、YUM自动化管理 

1、YUM的定义与特点

2、YUM与RPM的关系 

3、配置YUM仓库 

4、使用YUM安装、卸载软件 


一、引言

1、Linux的起源与发展

1991年,芬兰赫尔辛基大学的学生林纳斯·托瓦兹(Linus Torvalds)开始编写一个新的操作系统内核,这个内核最初被称为“Freax”。他的初衷只是想学习操作系统内核的开发,并为自己的个人计算机编写一个操作系统。然而,当他将这个内核发布在Internet上并开放源代码后,全球各地的程序员开始参与到这个项目中来,共同完善这个内核。最终,这个内核被命名为Linux,这个名字是由Linus Torvalds的名字和Unix操作系统的名字组合而成的。

Linux从一开始就坚持源代码的公开和免费使用,任何人都可以对其进行修改和分发。这种开放性和自由性吸引了大量的开发者和用户,使得Linux逐渐成长并成熟起来。如今,Linux已经发展成为一个性能稳定、功能强大的多用户网络操作系统,支持32位和64位硬件,能运行主要的Unix工具软件、应用程序和网络协议。同时,Linux也有上百种不同的发行版,如基于社区开发的Debian、ArchLinux,以及基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。

2、RPM、SRPM与YUM的简要介绍

RPM、SRPM和YUM是与Linux软件包管理相关的重要概念,尤其是在基于Red Hat的发行版(如RHEL、CentOS、Fedora等)中。

1. RPM (Red Hat Package Manager)

RPM 是一种包管理工具,用于安装、升级、卸载、查询和验证Linux系统上的软件包。RPM包通常是预编译的二进制文件,方便用户直接安装。RPM包的文件名通常以 .rpm 结尾。它包含了软件的文件、元数据(如版本号、依赖关系)和脚本(如安装后执行的配置脚本)。


2. SRPM (Source RPM)

SRPM 是RPM的源代码包,通常以 .src.rpm 结尾。SRPM包包含了软件的源代码和一个SPEC文件,该文件定义了如何构建二进制RPM包的过程。开发者或用户可以通过SRPM包重新编译软件,以便在不同的系统上安装或进行定制化。


3. YUM (Yellowdog Updater, Modified)

YUM 是一个高层次的包管理器,用于自动解决RPM包的依赖关系并从指定的仓库中下载安装软件包。它简化了软件包的管理,能够同时处理多个软件包的安装、更新和删除,并自动解决依赖关系。YUM可以从多个软件仓库下载所需的软件包和依赖项。

二、RPM基础 

1、RPM的定义与起源

RPM的定义

  • RPM (Red Hat Package Manager) 是一种开源的包管理系统,最初由Red Hat开发,用于管理Linux操作系统上的软件包。RPM包通常以 .rpm 为扩展名,包含了已编译的二进制文件、软件的元数据(如版本、依赖关系、描述信息)、以及用于安装和配置的脚本。RPM包管理器提供了一套标准化的方式来安装、升级、卸载、查询和验证软件包,使得Linux系统上的软件管理变得更加简单和一致。

RPM的起源

  • RPM的起源可以追溯到1995年,当时Red Hat公司为了解决在Linux系统上管理软件包的复杂性,开发了RPM。它的设计目的是简化软件包的安装和更新过程,并解决软件包依赖的问题。RPM是从较早的包管理系统“RPP (Red Hat Package System)”发展而来的,RPP也由Red Hat开发。
  • 随着时间的推移,RPM逐渐成为多个Linux发行版(如Fedora、CentOS、openSUSE、Mandriva等)的标准包管理系统。由于其开源的特性和广泛的使用,RPM成为了Linux生态系统中一个非常重要的组成部分,不仅仅用于Red Hat系的发行版,也在其他非Red Hat系的发行版中得到了应用和改进。
  • RPM项目后来被社区接管,并由RPM.org维护,继续作为一个独立的开源项目发展。它的设计和实现对Linux软件的分发、管理和自动化部署产生了深远的影响。

 

2、使用RPM安装软件 

使用 rpm 命令可以在Linux系统上安装RPM软件包。安装过程会将RPM包中的文件复制到适当的位置,并执行任何需要的安装脚本。

基本安装命令:

rpm -ivh package.rpm


选项说明:

  • -i:表示安装软件包。
  • -v:显示详细的安装过程。
  • -h:显示安装进度条。

示例:

rpm -ivh httpd-2.4.6-90.el7.x86_64.rpm


这条命令会安装一个名为 httpd 的软件包(一个Apache HTTP服务器的版本)。

3、使用RPM升级软件

如果系统中已经安装了一个版本的RPM包,可以使用 rpm 命令进行升级。升级会替换旧版本的文件,并保留配置文件的自定义更改。

基本升级命令:

rpm -Uvh package.rpm


选项说明:

  • -U:表示升级软件包,如果软件包未安装,它会执行安装操作。

示例:

rpm -Uvh httpd-2.4.6-97.el7.x86_64.rpm


这条命令将升级 httpd 软件包到新版本。

4、使用RPM卸载软件

卸载已安装的软件包时,可以使用 rpm -e 命令。卸载过程将删除软件包中的所有文件,并执行任何需要的卸载脚本。

基本卸载命令:

rpm -e package_name


选项说明:

  • -e:表示卸载软件包。

示例:

rpm -e httpd


这条命令将卸载名为 httpd 的软件包。

注意事项:

卸载一个软件包时,如果其他软件包依赖于它,RPM将阻止卸载。你需要手动解决依赖关系,或者使用 yum remove 等更高层次的工具自动解决这些问题。

三、SRPM

1、SRPM是什么

SRPM (Source RPM) 是一种特殊类型的RPM包,它包含了软件的源代码以及构建该软件的相关信息和指令。SRPM的文件扩展名通常为 .src.rpm。与标准的二进制RPM包不同,SRPM包并不直接用于安装软件,而是用于重新编译和构建二进制RPM包。

2、SRPM的组成部分

一个SRPM包通常包含以下内容:

1. 源代码:

  • 软件的源代码通常以压缩包的形式(如 .tar.gz、.tar.bz2 等)存放在SRPM中。这些是开发者提供的原始代码。


2. SPEC文件:

  • SPEC文件是SRPM的核心部分,它定义了如何从源代码构建二进制RPM包。SPEC文件包含了软件包的名称、版本、发行版、编译过程、安装脚本、依赖关系、文件列表等信息。


3. 补丁文件(可选):

  • 如果开发者或维护者对源代码进行了任何修改或修补,这些补丁文件也会包含在SRPM中,以便在构建过程中应用到源代码上。


3、 SRPM的用途

SRPM主要用于以下几个场景:

1. 自定义编译:

  • 用户或开发者可以通过SRPM包重新编译软件,以适应不同的硬件架构、操作系统版本,或进行自定义优化。特别是在需要特定编译选项或功能时,SRPM提供了灵活性。


2. 查看或修改源代码:

  • SRPM允许用户查看软件的源代码,了解其工作原理,或进行调试和修改。对于开源软件,这是一个重要的特性。


3. 再分发:

  • 维护者可以基于SRPM修改软件包(如应用补丁或更改配置),然后重新打包成新的二进制RPM包进行分发。这对于企业或社区维护的特定版本非常有用。


4. 学习和开发:

  • 开发者可以通过SRPM学习如何构建和打包软件,并使用它作为开发新软件或贡献开源项目的基础。

四、YUM自动化管理 

1、YUM的定义与特点

YUM的定义

YUM (Yellowdog Updater, Modified) 是一种开源的、高层次的软件包管理工具,广泛用于基于RPM的软件包管理系统中,如Red Hat Enterprise Linux (RHEL)、CentOS、Fedora等发行版。YUM通过简化安装、更新和管理RPM包的过程,尤其是在处理软件包依赖关系时,使得系统管理员和用户能够更加方便地维护Linux系统上的软件。

YUM的特点

YUM具有以下几个显著特点:

1. 自动处理依赖关系:

  • YUM可以自动解析并处理软件包的依赖关系。这意味着当用户安装一个软件包时,YUM会自动检查并安装所有所需的依赖包,避免了手动解决依赖问题的麻烦。


2. 使用远程仓库:

  • YUM能够从远程仓库中下载和安装软件包。这使得软件的安装和更新变得非常方便,只需网络连接,YUM即可从指定的仓库中获取所需的软件包及其依赖项。


3. 方便的软件包更新和升级:

  • YUM可以轻松地更新和升级系统上的所有已安装软件包,确保系统始终保持最新的状态。它还支持通过YUM存储库中的版本信息自动选择适当的软件包进行更新。

 

2、YUM与RPM的关系 

YUM 和 RPM 是两种用于管理 Linux 系统上软件包的工具,它们之间有着密切的关系,通常在基于 RPM 的 Linux 发行版(如 Red Hat、CentOS、Fedora)中配合使用。

1. 基础关系

  • RPM (Red Hat Package Manager) 是一种底层的包管理工具,用于安装、升级、卸载、查询和验证 RPM 格式的软件包。RPM 直接与软件包进行交互,但它不会自动处理软件包的依赖关系。
  • YUM (Yellowdog Updater, Modified) 是一个基于 RPM 的高层次包管理工具。YUM 使用 RPM 作为底层工具,但在其基础上添加了自动解决依赖关系的能力,并支持从远程仓库中下载安装软件包。

2. 各自的角色

RPM:

  • 软件包安装和管理:RPM 直接操作 .rpm 文件,用于软件包的安装、升级、卸载等。
  • 依赖关系检查:RPM 具有基本的依赖关系检查功能,但如果依赖未满足,会导致安装失败,需要用户手动解决依赖问题。
  • 低级管理工具:RPM 是一个低级工具,适用于需要精细控制软件包管理的场景,如在没有网络连接或需要强制安装某些包时。

YUM:

  • 自动依赖管理:YUM 会自动解决软件包的依赖关系。当用户安装或更新一个包时,YUM 会检查依赖项,并自动下载和安装所需的依赖包。
  • 仓库管理:YUM 从配置的远程仓库中下载和安装软件包,用户只需指定软件包名称而无需手动处理依赖关系或查找依赖包。
  • 系统更新:YUM 能够一次性更新系统上所有已安装的软件包,确保系统保持最新状态。
  • 高级功能:YUM 提供了更多高级功能,如组包安装、插件扩展、历史记录与回滚等,使得软件管理更为简便和灵活。

3. 工作流程

  • YUM 调用 RPM:当用户使用 YUM 安装、更新或卸载软件包时,YUM 会首先从配置的仓库中检索和下载所需的 RPM 包及其依赖包,然后使用 RPM 工具执行实际的软件包管理操作。因此,YUM 是建立在 RPM 之上的,它是 RPM 的一个前端工具。
  • YUM 解决依赖,RPM 执行操作:YUM 负责处理复杂的依赖关系并选择合适的软件包版本,而 RPM 则负责实际的软件包操作,如将文件复制到系统中、执行安装脚本等。

3、配置YUM仓库 

1. 创建或编辑仓库文件:

在 /etc/yum.repos.d/ 目录中创建或编辑 .repo 文件。例如,可以创建一个名为 custom.repo 的文件:

sudo vi /etc/yum.repos.d/custom.repo


2. 配置仓库文件:

在文件中添加如下内容:

[customrepo]
name=Custom Repository
baseurl=http://example.com/repo/
enabled=1
gpgcheck=1
gpgkey=http://example.com/repo/RPM-GPG-KEY-customrepo


配置项说明:

  • baseurl:远程仓库的 URL 地址。
  • gpgkey:GPG 公钥的 URL 地址,用于验证软件包的签名。

3. 清除缓存并更新仓库列表:

同样需要清除缓存并更新 YUM 仓库列表:

yum clean all
yum repolist

 

4、使用YUM安装、卸载软件 

1. 安装软件包:

使用 install 命令安装指定的软件包。如果软件包有依赖关系,YUM 会自动下载并安装所需的依赖包。

sudo yum install package_name


例如,安装 httpd(Apache HTTP 服务器):
 

sudo yum install httpd

2. 卸载软件包:

使用 remove 命令卸载指定的软件包。YUM 会自动处理并卸载该软件包及其不再需要的依赖包。

sudo yum remove package_name


例如,卸载 httpd:

sudo yum remove httpd

 💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Linux的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!! 


http://www.ppmy.cn/news/1509996.html

相关文章

【算法】蚁群算法

一、引言 蚁群算法(Ant Colony Optimization, ACO)是一种模拟蚂蚁觅食行为的启发式搜索算法。它由Marco Dorigo于1992年提出,适用于解决组合优化问题,如旅行商问题(TSP)、车辆路径问题(VRP&…

【TabBar嵌套Navigation案例-设置页面-解析plist Objective-C语言】

一、我们来做这个设置页面 1.先看一下我们的示例程序,当我们点击上边的这个齿轮时候, 会跳到一个Controller里边来,然后呢,这个Controller,是一个TableView,组的样式, 我们先把这个小功能,先做了,再来说设置页面里边的东西啊, 首先呢,点击这个齿轮的时候,我要找到…

无人机培训机构培训计划详解

随着无人机技术的快速发展和广泛应用,无人机操作员的培训与认证成为保障无人机安全、高效运行的重要环节。本文将详细解析无人机培训机构的培训计划,涵盖基础理论与法规、飞行与气象知识、技能操作培训、高级应用课程、实操与模拟训练、安全与应急处理以…

CentOS 7 上配置 NFS

在 CentOS 7 上配置 NFS(Network File System)服务器,你可以按照以下步骤操作: 步骤 1: 安装 NFS 服务 首先,你需要安装 NFS 相关的软件包。运行以下命令: yum install nfs-utils rpcbind 步骤 2: 配置…

数据内存分布与管理

1.C/C内存分布 栈又叫堆栈--非静态局部变量/函数参数/返回值等等,栈是向下增长的,内存由系统自动分配,自动释放,分配的位置和大小无法主动控制。 内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户…

AIGC:clip-interrogator

文字生成图片是近年来多模态和大模型研究的热门方向,openai提出的CLIP提供了一个方法建立起了图片和文字的联系,但是只能做到给定一张图片选择给定文本语义最相近的那一个,实际项目开发中我们总是需要从一张图片获取描述,clip-int…

Navicat Monitor 荣获 2024 年 DBTA “最佳数据库性能解决方案”读者选择奖

近期,Navicat 以其卓越的服务器监控与深度分析能力在众多杰出竞争者中脱颖而出,其监控产品 Navicat Monitor 荣获了 2024 年度 DBTA 读者选择奖中的“最佳数据库性能解决方案”殊荣。该奖项不仅是对 Navicat Monitor 在数据库监控与分析领域非凡实力的权…

搭建内网开发环境(三)|基于nexus搭建docker私服

引言 上一篇教程中演示如果安装和 nexus 的基本使用,本篇教程将演示如果在 nexus 中搭建 docker 私服,并实战如何上传镜像到私服和从私服下载镜像。 搭建内网开发环境(一)|基于docker快速部署开发环境 搭建内网开发环…