从0开始学习Linux——Yum工具
往期目录:
从0开始学习Linux——简介&安装
从0开始学习Linux——搭建属于自己的Linux虚拟机
从0开始学习Linux——文本编辑器
上一个章节我们简单了解了Linux中常用的一些文本编辑器,本次教程我们将学习yum工具。
一、Yum简介
Yum(全名:Yellowdog Updater, Modified)是一个用于管理Red Hat及其衍生发行版(如 CentOS、Fedora、RHEL 等)软件包的命令行工具。Yum可以自动解决依赖关系,帮助用户安装、更新、删除软件包,从而简化了系统管理和软件包维护工作。
Yum 是基于 RPM
包管理系统的,它的作用是通过简化包的管理过程,使得系统管理员能够轻松地安装和维护软件包,而不必手动处理软件包的依赖关系。
我们在继续讲解Yum之前先补充一下RPM包管理系统。
RPM(Red Hat Package Manager)是一个广泛用于基于 Linux 的操作系统(尤其是 Red Hat 系列如 RHEL、CentOS、Fedora 等)的软件包管理系统。它提供了一种标准化的方法来管理系统中的软件安装、卸载、升级、查询和验证,使用的是.rpm文件格式。
RPM 使得软件包的安装和管理变得高效、可靠,并且能够自动处理软件包的依赖关系、文件冲突以及其他问题。
下面我们了解一下RPM的相关概念。
1、RPM包即.rpm文件
RPM 包是一个压缩文件,包含了要安装的软件、配置文件、文档以及安装过程所需的其他信息。
这里我们来举一个例子:
<name>-<version>-<release>.<architecture>.rpm
在上述例子中name表示的软件的名称,version表示版本,release表示发布号(通常用于区分相同版本的不同构建),architecture表示适用的系统架构(如 x86_64、i386 等)。
2、RPM数据库
系统中安装的所有 RPM 包的信息(如包名、版本、文件列表、安装路径等)都保存在 RPM 数据库中。通过这个数据库,可以快速查询、更新、删除软件包。
补充:RPM数据库
RPM数据库是用于存储已安装的软件包信息的数据库,通常包含关于包的元数据(如版本、文件列表、安装时间等)。
RPM数据库的默认位置是:
/var/lib/rpm/
在该目录下包含着一些重要的文件,例如Packages是据库的核心文件,存储已安装包的信息,而Name、RequireName、ProvideName等是索引文件用于加速查询。
下面我们来讲解一下RPM常用的一些命令去操作RPM数据库。
1、列出已安装的所有包
rpm -qa
2、查询特定软件包信息
rpm -qi 包名
例如在这里我们查询Python信息。
3、列出某个包安装的文件
rpm -ql 包名
4、查询文件属于哪个安装包
rpm -qf 文件路径
5、查询一个包的依赖关系
rpm -qR 包名
6、查询软件包的完整性
rpm -v 包名
注意:RPM数据库是一个二进制数据库(通常是Berkeley DB格式),这意味着普通文本编辑器无法直接查看其内容。你只能通过RPM命令来查询数据库中的信息。
二、Yum基础操作
2.1 软件安装
Yum 可以从配置好的软件源中自动下载并安装软件包,并自动处理软件包间的依赖关系。
yum install 包名
2.2 软件卸载
yum remove 包名
注意:系统中一些rpm包是不能进行卸载的,如上面所示。
2.3 更新软件包
Yum 允许更新已安装的软件包至最新版本。它会从仓库中获取软件包更新并应用。
yum update 包名
注意:若不指明包名则将会更新所有可以更新的包。
2.4 查看软件包信息
yum info 包名
2.5 查找软件包
yum search 待查找字符串
我们在执行搜索命令时可以进行模糊搜索,也就是可以不用将包名给完全输入,例如我要搜索python但是我忘记该包名的名字我只直到py开头,那么我可以输入py,那么它就会帮我找出和py相关的包。
2.6 列出已安装软件包
yum list installed
2.7 清理缓存
由于Yum会缓存下载的软件包以提高后续安装速度。可以使用 yum clean
命令来清理这些缓存,释放磁盘空间。
yum clean all
2.8 其它选项
我们在执行一些命令的时候可以加上-y表示在命令执行过程中无需手动确认,例如:yum install -y vim则表示安装vim的时候如果需要确认,默认选择yes无需确认,如果我们加上-q选项则表示安静运行命令,只是输出一些必要信息。
三、Yum配置文件
Yum 的配置文件位于/etc/yum.conf。这个文件控制了 Yum 的各种行为,包括:
- 配置软件源(仓库)的地址。
- 配置缓存目录。
- 配置日志文件路径。
- 配置一些高级选项,如禁用 GPG 签名检查等。
补充:cat命令
上述我们在查看yum.conf文件的时候用到了cat命令。
cat(concatenate的缩写)是一个在Linux和类Unix操作系统中常用的命令行工具,用于查看、连接和创建文件。这个命令非常简单,但功能强大,通常用于输出文件内容、合并多个文件内容以及创建新文件。
1、查看文件
cat 文件名
2、查看多个文件
cat 文件1 文件2 .....
3、cat常用选项
我们在用cat进行文件查看的时候可以加上其它命令。
cat -命令 文件名
- -n:为输出的每一行加上行号,包括空行
- --number:为输出的每一行加上行号,包括空行
- -b:为输出的每一行加上行号,不包括空行
- --number-nonblank:为输出的每一行加上行号,不包括空行
- -E:在每行的末尾显示$,表示结束
- --show-ends:在每行的末尾显示$,表示结束
- -T:将文件中的制表符显示为^T,可以用于检查是否有制表符
- --show-tabs:将文件中的制表符显示为^T,可以用于检查是否有制表符
- -v:显示不可打印字符(除了换行符和制表符)为
^
或M-
的形式。这对于调试文件中的特殊字符很有帮助。- --show-nonprinting:显示不可打印字符(除了换行符和制表符)为
^
或M-
的形式。这对于调试文件中的特殊字符很有帮助。- -A:这个选项是
-vET
的组合,意味着显示不可打印字符(-v
),显示行末的$
(-E
),并显示制表符(-T
)。这个选项用于查看文件的所有细节。- --show-all:这个选项是
-vET
的组合,意味着显示不可打印字符(-v
),显示行末的$
(-E
),并显示制表符(-T
)。这个选项用于查看文件的所有细节。
4、创建文件
cat命令也可以用于文件的创建并向其中输入内容。在命令行中输入以下命令后,可以直接在终端输入文本内容,按
Ctrl+D
结束输入并保存文件。cat > 文件名
5、文件合并
cat可以将多个文件的内容连接在一起,并将合并后的内容输出到新的文件中。使用输出重定向符号
>
或追加符号>>
,可以将合并结果保存到新文件。cat 待合并文件1 待合并文件2 > 合并后的新文件名
cat 待合并文件1 待合并文件2 >> 合并后的新文件名
注意:上述命令中的“>”在合并过程中遇到相同内容会进行覆盖,而“>>”则是追加。
6、总结
cat一般适合处理小型文件的查看、创建、合并等操作。
四、yum仓库
Yum 使用软件源(或称仓库)来获取软件包。软件源是服务器上存储 RPM 包的目录,Yum 会从这些服务器上下载和安装包。软件源可以配置为 HTTP、FTP 或本地文件路径。
常见的 Yum 软件源包括:
- CentOS 官方源:适用于 CentOS 系统。
- EPEL (Extra Packages for Enterprise Linux):由 Fedora 提供的附加软件包源。
- Remi Repository:第三方源,提供最新的 PHP、MySQL 等软件包。
- RPM Fusion:提供一些非自由的开源软件包,如多媒体编解码器。
Yum的仓库默认保存在/etc/yum.repos.d/。
在上图中我们可以看到/etc/yum.repos.d/目录下只有一个仓库即CentOS-Base.repo。
下面我们就来探究一下整个仓库的内容。
在上述仓库中我们可以看到,它由三部分组成即base模块、updates模块、extras模块,在这些模块中有一些属性,它们的含义如下所示:
- name:该选项中的值是指仓库的名称,在仓库命名中$releasever是CentOS 的版本号(例如 7)。这个名称在 YUM 输出中用于标识该仓库。
- baseurl:镜像url地址,我们可以根据需要进行替换,在上一个教程中我们将它的原始镜像换成了国内的阿里云镜像,这样起到一个加速的作用,当然如果使用原始镜像也可以,只要搭配科学上网也是没问题的。
- gpgcheck:该选项有两个值其中1表示启用 GPG 签名校验。YUM 会通过 GPG 密钥验证下载的软件包是否完整且未被篡改,确保包的安全性。
- gpgkey:该选项中的值是存放 GPG 公钥的 URL。通过这个公钥,YUM 可以验证软件包的签名。
现在我们已经知道了什么是Yum仓库,也去查看了Yum仓库的位置,下面我们将来学习如何去自己创建Yum仓库。
其实很简单,我们只需要使用文本编辑器在/etc/yum.repos.d/目录下创建一个.repo文件,然后我们可以模仿上述我们看到的CentOS-Base.repo仓库去添加内容。
[myrepo]
name=仓库名称
baseurl=镜像源地址/centos/7/x86_64/
enabled=1
gpgcheck=1
gpgkey=镜像源密钥
上述仓库中的属性中enable表示是否启用该仓库,1表示启用。
我们在配置完仓库以后需要去更新仓库缓存。
yum makecache
我们在安装软件的时候也可以指定仓库源。
yum install 包名 --enablerepo=仓库名
当然我们在安装软件的时候也可以禁用某个仓库源。
yum install 包名 --disablerepo=仓库名
五、Yum依赖关系处理
Yum 的一个主要优点是它可以自动处理包之间的依赖关系。在安装、更新或卸载软件包时,Yum 会自动检查并安装所有需要的依赖包。例如,在安装一个软件包时,如果该包依赖其他软件包,Yum 会自动下载并安装这些依赖包,确保软件的正常运行。
六、DNF
在Linux操作系统中,DNF(Dandified YUM)是一个用于管理RPM软件包的包管理工具,主要用于基于RPM包格式的发行版(如Fedora、RHEL、CentOS等)。它是YUM(Yellowdog Updater Modified)的后继者,是一个更现代、功能更强大的包管理工具。
DNF设计目标是提高性能、减少内存使用、更好的依赖关系处理、以及更直观的命令行界面。自从Fedora 22及其后版本开始,DNF已被默认替代YUM。
注意:若系统中没有DNF,那么我们可以使用Yum进行安装。
对于DNF命令就不去过多讲解,因为DNF是Yum的加强版,因此大部分命令都是相同的,例如yum install对应的就是dnf install。
这里我们可以了解一下DNF和Yum的区别:
特性 | Yum | DNF |
---|---|---|
性能 | 相对较慢 | 更快,尤其是依赖解决和包下载 |
内存占用 | 较高 | 更低 |
依赖关系解决 | 使用rpm 库,处理复杂度较高 | 使用libsolv 库,处理更高效 |
支持插件 | 支持 | 支持 |
回滚支持 | 无 | 提供历史记录,支持回滚 |
本次内容就结束了,更多内容将在后续教程中展示。
相关文章:

