yum和dnf
CentOS 使用 yum, dnf 解决rpm的包依赖关系
YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定
位软件包,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
相关变量
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号,如:8,7,6
$arch: CPU架构,如:aarch64, i586, i686,x86_64等
$basearch:系统基础平台;i386, x86_64
$contentdir:表示目录,比如:centos-8,centos-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,如设为0或1,为不限制
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 URL或file
#禁用仓库
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

浙公网安备 33010602011771号