🐇明明跟你说过:个人主页
🏅个人专栏:《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 结尾。它包含了软件的文件、元数据(如版本号、依赖关系)和脚本(如安装后执行的配置脚本)。
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的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺
🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!