从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的区别:

特性YumDNF
性能相对较慢更快,尤其是依赖解决和包下载
内存占用较高更低
依赖关系解决使用rpm库,处理复杂度较高使用libsolv库,处理更高效
支持插件支持支持
回滚支持提供历史记录,支持回滚

本次内容就结束了,更多内容将在后续教程中展示。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/910777.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

推荐一款基于Flash的交互式园林设计工具:Garden Planner

Garden Planner是一款由Artifact Interactive开发的基于Flash的交互式园林设计工具。它允许用户以拖放的方式安排植物、树木、建筑物和各种对象&#xff0c;使园林规划变得简单直观。此外&#xff0c;Garden Planner提供工具来快速创建铺路、路径和围栏&#xff0c;帮助用户设计…

WinForms 中使用 MVVM 模式构建应用:实现登录页面、页面导航及 SQLite 数据库连接完整框架搭建过程

前言 在传统的 WinForms 应用程序开发中&#xff0c;很多开发者使用事件驱动的设计模式&#xff0c;直接将业务逻辑编写在界面代码中。然而&#xff0c;随着应用程序的复杂性增加&#xff0c;单一的界面文件变得臃肿&#xff0c;难以测试和维护。借鉴 WPF 中 MVVM&#xff08;…

诗林工作室(编号:mb0003)分享:Finbiz自适应响应式网页设计模版,适用于前端设计、博客、官网等多类型开发模版

本设计模版来自外网&#xff0c;为HTML类型的模版&#xff0c;色彩多样&#xff0c;适合Web开发人员做前端站点设计参考使用。全站模版倾向于官网设计、自主博客等多行业的平台模版开发&#xff0c;适合各大CMS的主题模版开发参考&#xff0c;如常见的Wordpress主题开发、Z-Blo…

在python中解析命令行参数,并做一个命令行程序

命令行参数 加密程序 考虑这样一个加密程序&#xff0c;其中一个功能&#xff0c;是对一段字符串进行base64加密&#xff0c;另一个功能&#xff0c;是对一段base64字符串解密&#xff1a; import base64def encrypt_to_base64(input_string):byte_data input_string.encod…

ESP8266 自定义固件烧录-Tcpsocket固件

一、固件介绍 固件为自定义开发的一个适配物联网项目的开源固件&#xff0c;支持网页配网、支持网页tcpsocket服务器配置、支持串口波特率设置。 方便、快捷、稳定&#xff01; 二、烧录说明 固件及工具打包下载地址&#xff1a; https://download.csdn.net/download/flyai…

I.MX6U 裸机开发3. GPIO操作控制LED灯

I.MX6U 裸机开发3. GPIO操作控制LED灯 一、创建项目目录及源文件1. 新建目录2. 远程开发环境3. 创建源文件 二、代码编写1. 打开时钟2. 配置端口复用功能为GPIO3. 配置端口电气属性4. 设置GPIO方向&#xff08;GDIR寄存器&#xff09;5. 输出6. 死循环等待 三、编译程序1. 整体…

「Mac畅玩鸿蒙与硬件19」鸿蒙UI组件篇9 - 自定义动画实现

自定义动画让开发者可以设计更加个性化和复杂的动画效果&#xff0c;适合表现独特的界面元素。鸿蒙提供了丰富的工具&#xff0c;支持通过自定义路径和时间控制来创建复杂的动画运动。本篇将带你学习如何通过自定义动画实现更多样化的效果。 关键词 自定义动画动画路径贝塞尔曲…

FLUX 推出 Ultra 和 Raw 模式,仅10秒生成2K高清图!

大家好&#xff0c;我是渔夫。 就在 2024年11月6日&#xff0c;BlackForestLabs 团队升级了他们最新的文生图模型 FLUX1.1 [pro]。 推出 Ultra 和 Raw 模式&#xff0c;仅10秒就能生成2K高清图片&#xff0c;速度非常惊人。 Ultra 模式&#xff1a;可生成超高分辨率图像&#x…

24/11/6 算法笔记 SVD

