我们在使用rpm命令安装rpm包时常常遇到依赖性问题。yum工具可自动解决包的依赖性的问题,轻松快速安装软件包。
yum采用的是client/server模式。这篇文章我分为三部分,来说说yum怎么工作的!
- yum服务器
- yum客户端
- 配置客户端
1、yum服务器
服务器也就是yum仓库,存放着rmp包、元数据metadata等信息。(元数据整理出每个rpm包的基本信息,包括rpm包对应的版本号,conf文件,binary信息,以及很关键的依赖信息)
- 仓库里面最重要的两个目录
- /repodata:存放metadata文件
- /Packges:存放rpm包
- 我们可以使用光盘作为yum仓库,/repodata的父目录就可以是yum仓库路径。我的光盘挂载在/misc/cd目录下:
[root@CentOS6 ~]#ls /misc/cd
CentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6
EFI Packages RPM-GPG-KEY-CentOS-Security-6
EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6
GPL repodata TRANS.TBL
images RPM-GPG-KEY-CentOS-6
这里,我们就可以使用/misc/cd作为仓库路径了~
2、yum客户端
当客户端要安装软件时,会按照客户端配置文件里指定的服务器路径,去访问yum服务器,并下载下载metadata缓存到客户端。然后根据metadata确认软件包的版本号,所需要的依赖包等,然后再去yum服务器一次下载安装所需要的rpm包。
- 客户端配置文件
- /etc/yum.conf
此文件提供了yum公共配置,定义了yum客户端基本的信息:
cachedir:指定元数据缓存路径
keepcache:安装后是否保留客户端的rpm包
logfile:指定日志路径
- /etc/yum.conf
[root@CentOS6 ~]#cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
...以下略
- /etc/yum.repos.d/*.repo
yum仓库配置文件都存放在/etc/yum.repos.d/目录下,并且以.repo
为文件名尾缀。这些文件指定了具体的仓库名称、路径等信息
[repositoryID]
name:仓库名
baseurl:仓库路径
enabled:是否使能该仓库
gpgcheck:是否坚持gpg
gpgkey:gpgkey路径
3、配置客户端
先观察一下/etc/yum.repos.d/目录情况
[root@CentOS6 ~]#ls /etc/yum.repos.d/
aliyun6.repo aliyun.repo backup
可以看到当前已经有两个.repo尾缀的文件。这里我尝试以下自己配置.repo文件
(1)把光盘挂载在/misc/cd,直接用光盘作为仓库
[root@CentOS6 ~]#mount /dev/sr0 /misc/cd
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@CentOS6 rpm-gpg]#df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 100660656 9007756 86532900 10% /
tmpfs 502056 76 501980 1% /dev/shm
/dev/sda3 50264772 53112 47651660 1% /app
/dev/sda1 991512 34916 905396 4% /boot
/dev/sr0 3878870 3878870 0 100% /media/CentOS_6.9_Final
/dev/sr0 3878870 3878870 0 100% /misc/cd
(2)使用vim /etc/yum.repos.d/local.repo
直接新建一个local.repo文件,按照格式把配置写上去:
[root@CentOS6 ~]#vim /etc/yum.repos.d/local.repo
[Base6.9]
name=repo from cdrom
baseurl=file:///misc/cd
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
gpgcheck=1
enabled=1
(3)验证
[root@CentOS6 rpm-gpg]#yum repolist
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
repo id repo name status
Base6.9 repo from cdrom 6,706
repolist: 6,706
当然,这里我使用的是光盘作为仓库,如果你有其他的yum仓库,可以把file:///misc/cd替换掉哦~
网友评论