从0开始学习Linux——Yum工具
往期目录: 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 上一个章节我们简单了解了Linux中常用的一些文本编辑器,本次教程我们将学习yum工具。 一、Yum简介 Yum(全名…...

【Linux】Linux管道揭秘:匿名管道如何连接进程世界
🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 🌈C专栏:C 文章目录 1.什么是管道 ?2. 管道的类型2.1 匿…...
【LeetCode】【算法】155. 最小栈
LeetCode 155. 最小栈 题目描述 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int …...
3.3 windows,ReactOS系统中页面的换出----1
系列文章目录 文章目录 系列文章目录3.3 页面的换出MiBalancerThread()MmTrimUserMemory()MmPageOutVirtualMemory() 3.3 页面的换出 在前一节中我们看到,如果有映射的页面已经被倒换到磁盘上即倒换文件中,…...
QCustomPlot添加自定义的图例,实现隐藏、删除功能(二)
文章目录 实现步骤:详细代码示例:实现原理和解释:使用方法:其他参考要实现一个支持复选框来控制曲线显示和隐藏的自定义 QCPLegend 类,可以通过继承 QCPLegend 并重写绘制和事件处理方法来实现,同时发出信号通知曲线的状态变更。 实现步骤: 继承 QCPLegend 类,添加绘…...

Linux云计算 |【第五阶段】CLOUD-DAY8
主要内容: 掌握DaemonSet控制器、污点策略(NoSchedule、Noexecute)、Job / CronJob资源对象、掌握Service服务、服务名解析CluterIP(服务名自动发现)、(Nodeport、Headless)、Ingress控制器 一…...

岛屿数量 广搜版BFS C#
和之前的卡码网深搜版是一道题 力扣第200题 99. 岛屿数量 题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。…...
hive切换表底层文件类型以及分隔符
1、改底层文件存储类型,但是一般只会在数据文件与期望类型一致的时候使用,比如load等方式时发现建表时没指定对这样的,因为这个语句不会更改具体的底层文件内容,只改元数据 ALTER TABLE 表名 SET FILEFORMAT 希望类型;2、更改数据…...
ChatGPT o1与GPT-4o、Claude 3.5 Sonnet和Gemini 1.5 Pro的比较
全新的ChatGPT o1模型(代号“Strawberry”)是OpenAI的最新进展,专注于以前的AI模型难以应对的领域:高层次推理、数学和复杂编程。OpenAI设计o1模型以花费更多时间思考问题,使其在需要逐层推理的任务中提高准确性。本文…...

asp.net文件防盗链
URLRewriter实现 可以参考下面的文章 代码 .net framework 新建asp.net framework的web项目,新建AntiTheftChainHandler using System.Web;namespace AntiTheftChainStu01.Handler {public class AntiTheftChainHandler : IHttpHandler{public bool IsReusable…...

【日志】力扣58.最后一个单词的长度//14.最长公共前缀//28. 找出字符串中第一个匹配项的下标
2024.11.6 【力扣刷题】 58. 最后一个单词的长度 - 力扣(LeetCode)https://leetcode.cn/problems/length-of-last-word/?envTypestudy-plan-v2&envIdtop-interview-150 int lengthOfLastWord(char* s) {int count 0;for (int i strlen(s) - 1; i…...
华为杯”第十五届中国研究生数学建模竞赛-B题:光传送网建模与价值评估(续)
目录 4. 问题二 光传送网规划 4.1 基本假设 4.2 模型建立 4.3 子问题一 4.2 子问题二 4.5 子问题三 5. 问题三 改善星座图 5.1 问题简述 5.2 问题分析 5.3 建模与问题求解 5.3.1 方案一 5.3.2 方案二 6. 模型评价 6.1 模型的优点 6.2 模型的缺点 参考文献 本文篇幅较长,分为上…...
android 使用xml设置背景图片和圆角
使用xml设置背景图片和圆角 <?xml version"1.0" encoding"utf-8"?> <layer-list xmlns:android"http://schemas.android.com/apk/res/android"><item><shape><solid android:color"android:color/transparen…...
数据结构,问题 E: 表达式括号匹配
题目描述 假设一个表达式有英文字母(小写)和数字、运算符(,—,*,/)和左右小(圆)括号构成,以“”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号…...

国家宠物美容师职业技能等级评价(高级)理论考试题
国家宠物美容师职业技能等级评价 理论考试复习参考范围 高级/三级 宠物美容师(高级)理论考试题 一 判断题 犬只的世界只有黑白灰三种,通过颜色呈现的深浅度进行辨识(A ) A 对 B 错 美国养犬俱乐部简称AKC…...

Spring挖掘:(AOP篇)
学习AOP时,我们首先来了解一下何为AOP 一. 概念 AOP(面向切面编程,Aspect Oriented Programming)是一种编程技术,旨在通过预编译方式或运行期动态代理实现程序功能的统一管理和增强。AOP的主要目标是在不改变原有业务逻辑代码的…...
十四届蓝桥杯STEMA考试Python真题试卷第二套第四题
来源:十四届蓝桥杯STEMA考试Python真题试卷第二套编程第四题:糖果罐调整 该题解通过贪心策略在每一步都选择对当前状态最有利的操作,从而达到最少调整次数的目标。 题目描述 现有 N 罐糖果,且已知每罐糖果的初始数量。现给出两个数值 L 和 R(L≤R),需要把每罐糖果的数…...
单元测试怎么做
单元测试是软件开发中非常重要的一部分,能够确保代码的正确性、可靠性和可维护性。对于 Vue 项目来说,单元测试主要关注的是测试组件及其相关功能是否正常。下面是如何在 Vue 项目中进行单元测试的详细步骤,包括测试框架的选择、测试工具的配…...

移动应用开发 实验二:标准身高计算器
文章目录 准备工作一,创建Android Studio项目二,创建活动模块三,设计用户界面(一)设置页面布局(二)添加标题文本控件(三)设计体重输入框(四)设计性…...

金华迪加现场大屏互动系统 mobile.do.php 任意文件上传漏洞复现
0x01 产品描述: 金华迪加现场大屏互动系统是由金华迪加网络科技有限公司开发的一款专注于增强活动现场互动性的系统。该系统设计用于提供高质量的现场互动体验,支持各种大型活动,如企业年会、产品发布会、展览展示等。其主要功能包…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...