8.3.4 自建本地yum源
上一节的最后我们第一次接触到了一个叫repo的文件(/etc/yum.repos.d/CentOS.repo),仔细观察这个文件不难发现,其实该文件中包含了诸多以http://开头的URL地址。事实上,这些都是可以使用浏览器访问的地址,其中$basearch是个变量,yum会根据本地服务器的操作系统类型自行判断是i386还是x86_64。大家可以试着访问一下http://centos.ustc.edu.cn/centos/5,然后逐个目录查看一下。
在repo文件中,每个以方括弧开始的部分都是一个“源”,所以前面的repo文件中其实定义了base、updates、addons、extras、centosplus、contrib六个源。这里以第一部分为例进行解释,如下所示:
- [base]
- #
- 命名一个叫"base"
- 的源
- name=CentOS-5 - Base
- #
- 该源的名字叫作CentOS-5 - Base
- baseurl=http://centos.ustc.edu.cn/centos/5/os/$basearch/
- #
- 该源的http
- 地址,$basearch
- 是一个变量,其值和命令uname -m
- 输出一致
- #baseurl
- 支持http
- 、file
- 、ftp
- 三种类型
- gpgcheck=1
- #
- 开启gpg
- 验证
- gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
- #
- 定义gpgkey
- 地址
实际上,只要是在/etc/yum.repos.d/目录中以.repo结尾的文件,都是yum认可的repo文件,所以之前的CentOS.repo文件最多可以分拆成6个独立的repo文件。是选择使用一个repo文件包含所有的源,还是每个源都独立使用一个repo文件就全看个人的喜好了,没有好坏之分。
为了建立本地源,首先需要将安装系统的光盘载入光驱中,如果使用的是虚拟机则需要保证光驱设备已经载入了相应的ISO镜像。如果是CentOS系统,默认在/etc/yum.repos.d/目录中会有CentOS-Base.repo和CentOS-Media.repo两个文件,这两个文件是CentOS的默认源,其中CentOS-Base.repo是网络源,会影响本地源,所以此时需要将CentOS-Base.repo禁用。禁用的方式很简单,只需要将该文件重命名成不以.repo结尾的文件即可(比如说CentOS-Base.repo.backup)。然后我们通过修改CentOS-Media.repo建立本地源,修改方式如下所示:
- [root@localhost yum.repos.d]# cat CentOS-Media.repo
- # CentOS-Media.repo
- #
- # This repo is used to mount the default locations for a CDROM / DVD on
- # CentOS-5. You can use this repo and yum to install items directly off the
- # DVD ISO that we release.
- #
- # To use this repo, put in your DVD and use it with the other repos too:
- # yum --enablerepo=c5-media [command]
- #
- # or for ONLY the media repo, do this:
- #
- # yum --disablerepo=\* --enablerepo=c5-media [command]
- [c5-media]
- name=CentOS-$releasever - Media
- baseurl=file:///misc/cd/ #
- 修改此行的目录
- file:///media/cdrom/ #
- 删除此行
- file:///media/cdrecorder/ #
- 删除此行
- gpgcheck=1
- enabled=1 #
- 这里的0
- 改为1
- ,表示启用
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
完成后,使用yum clean all&&yum makecache刷新缓存,然后yum开始下载本地的repo并创建缓存,直到出现Metadata Cache Created,如图8-14所示,表示操作完成了。尝试使用本地源来安装httpd时,其输出结果如图8-15所示。
图8-14 CentOS重建yum缓存
图8-15 使用本地yum安装httpd
如果是在RedHat系统中制作本地源,那么步骤就会略有不同。RedHat安装介质的根目录中并没有repodata目录(这个目录是yum在baseurl中的根目录中可找到,里面有很多格式化的文件),而是在Cluster、ClusterStorage、Server、VT这4个目录中分别放置repodata目录,所以repo文件会有很大不同。首先,创建文件/etc/yum.repos.d/RedHat-Media.repo,内容如下:
- [root@localhost yum.repos.d]# cat RedHat-Media.repo
- [Cluster]
- name=RedHat Cluster
- baseurl=file:///misc/cd/Cluster
- enabled=1
- gpgcheck=0
- [ClusterStorage]
- name=RedHat ClusterStorage
- baseurl=file:///misc/cd/ClusterStorage
- enabled=1
- gpgcheck=0
- [Server]
- name=RedHat Server
- baseurl=file:///misc/cd/Server
- enabled=1
- gpgcheck=0
- [VT]
- name=RedHat VT
- baseurl=file:///misc/cd/VT
- enabled=1
- gpgcheck=0
完成后,使用yum clean all&&yum makecache刷新缓存,这时yum命令就可以使用本地源安装软件了(为了不影响实验效果,注意将/etc/yum.repos.d/目录中的其他repo文件移出目录,或修改为不以.repo结尾的文件名),如图8-16所示。
图8-16 RedHat重建本地缓存