Linux yum/dnf工具

news/2024/12/29 6:01:59/

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://www.ppmy.cn/news/402166.html

相关文章

Linux基础学习(十三)之软件管理

软件管理 1、Linux中软件包的类型2、安装包的名称含义3、管理软件包命令rpm4、本地软件仓库的搭建5、软件管理命令dnf6、网络软件仓库的搭建6、epel源7、第三方软件仓库的搭建方法 1、Linux中软件包的类型 一般软件包的类型有三种: 1、DEB格式,支持优班…

第十二章:磁盘管理

管理交换分区 命令、功能 mkswap 分区设备名 将指定的分区格式化为swap交换文件系统 swapon 交换分区设备名 | -a 启用(或激活)指定的交换分区或所有交换分区 swapoff 交换分区设备名 | -a 禁用指定的交换分区或所有交换分区 swapon -s 查看交换分区的使用情况 fr…

27 日志服务管理

文章目录 27 日志服务管理本章内容日志介绍日志管理日志管理工具journalctl基于MYSQL的日志loganalyzer展示日志:php程序logrotate日志存储 1 系统日志管理1.1 系统日志介绍将系统和应用发生的事件记录至日志中,以助于排错和分析使用:日志记录…

Linux联网,自用

我怀疑是DHCP的问题,我的连接方式不是static,是DHCP 的方式,我主机的dhcp一直是开着的,我怀疑是虚机的dhcp没有打开导致的, 也有可以是主机dhcp需要重新启动,但是这种概率不大,我下周试试 能连…

Linux系统下,修改用户名、主机名、配置静态IP地址

1.修改用户名:将CentOS7系统中的“ third ”用户修改为“ csdn ”用户 1.1 进入root 用户下 ,修改 /etc/passwd 用户信息文件,将third 替换成 csdn vim /etc/passwd 1.2 修改 /etc/group 组信息文件,将third 替换成 csdn vim /e…

记录:CentOS安装配置MySQL8

目录 1、安装 MySQL81.1、安装 mysql 和 mysql-devel1.2、安装 mysql-server1.3、安装完成查看已安装的包1.4、重启mysql服务1.5 、查看初始化的密码1.6、登录MYSQL 2、安装完成后的配置2.1、修改密码2.2、修改密码规则2.3、开启用户远程访问2.4、Navicat测试连接 3、忘记密码怎…

基于Centos7系统搭建Redis集群之主从复制(新手教程)

最近没多少事,就想着搭建个redis集群玩玩,毕竟听起来也是很高大上的东西,但是经过自己的断断续续的搭建,也感觉不是那么难,肯定也只是刚刚入门,搭建的东西也比较简单,并没有触及到里面更深入的内…

【genius_platform软件平台开发】第七十二讲:linux系统驱动开发之-patchelf修改动态库链接器的方法

linux系统驱动开发之-patchelf修改动态库链接器的方法 1. patchelf 命令熟悉1.1 安装1.2 运行1.3 应用-使用自定义的动态库目录1.4 查看rpath信息1.5 设置rpath信息 2. 同名动态库修改应用2.1 第一个动态库文件2.2 应用程序2.3 第二个动态库文件2.4 使用patchelf 工具修改 1. p…