0


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

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

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

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

一、引言

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 结尾。它包含了软件的文件、元数据(如版本号、依赖关系)和脚本(如安装后执行的配置脚本)。

  1. SRPM (Source RPM)

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

  1. 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中。这些是开发者提供的原始代码。
  1. SPEC文件:
  • SPEC文件是SRPM的核心部分,它定义了如何从源代码构建二进制RPM包。SPEC文件包含了软件包的名称、版本、发行版、编译过程、安装脚本、依赖关系、文件列表等信息。
  1. 补丁文件(可选):
  • 如果开发者或维护者对源代码进行了任何修改或修补,这些补丁文件也会包含在SRPM中,以便在构建过程中应用到源代码上。

3、 SRPM的用途

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

  1. 自定义编译:
  • 用户或开发者可以通过SRPM包重新编译软件,以适应不同的硬件架构、操作系统版本,或进行自定义优化。特别是在需要特定编译选项或功能时,SRPM提供了灵活性。
  1. 查看或修改源代码:
  • SRPM允许用户查看软件的源代码,了解其工作原理,或进行调试和修改。对于开源软件,这是一个重要的特性。
  1. 再分发:
  • 维护者可以基于SRPM修改软件包(如应用补丁或更改配置),然后重新打包成新的二进制RPM包进行分发。这对于企业或社区维护的特定版本非常有用。
  1. 学习和开发:
  • 开发者可以通过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会自动检查并安装所有所需的依赖包,避免了手动解决依赖问题的麻烦。
  1. 使用远程仓库:
  • YUM能够从远程仓库中下载和安装软件包。这使得软件的安装和更新变得非常方便,只需网络连接,YUM即可从指定的仓库中获取所需的软件包及其依赖项。
  1. 方便的软件包更新和升级:
  • 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 作为底层工具,但在其基础上添加了自动解决依赖关系的能力,并支持从远程仓库中下载安装软件包。
  1. 各自的角色

RPM:

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

YUM:

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

在文件中添加如下内容:

[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 地址,用于验证软件包的签名。
  1. 清除缓存并更新仓库列表:

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

yum clean all
yum repolist

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

  1. 安装软件包:

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

sudo yum install package_name

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

sudo yum install httpd
  1. 卸载软件包:

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

sudo yum remove package_name

例如,卸载 httpd:

sudo yum remove httpd

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

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

标签: 运维 linux centos

本文转载自: https://blog.csdn.net/weixin_53269650/article/details/141231822
版权归原作者 明明跟你说过 所有, 如有侵权,请联系我们删除。

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

还没有评论