从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库,处理更高效
支持插件支持支持
回滚支持提供历史记录,支持回滚

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

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

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

相关文章

高级AI记录笔记(一)

学习位置 B站位置&#xff1a;红豆丨泥 UE AI 教程原作者Youtube位置&#xff1a;https://youtu.be/-t3PbGRazKg?siRVoaBr4476k88gct素材自备 提前将动画素材准备好 斧头蓝图 斧头武器插槽 混合空间 就是改了一下第三人称模版的动画蓝图 行为树中不用Wait实现攻击完…

ffmpeg的下载与安装

废话不多说&#xff0c; 下载地址&#xff0c;得找官网&#xff0c;不然得注意是不是有夹带私活。 FFmpeg 这个是目前的最新版本&#xff1b; 下载的时候看下自己要的版本&#xff0c;我的是Windows10&#xff1b; 解压后的版本长这样&#xff1a; 接下来进行环境变量的配置&…

【http协议笔记】-- 浏览器简单分析get、post请求

环境&#xff1a;为了了解http协议的交互方式&#xff0c;使用edge浏览器简单分析协议内容&#xff0c;给刚入门的小伙伴分享一下&#xff0c;方便大家学习。 以菜鸟教程的网站为例子&#xff1a; 分析post&#xff1a; 请求url&#xff1a; 请求参数&#xff1a; 请求相应&a…

SpringBoot【实用篇】- 热部署

文章目录 目标:1.手动启动热部署2.自动启动热部署4.禁用热部署 目标: 手动启动热部署自动启动热部署热部署范围配置关闭热部署 1.手动启动热部署 当我们没有热部署的时候&#xff0c;我们必须在代码修改完后再重启程序&#xff0c;程序才会同步你修改的信息。如果我们想快速查…

vue3相对vue2有哪些改变?

https://blog.csdn.net/weixin_44475093/article/details/112386778 https://blog.csdn.net/userDengDeng/article/details/114941956 一、vue3的新特性&#xff1a; 1、速度更快 vue3相比vue2 重写了虚拟Dom实现编译模板的优化更高效的组件初始化undate性能提高1.3~2倍SSR速度…

数据库概论实验一

声明&#xff1a;著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 本文章对数据库概论实验一_求出一箱(每箱装100个)零件的重量 并将输出结果-CSDN博客文章浏览阅读2.7k次&#xff0c;点赞4次&#xff0c;收藏25次。实验数据库&#xff0c;表…

绿色能源发展关键:优化风电运维体系

根据QYResearch调研团队最新发布的《全球风电运维市场报告2023-2029》显示&#xff0c;预计到2029年&#xff0c;全球风电运维市场的规模将攀升至307.8亿美元&#xff0c;并且在接下来的几年里&#xff0c;其年复合增长率&#xff08;CAGR&#xff09;将达到12.5%。 上述图表及…

gerrit 搭建遇到的问题

1、启动Apache&#xff0c;端口被占用 : AH00072: make sock: could not bind to address (0S 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。: AH00072: make sock: could not bind to address 0.0.0.:443 a AH00451: no listening sockets available, shutti…

栈和队列相关题 , 用队列实现栈, 用栈实现队列 ,设计循环队列 C/C++双版本

文章目录 1.用队列实现栈2.用栈实现队列3. 设计循环队列 1.用队列实现栈 225. 用队列实现栈 思路&#xff1a; 使用两个队列&#xff0c;始终保持一个队列为空。 当我们需要进行压栈操作时&#xff0c;将数据压入不为空的队列中&#xff08;若两个都为空&#xff0c;则随便压…

关于STM32在代码中的而GPIO里面的寄存器(ODR等)不需要宏定义的问题

