Linux yum/dnf工具

article/2025/11/1 14:31:52

yum/dnf工具

1、yum/dnf工具简介

yum工具(yellowdog update manager)基于RPM进行开发。最大的优势就是能够解决rpm包的依赖问题;yum能够自动解决软件安装时的依赖关系。有优势就有劣势;yum工具也有缺点,如果在未完成安装的情况下强行中止安装过程,下次再安装时将无法解决依赖关系;dnf工具可以解决此问题。

dnf工具是Redhat8和Centos8上用来代替yum的一个工具,其存在的意义就是处理yum的缺陷,其用法与yum是完全一样的,甚至连选项都是一样的,你可以理解为dnf就是yum,只是换了个名字而已。

2、yum/dnf的工作原理

yum工具除了能够解决软件安装时的依赖关系以外,还提供了一个仓库的功能。

yum仓库也叫yum源,类似安卓系统的软件商店;Linux系统配置了yum仓库之后就可以直接从仓库获取rpm包,就不需要去单独下载;yum的工作需要两部分来合作,一部分是yum服务器端,另一部分就是客户端的yum工具。

yum.jpg

3、yum/dnf工具包含的文件

3.1 yum/dnf元数据(服务端)

  • 存放位置(服务器端repodata目录)
  • 包含的文件及其对应的功能
    • primary.xml.gz
      • 当前仓库所有rpm包的列表;
      • 依赖关系;
      • 每个rpm包安装生成的文件列表
    • filelists.xml.gz
      • 当前仓库所有rpm包的所有文件列表
    • other.xml.gz
      • 额外信息,rpm包的修改日志
    • repomd.xml
      • 记录的是primary.xml.gz、filelists.xml.gz、other.xml.gz这三个文件的时间戳和校验和
    • comps*.xml
      • rpm包分组信息

3.2 yum/dnf的配置文件(客户端)

