yum和dnf

CentOS 使用 yum, dnf 解决rpm的包依赖关系
YUM: Yellowdog Update Modifierrpm的前端程序,可解决软件包相关依赖性,可在多个库之间定
位软件包,up2date的替代工具,CentOS 8 dnf 代替了yum ,不过保留了和 yum的兼容性,配置也是
通用的

yum/dnf 工作原理:yum/dnf 是基于C/S 模式
yum 服务器存放rpm包和相关包的元数据库
yum 客户端访问yum服务器进行安装或查询等
yum 实现过程
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的
元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动
下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并
安装。
yum服务器的仓库可以多种形式存在:

ile:// 本地路径
http://
https://
ftp://
注意:yum仓库指向的路径一定必须是repodata目录所在目录

 

yum客户端配置
yum客户端配置文件

etc/yum.conf #为所有仓库提供公共配置
/etc/yum.repos.d/*.repo #为每个仓库的提供配置文件

帮助参考: man 5 yum.conf
相关变量

yumrepo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号,如:876
$arch: CPU架构,如:aarch64, i586, i686x86_64
$basearch:系统基础平台;i386, x86_64
$contentdir:表示目录,比如:centos-8centos-7
$YUM0-$YUM9:自定义变量

范例:http://server/centos/$releasever/$basearch/
http://server/centos/7/x86_64
http://server/centos/6/i386

范例:CentOS 8 配置文件

[root@centos8 ~]# ll /etc/yum.conf
lrwxrwxrwx. 1 root root 12 May 14 2019 /etc/yum.conf -> dnf/dnf.conf
[root@centos8 ~]#cat /etc/yum.conf
[main]
gpgcheck=1 #安装包前要做包的合法和完整性校验
installonly_limit=3 #同时可以安装3个包,最小值为2,如设为01,为不限制
clean_requirements_on_remove=True #删除包时,是否将不再使用的包删除
best=True #升级时,自动选择安装最新版,即使缺少包的依赖

repo仓库配置文件指向的定义:

[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
roundrobin:意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000

yum-config-manager命令

可以生成yum仓库的配置文件及启用或禁用仓库,来自于yum-utils
格式:

#增加仓库
yum-config-manager --add-repo URLfile
#禁用仓库
yum-config-manager --disable “仓库名"
#启用仓库
yum-config-manager --enable “仓库名” 

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum-config-manager --add-repo=http://172.16.0.1/cobbler/ks_mirror/8/

yum-config-manager --add-repo /data/docker-ce.repo

yum-config-manager --disable epel

yum命令的用法:yum [options] [command] [package ...]

 

yum的命令行选项:

-y #自动回答为“yes”
-q #静默模式
--nogpgcheck #禁止进行gpg check
--enablerepo=repoidglob #临时启用此处指定的repo,支持通配符,如:”*“
--disablerepo=repoidglob #临时禁用此处指定的repo,和上面语句同时使用,放在后面的生效

 

显示仓库列表

yum repolist [all|enabled|disabled]

 

yum repolist all

yum --enablerepo=ep* --disablerepo=A* repolist 

显示程序包

 

 

yum list

安装程序包

yum install package1 [package2] [...]

yum reinstall package1 [package2] [...] #重新安装

yum install package1 [package2] [...] --downloadonly --downloaddir=/data #只下載 不安裝

安装epel源包

 

yum -y install sl

yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

rpm -ql elrepo-release-7.0-4.el7.elrepo

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

查询

 

查看程序包information

yum info [...] 

 

查看指定的特性(可以是某文件)是由哪个程序包所提供:yum provides | whatprovides feature1 [feature2] [...]

注意:文件要写全路径,而不只是文件名,否则可能无法查询到

 

yum provides /etc/vsftpd/vsftpd.conf

仓库缓存
清除目录/var/cache/yum/缓存

 

yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

du -sh /var/cache/yum

 

yum clean all

du -sh /var/cache/yum

 

构建缓存:yum makecache

查看yum事务历史
yum 执行安装卸载命令会记录到相关日志中
日志 文件:
#CentOS 7以前版本日志
/var/log/yum.log
#CentOS 8 版本日志
/var/log/dnf.rpm.log
/var/log/dnf.log

日志命令

 

yum history [info|list|packages-list|packages-info|summary|addon-
info|redo|undo|rollback|new|sync|stats

dnf history

 

dnf history info 22

dnf history undo 22 -y

posted @ 2021-12-08 15:28  zzq2021  阅读(425)  评论(0)    收藏  举报