SVD&#xff0c;即奇异值分解&#xff08;Singular Value Decomposition&#xff09;&#xff0c;是线性代数中一种重要的矩阵分解方法。 定义 对于任何给定的 mnmn 的实数矩阵 AA&#xff08;其中 mm 是行数&#xff0c;nn 是列数&#xff09;&#xff0c;SVD分解可以表示为…

开发笔记 | 快速上手基于Dify等第三方大模型平台接口实现AI智能聊天

前置&#xff1a; 1.部署Dify&#xff0c;见官方教程及介绍https://docs.dify.ai/zh-hans&#xff0c;本文主要讲基于部署完之后的java实现的调用它的接口实现AI智能聊天&#xff0c;其他AI功能后续有用到再补充&#xff0c;没有就看缘分 2.什么是Dify&#xff1f;可以简单理解…

数据分析:转录组差异fgsea富集分析

文章目录 介绍加载R包数据链接导入数据数据预处理DE testing: 2BP vs no-BP比较limma-voomLoad steroid dataIn No-BP patientsIn 2BP patientsCompare gene expression vs bacterial mass其他系统信息介绍 转录组差异fgsea富集分析是一种基于基因集的富集分析方法,它关注的是…

查看网路信息-ifconfig命令

1.ifconfig缺点&#xff1a; 可以查看接口的网络类型&#xff1b;部分IP和掩码以及状态是否插线&#xff0c;看不到接口下的网关&#xff0c;DNS, 要想看到接口下多个IP,使用 ip addr show 命令 要想看网关&#xff0c;使用 ip route show 命令、route -n 命令 显示路由表内…

基于Spring Boot的中小型制造企业质量管理系统设计与实现,LW+源码+讲解

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自…

Java:多态的调用

1.什么是多态 允许不同类的对象对同一消息做不同的响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。&#xff08;发送消息就是函数调用&#xff09;。多态使用了一种动态绑定&#xff08;dynamic binding&#xff09;技术&#xff0c;指在执行期间判断所引用…

并查集算法详解

文章目录 并查集概念并查集的常见操作构建并查集合并并查集和查找 关于find函数 并查集概念 并查集&#xff08;Union-Find&#xff09;是一种树型的数据结构&#xff0c;用于处理一些不交集的合并及查询问题。其主要应用是判断两个元素是否在同一个集合中&#xff0c;以及合并…

Redis持久化机制——针对实习面试

目录 Redis持久化机制Redis为什么要有持久化机制&#xff1f;Redis持久化方式有哪些&#xff1f;AOF持久化工作原理是什么&#xff1f;有什么优缺点&#xff1f;AOF持久化工作原理AOF的优点AOF的缺点 RDB持久化工作原理是什么&#xff1f;有什么优缺点&#xff1f;RDB持久化工作…

【系统架构设计师(第2版)】七、系统架构设计基础知识

有效的软件体系结构及其明确的描述和设计&#xff0c;已成为软件工程领域中重要的主题。 *注&#xff1a;由于历史原因&#xff0c;研究者和工程人员对**Software Architecture&#xff08;简称SA&#xff09;*的翻译不尽相同&#xff0c;本文中软件“体系结构”和“架构”具有…

【NLP】使用 SpaCy、ollama 创建用于命名实体识别的合成数据集

命名实体识别 (NER) 是自然语言处理 (NLP) 中的一项重要任务&#xff0c;用于自动识别和分类文本中的实体&#xff0c;例如人物、位置、组织等。尽管它很重要&#xff0c;但手动注释大型数据集以进行 NER 既耗时又费钱。受本文 ( https://huggingface.co/blog/synthetic-data-s…

Google推出了AI驱动的学习工具“Learn About”

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Vue3中使用LogicFlow实现简单流程图

实现结果 实现功能&#xff1a; 拖拽创建节点自定义节点/边自定义快捷键人员选择弹窗右侧动态配置组件配置项获取/回显必填项验证 自定义节点与拖拽创建节点 拖拽节点面板node-panel.vue <template><div class"node-panel"><divv-for"(item, k…