yum/dnf的配置文件有哪些:

  • /etc/yum.conf 或 /etc/dnf.conf 作用:为所有仓库提供公共配置
  • /etc/yum.repos.d/*.repo 作用:为仓库的指向提供配置

4、yum/dnf仓库管理

yum/dnf仓库也叫yum/dnf源,类似安卓系统的软件商店;Linux系统配置了yum/dnf仓库之后就可以直接从仓库获取rpm包,就不需要去单独下载。

4.1 yum/dnf本地仓库配置

  • 配置本地仓库首先我们要有rpm包和仓库的元数据,而Linux的ISO镜像中自带rpm包和元数据,所以我们需要先挂载ISO镜像。
#挂载光盘镜像,临时挂载
[root@hzz ~]# mkdir /mnt/cdrom
[root@hzz ~]# mount /dev/sr0 /mnt/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载#永久挂载
[root@hzz ~]# echo "/dev/sr0 /mnt/cdrom iso9660 defaults 0 0" >> /etc/fstab
  • 配置本地仓库Redhat/Centos8.0:/etc/yum.repos.d/*.repo
[root@hzz ~]# cd /etc/yum.repos.d/
[root@hzz yum.repos.d]# ls
redhat.repo#Redhat8.0以后需要配置两个仓库BaseOS和AppStream,7.0只需要配置一个即可。
[root@hzz yum.repos.d]# vim hzz.repo
[BaseOS]
name=BaseOS
baseurl=file:///media/cdrom/BaseOS
gpgcheck=0
enabled=1[AppStream]
name=AppStream
baseurl=file:///media/cdrom/AppStream
gpgcheck=0
enabled=1[root@hzz yum.repos.d]# ls
hzz.repo  redhat.repo# /etc/yum.repos.d/*.repo配置文件内容详解
[Repo_Name]:仓库标识
name:仓库名称
baseurl:仓库的具体路径,接受以下三种类型ftp://http://file://
gpgcheck:可选值{1|0},1为检查软件包来源合法性,0为不检查来源如果gpgcheck设为1,则必须用gpgkey定义密钥文件的具体路径gpgkey=/PATH/TO/KEY
enabled:可选值{1|0},1为启用此仓库,0为禁用此仓库
  • 清空本地仓库缓存
[root@hzz ~]# yum clean all
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
正在清理软件源: hzz
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
  • 缓存元数据
[root@hzz ~]# yum makecache 
已加载插件:fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base                                                               | 3.6 kB  00:00:00     
epel                                                               | 4.7 kB  00:00:00     
extras                                                             | 2.9 kB  00:00:00     
mysql-connectors-community                                         | 2.6 kB  00:00:00     
mysql-tools-community                                              | 2.6 kB  00:00:00     
mysql57-community                                                  | 2.6 kB  00:00:00     
updates                                                            | 2.9 kB
  • 列出所有可用仓库
[root@hzz ~]# yum repolist
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
源标识                                           源名称                                        状态
!hzz                                             hzz                                           4,986
repolist: 4,986

4.2 网络仓库配置

网络仓库获取rpm包就直接从开源镜像站获取即可,配置方式和本地仓库基本一致。

开源镜像站地址:
http://mirrors.163.com
http://mirrors.sohu.com
https://mirrors.tuna.tsinghua.edu.cn
http://mirrors.aliyun.com

  • 配置网络yum仓库
//配置网络yum仓库:/etc/yum.repos.d/*.repo
[root@hzz yum.repos.d]# vim hzz.repo
[BaseOS]
name=BaseOS
baseurl=https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/
gpgcheck=0
enabled=1[AppStream]
name=AppStream
baseurl=https://mirrors.aliyun.com/centos/8/AppStream/x86_64/os/
gpgcheck=0
enabled=1
  • 部分开源镜像站提供了repo配置文件,我们可以直接下载使用
//阿里云直接提供了centos的repo配置文件,直接复制下面命令即可。
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
  • EPEL的方式配置网络yum仓库,通过安装rpm包配置网络仓库
//这里下载的是阿里云centos8的EPEL包,安装之后8.0系统即可使用网络仓库。
[root@hzz ~]# wget https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/Packages/centos-linux-release-8.3-1.2011.el8.noarch.rpm[root@hzz ~]# ls
anaconda-ks.cfg  centos-linux-release-8.3-1.2011.el8.noarch.rpm[root@hzz ~]# rpm -ivh centos-linux-release-8.3-1.2011.el8.noarch.rpm
警告:epel-release-7-11.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...1:epel-release-7-11                ################################# [100%]

5、yum/dnf管理软件

5.1 yum/dnf命令

//yum命令语法
yum/dnf [options] [command] [package ...]//常用的选项
-y                              //自动回答为"yes"
-q                          	//静默模式,安装时不输出信息至标准输出
--nogpgcheck                	//使用当gpgcheck=1时会使用gpgkey验证包的来源合法性,此时可以使用此命令跳过检查
--disablerepo=repoidglob    	//临时禁用此处指定的repo
--enablerepo=repoidglob     	//临时启用此处指定的repo
--noplugins                     //禁用所有插件//常用的command
list          		        //列出所有的包all        		        //默认项available 		        //列出仓库中有的,但尚未安装的所有可用的包installed  		        //列出已经安装的包updates    		        //可用的升级clean           	        //清理缓存all			        //清除所有缓存packages		        //清除包缓存headers		        //清除头部缓存metadata		        //清除元数据缓存dbcache		        //清除数据库缓存repolist       		        //显示repo列表及其简要信息all			        //列出所有仓库enabled    		        //默认项,列出开启的仓库disabled		        //列出关闭的仓库install         	        //安装,可以一次安装多个包yum install packages [...]remove		   	        //卸载,可以一次卸载多个包provides command         	//查看指定命令是由哪个包安装生成的grouplist     		        //列出可用的组groupinstall "group name"       //安装一组软件localinstall   		        //安装本地rpm包,自动解决依赖关系info   			        //查看包的信息,显示rpm -qi package的结果yum info packagesupdate          	        //升级yum update packages [...]
update_to     		        //升级为指定版本downgrade package1 package2     //将package1降级为package2search string  		        //以指定的关键字搜索程序包名以及概要信息deplist package		        //显示指定包的依赖关系history    		        //查看yum的历史事务信息

5.2 yum命令使用实例

列出软件包

//列出软件仓库中可用的软件
[root@hzz ~]# yum list all//进行模糊查找
[root@hzz ~]# yum list all | grep "ftp"

安装软件包

//安装仓库内的软件,只需要给出软件名称
[root@hzz ~]# yum install vsftpd//安装过程中分析依赖关系后, 直接安装
[root@hzz ~]# yum -y install httpd//安装本地的rpm包, 如果有依赖关系, 会自动从软件仓库中下载所需依赖
[root@hzz ~]# yum -y localinstall /mnt/cdrom/Packages/httpd-2.4.6-67.el7.x86_64.rpm //安装网络上rpm包
[root@localhost ~]# yum install https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm

与缓存相关的命令

//缓存仓库的元数据文件
[root@hzz ~]# yum makecache//缓存rpm包
//1.安装yum插件,实现只下载软件包不安装
[root@hzz ~]# yum -y install --downloadonly yum-plugin
//2.将软件下载至指定目录
[root@hzz ~]# yum -y install --downloadonly --downloaddir=/tmp httpd//清除所有yum缓存
[root@hzz ~]# yum clean all

与软件包组相关的命令

//列出已经安装和所有可使用的软件包组
[root@hzz ~]# yum grouplist//安装一整个组的软件包
[root@hzz ~]# yum -y groupinstall 'Server with GUI'//yum删除已安装的某个组的软件
[root@localhost ~]# yum -y groupremove 'Server with GUI'

5.3 YUM签名检查机制

RPM软件包管理器的提供组织Redhat在构建rpm包时, 使用其私钥private key对rpm包进行签名。
客户端在安装rpm包时为了验证其合法性, 可以使用Redhat提供的公钥public key进行签名检查。

方式1:在仓库中指定公钥位置

[root@hzz ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=Redhat-$releasever - Base
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY--redhat-release
enabled=1

方式2:不进行签名验证

//不检查软件包的签名
[root@localhost ~]# yum install httpd --nogpgcheck


http://chatgpt.dhexx.cn/article/7VELGDsI.shtml

相关文章

FME+YOLOV7写DNF自动刷图脚本

目录 前言 一、难点分析 二、实现流程 1.DNF窗口位置获取 2.获取训练数据 3.数据标注 4.数据格式转换 5.数据训练 5.刷图逻辑编写 前言 这是一篇不务正业的研究,首先说明,这不是外挂!这不是外挂!这不是外挂!这只是用a…

虚拟同步机

虚拟同步机是基于微网技术提出的一种电力电子技术,传统的电力电子发电设备多采用PQ控制,动态响应快,缺少类似同步电机的阻尼特性,从而引起电网波动等问题。故为了迎合电网特性,使得逆变器具有同步电机阻尼特性的技术&a…

DNF单机版搭建(局域网、外网)

【小白手册】DNF单机版搭建(局域网、外网) 前言单机版和局域网版教程外网搭建教程上传等级补丁上传版本文件登录器秘钥上传运行服务端(跑五国)登录游戏 前言 疫情居家隔离,闲着没事搞了一下单机版的搭建和朋友刷刷图&…

DNF游戏拆解(上)

DNF(地下城与勇士)是一款2D横版格斗游戏,由韩国游戏公司Neople开发,于2005年首次在韩国推出。游戏在全球范围内拥有庞大的玩家社区,其游戏玩法以挑战副本和战斗为主。玩家可选择不同的职业角色,并通过升级和…

DNF自动启停服务端备份数据

开发文档: 需求1:实现自动启停服务端,并判断是否成功。 需求2:停止服务端备份MYSQL数据,实现数据备份,为什么要停止服务端备份,因为热备份偶尔会出问题。 需求3:数据备份完成启动…

DNF台版云服务器搭建(非商用,可联机)

DNF台版云服务器搭建 该教程结合网上大佬的教程和自己搭建过程中遇到的问题所写 文章中出现的文件都将通过百度网盘分享,各个版本的pvf及其配套客户端需要自己寻找哦 百度网盘链接:链接:https://pan.baidu.com/s/14Az9oRvtQwWWoGv7SI0KIQ?pw…

简单的dnf增幅模拟器

简单的DNF增幅模拟器 package com.xxx;import java.util.Random;public class Equipmet {int level;int level_max;public Equipmet(){level_max0;level12;};public Equipmet(int level,int level_max){this.levellevel;this.level_maxlevel_max;};public boolean Strengthen…

脉冲同步器

verilog实现上面的电路: module pulse_syc( input sclk_1, input sclk_2, input p_in, output p_out, output p_out1 ); reg p_in_reg0; reg delay0,delay1,delay2; wire mux_2; assign mux_2(p_in1b1)?~p_in_reg:p_in_reg; a…

c语言答案系统,c语言练习和答案

广告 提供50多种云计算产品c语言入门经典 第5版 习题答案,包括云服务器和云. 创建一站式云产品试用服务,以帮助开发人员和企业以零门槛进入云环境. 有很多解决方法. 这只是参考. 这是一个非常经典的C编程语言输入问题. 可以通过刚才提到的循环嵌套来实现…

李含光《C语言程序设计教程》答案第六章

选择题 1-5 BBDDC 6-10 CCACD 11-15 CBCDA 16 C 填空题 常量(0或数组名),变量地址 指针(或地址常量) 2 12,12 a[0],a[3] 程序阅读题 3 6 abcdefglkjih 976531 5,9 将数组a中的元素值首尾交换并存储在数组中 string_a…

郭晓利c语言答案,急求:c语言编程答案!!!

满意答案 zuoyangood 2013.08.24 采纳率:48% 等级:12 已帮助:12544人 1、fun(char a[],int n) //a[]中为返回的字符串 { int i0,k0; while(n>0) { kk*10n%10; nn\10; } while(k>0) { a[i]k%100; kk\10; } return; } 2、 struct N{ i…

中职一年级c语言考试试卷,一年级C语言课后习题答案.doc

一一练习,填写空白问题1.主功能/ main,主功能/ main,主功能/ main2. 声明部分,执行部分3.源程序4.5.最重要的6. 6.选择题C2. B3.4.5.6.7.7.8.9.10.1.1.2.3. 3.字母,数字,下划线,字母&#xff0c…

c语言行列坐标是先行后j,C语言课后习题参考答案

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答&#xff…

谭浩强C语言练习题及详细答案

本文参考 嗨客网 Java 实战 前言 本篇文章分享的是 C 语言程序设计(谭浩强 C 语言第三版)课后习题及答案,大家在学习了 C 语言程序设计后,做几道相关的练习题,复习一下该知识点,在学习过程中,觉…

王曙燕c语言答案,c语言程序设计王曙燕课后题答案

语言程衡失标志调的基本请描态平述生。 啤酒主要质等花的化学和多酚物成分酸、序设酸、。 计王酿造工艺和低按照酱油类态酱盐固油两发酵分为。评价的意景源论述义。关系资源护的开发辩证论述与保风景。质与自然学性性质不同物学的生土壤土壤有何城市生物。 作用或黄白酒酒的添加…

C语言程序设计第五版 谭浩强 第四章 课后习题 答案

谭浩强C语言程序设计第五版 第4章 课后习题 答案 点我看视频讲解可运行源码记得一键三连哦 第四章 选择结构程序设计 1. 什么是算术运算?什么是关系运算?什么是逻辑运算? 【答案解析】 算熟运算: 算术运算即“四则运算”&am…

关于javascript中的@param

param 提供了对某个函数的参数的各项说明,包括参数名、参数数据类型、描述等。 在前面花括号内可以写参数类型,后面写上你的解释 * param {参数数据类型} 参数名 描述 一般大型项目所用

@Param和 @PathParam

前言 后端接受前端传递的参数,有常用的两种方式,Param和 PathParam, post请求------Param get请求-----PathParam 一、 Param 1.关于Param Param是MyBatis所提供的(org.apache.ibatis.annotations.Param),作为Dao层的注解,作用是…

@Param与@RequestParam

今天工作呀,把这个Param与RequestParam的注解混淆了 我今晚在来熟练下: Param 背景: 这个注解是Param是MyBatis所提供的(org.apache.ibatis.annotations.Param),作为Dao层的注解,作用是用于传递参数,从而…

spring中@param和mybatis中@param使用区别

spring中param /*** 查询指定用户和企业关联有没有配置角色* param businessId memberId* return*/int selectRoleCount(Param("businessId") Integer businessId,Param("memberId") Long memberId); mybatis中的param /*** 查询指定用户和企业关联有没…