1.GPIO为什么需要宏定义地址 在 STM32 这样的微控制器中&#xff0c;硬件寄存器的地址是固定的并且特定于每个外设&#xff08;比如 GPIOA、GPIOB 等&#xff09;。为了方便代码访问这些硬件寄存器&#xff0c;我们通常会使用宏定义来指定每个外设的基地址。这样做有几个理由&a…

kimi智能助手,5大高阶玩法,95%的人还不知道

01 智能搜索:精准定位,一键获取最佳答案 Kimi,作为您的AI助手,拥有卓越的网络搜索能力。 我们能够迅速穿梭于信息海洋,为您筛选出五篇精选网络文章,并提供直接的网址链接。 Kimi的总结能力同样出色,特别适合那些追求效率、不愿深陷长篇文章的用户。 02 PDF速读:快速把…

关于数学建模的一些介绍

为了更好了解世界&#xff0c;我们可以通过数学来描述许多特定的现象&#xff0c;而数学模型就是现实世界的理想化&#xff0c;不过它永远不能完全精确地表示现实世界。 在这篇文章中&#xff0c;我将介绍一些数学建模的基本概念以及相应的基础知识&#xff0c;而关于更具体的…

远翔升压恒流芯片FP7209X与FP7209M什么区别?做以下应用市场摄影补光灯、便携灯、智能家居(调光)市场、太阳能、车灯、洗墙灯、舞台灯必看!

一&#xff0c;概述 FP7209是台湾远翔一款非同步升压LED驱动IC&#xff0c;封装有2种&#xff0c;分别是SOP-8L(EP), TSSOP-14L(EP)。控制外部开关NMOS。 输入低启动电压2.8V&#xff0c;可支持单节锂电池供电。工作电压5V&#xff0c;VFB反馈电压0.25V&#xff0c;反馈电压低…

算法日记 18 day 二叉树

最后三题&#xff0c;二叉树就结束啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;修剪二叉搜索树 669. 修剪二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树…

hashcat使用

0.介绍 Hashcat 软件是一款非常强大的、开源的、号称世界上最快的密码破解软件&#xff0c;配合强大的字典&#xff0c;可以破译超过百分之九十的密码。Hashcat 目前支持各类公开算法高达240类&#xff0c;市面上公开的密码加密算法基本都支持&#xff0c;有 Microsoft LM 哈希…

mysql 安装 windows

新版安装 新版本安装 如果出现initializing database无法安装 则用我当前版本传送门 如MySQL 安装时没有developer default 选项 解决方法传送门 如果上述还不行 可以选择full 汉化下载 传送门

基于Redis缓存机制实现高并发接口调试

创建接口 这里使用的是阿里云提供的接口服务直接做的测试&#xff0c;接口地址 curl http://localhost:8080/initData?tokenAppWithRedis 这里主要通过参数cacheFirstfalse和true来区分是否走缓存&#xff0c;正常的业务机制可能是通过后台代码逻辑自行控制的&#xff0c;这…

vue常见题型(1-10)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 2.2双向绑定的原理是什么vue框架采用的是数据双向绑定的方式&#xff0c;由三个重要部分构成2.2.1.ViewModel2.2.2 双向绑定2.2.3.1.编译Compile2.2.3.2.依赖收集 3…

C语言变量与强制类型转换深度解析

在上一篇文章中&#xff0c;小编对数据类型进行了详细的讲解与剖析&#xff0c;所以本篇文章小编要带大家理解变量和强制类型转。还是老规矩&#xff0c;来波鸡汤&#xff0c;学习一定不能着急&#xff0c;无法一下就学明白的知识我们需要给他时间&#xff0c;一定不要在一个知…

JAVA+微信小程序前后端源码 微信OCR识别 识别身份证信息

官方文档:身份证识别 | 微信开放文档 实现效果 : 用的奥巴马的网络图片测试,图片 后端JAVA代码 这里用的若依的后端,前后端分离版的 package com.ruoyi.common.utils;import java.io.File; import java.io.IOException;import org.apache.http.HttpEntity; import org.apac…