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

news2024/12/22 17:33:42

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

🏅个人专栏:《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.coloradmin.cn/o/2044264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Redis】数据类型详解及其应用场景

目录 Redis 常⻅数据类型预备知识基本全局命令小结 数据结构和内部编码单线程架构引出单线程模型为什么单线程还能这么快 Redis 常⻅数据类型 Redis 提供了 5 种数据结构,理解每种数据结构的特点对于 Redis 开发运维⾮常重要,同时掌握每种数据结构的常⻅…

【大数据】智慧园区大数据云平台整体建设方案(Word原件)

第一章 项目建设背景及现状 第二章 园区创新发展趋势 第三章 工业园区大数据存在的问题 第四章 智慧工业园区大数据建设目的 第五章 智慧园区总体构架 第六章 系统核心组件 第七章 智慧工业园区大数据平台规划设计 获取方式:本文末个人名片直接获取。 软件资料清单列…

springboot使用aop或Jackson进行数据脱敏

1.aop 启动类加EnableAspectJAutoProxy 自定义注解,在实体类中使用表示被脱敏字段 建立aop切面类 可能这里gpt会建议你用Pointcut("execution(public * com.xx.aop..*.get*(..))")这种方式拦截,这种我试了,拦截不住。猜测在mvc返…

灵办AI免费ChatGPT4人工智能浏览器插件快速便捷(多功能)

灵办AI就是您所需的最佳助手!我们为您带来了一款多功能AI工具,不仅能为您提供精准翻译,还能满足您的对话需求、智能续写、AI搜索、文档阅读、代码生成与修正等多种需求。灵办 AI,真正让工作和学习变得轻松高效! 推荐使…

Android高版本抓包总结

方案1 CharlesVirtualXposedJustTrustMe 推荐使用三星手机此方案 VirtualXposed下载链接:https://github.com/android-hacker/VirtualXposed/releases JustTrustMe下载链接:https://github.com/Fuzion24/JustTrustMe/releases/ 下载完成后使用adb命令…

我的吃鸡日志 中2 从菜鸟到专家

hey,我又来啦! 我的吃鸡日志中1之复仇计划见这个。 (游戏入口:和平精英38.0 快乐星空) 苦学两年半。。。。。。 hey hey hey,这次我必须赢! 打开游戏ing。。。。。。 作战ing。。。。 先在…

43-设计规则:铺铜规则

1、铺铜规则设置 铺铜规则[plane]: PowerPlane Connect Style[负片层连接方式]: PlaneConnect:Direct Connect/ 高级设置->过孔改成完全连接 Power Plane Clearance[负片层间距设置]: PlaneClearance: 8mil Polygon Connect Style[正片层…

电动汽车和混动汽车DC-DC转换器的创新设计与测试方法

汽车 DC-DC 转换器市场规模将达到187亿美元,年复合增长率为10%。 DC-DC 转换器是汽车的重要组成部分,它可以通过电压转换为各种车载系统供电,例如日益复杂的车载信息娱乐系统、使用驾驶辅助系统(ADAS)实现的增强安全功…

VMware虚拟机H群晖7.2懒人包

目录 0. 准备 1. 下载 2. 解压 3. 导入VMware 4.开机 5.查找设备 6.登录初始化 随着DSM系统的升级,群辉NAS很多组件变哈很大,有的已经放弃不再支持,有的与其它功能合并,甚至新开发的组件仅仅支持DSM7以上。为了体验新的组件,因此有必要再安装依噶DSM7.x以上的群辉,…

领域自适应

领域自适应 迁移学习的核心思想在于,一个任务上训练得到的模型所包含的知识可以部分或全部地转移到另一个任务上。这种知识转移可以是网络参数、特征表示、数据间的关系等。通过迁移学习,我们可以利用已有的知识和经验来加速新任务的学习过程&#xff0…

【项目】多设计模式下的同步异步日志系统(二)

继上文对日志系统的介绍,并且实现了日志等级、日志消息的定义、以及格式化消息等。由这三个模块就能完整的输出一条消息。但是考虑到日志消息不可能全部都通过显示器展示。本项目针对落地方式,也进行多种编写,以供使用。 消息落地类(简单工厂…

打包时未添加camera模块,请参考https://ask.dcloud.net.cn/arss/1ooticle/283

今天在app打包使用的时候突然发现app在拍照上传照片的时候遇到这个问题 遇到这种情况通常是因为app打包的时候manifestjson文件中App模块配置中的Camera&Gallery配置没有打开,点击相应选项勾选即可 然后再上传打包就好了! 哈哈哈好久没写博客了最近太忙了&…

zigbee笔记:十三、议栈单播通信理论相关概念原理

一、端点(Endpoint) 1、端点基础知识 (1)、它是一个字节编号的(端点编号是0-255),数据接收和发送的基本单元,在模块通信的时候,发送模块必须指定收发双方模块的网络地址和…

GNOME 如何关闭显示输出 ? (wayland / mutter / KMS / DRI) (源代码阅读)

GNOME 设置里面有这样一个功能: 鼠标/键盘无操作几分钟之后, 自动关闭显示输出, 具体表现为显示器黑屏, 进入休眠模式. 按一下鼠标/键盘, 恢复显示. 这是一个很常见的功能, 但是需要等待一段时间. 于是窝就想, 可不可以用一种简单的方式, 比如 执行一条命令, 随时随地直接进入这…

routine.hpp路由匹配模块

一.路由匹配模块介绍 路由匹配模块可以验证路由键(routing key)和绑定键(binding key)的合法性,并根据不同的交换机类型(如Direct、Fanout和Topic)进行消息的路由匹配。 二.Routine类的实现 设…

从〇 搭建PO模式的Web UI自动化测试框架

Page Object模式简介 核心思想 将页面元素和操作行为封装在独立的类中,形成页面对象(Page Object)。每个页面对象代表应用程序中的一个特定页面或组件。 优点: 代码复用性高 页面对象可以在多个测试用例中复用。 易于维护 …

10 个最佳 Java NLP 库和工具

发现用于高级自然语言处理的最佳 Java NLP 库。通过文本分析、情感分析等增强您的应用程序。 Java 已成为一种功能强大且用途广泛的编程语言,广泛用于开发跨领域的各种应用程序。其丰富的库和工具生态系统使其成为各种任务的理想选择,包括自然语言处理 (…

NVDLA专题1:NVDLA框架介绍

NVDLA概述 深度学习的计算部分主要可以分为4部分:卷积、激活单元(神经元)、池化和归一化。由于每个运算模块都有比较独特的共享特征,因此非常适合给每个模块设计一个对应的特殊硬件实现:内存访问模式容易预测并且很容…

超高速NVME FPGA存储卡记录

板卡概述 XNM-KU-M4 是一款基于KU115 的高速存储模块。 该模块基于NVME固态硬盘,主要用于高速实时数据流的存储和回放,主要用于雷达、通信、电子、卫星等领域,包括高速ADC数据采样实时记录、DAC数据回放、基于光纤或者Rapid IO的高速数据记录…

SOLIDWORKS 2024:开启创新设计新篇章

随着2024年的到来,SOLIDWORKS也迎来了全新的篇章——SOLIDWORKS 2024。这款由Dassault Systmes开发的三维CAD软件,一直以其强大的功能和易用性引领着工程设计领域的潮流。作为SOLIDWORKS在中国的官方授权代理商,亿达四方致力于为企业提供最新…