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六个源。这里以第一部分为例进行解释,如下所示:


  1. [base]
  2. #
  3. 命名一个叫"base"
  4. 的源
  5. name=CentOS-5 - Base
  6. #
  7. 该源的名字叫作CentOS-5 - Base
  8. baseurl=http://centos.ustc.edu.cn/centos/5/os/$basearch/
  9. #
  10. 该源的http
  11. 地址,$basearch
  12. 是一个变量,其值和命令uname -m
  13. 输出一致
  14. #baseurl
  15. 支持http
  16. file
  17. ftp
  18. 三种类型
  19. gpgcheck=1
  20. #
  21. 开启gpg
  22. 验证
  23. gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
  24. #
  25. 定义gpgkey
  26. 地址

实际上,只要是在/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建立本地源,修改方式如下所示:


  1. [root@localhost yum.repos.d]# cat CentOS-Media.repo
  2. # CentOS-Media.repo
  3. #
  4. # This repo is used to mount the default locations for a CDROM / DVD on
  5. # CentOS-5. You can use this repo and yum to install items directly off the
  6. # DVD ISO that we release.
  7. #
  8. # To use this repo, put in your DVD and use it with the other repos too:
  9. # yum --enablerepo=c5-media [command]
  10. #
  11. # or for ONLY the media repo, do this:
  12. #
  13. # yum --disablerepo=\* --enablerepo=c5-media [command]
  14. [c5-media]
  15. name=CentOS-$releasever - Media
  16. baseurl=file:///misc/cd/ #
  17. 修改此行的目录
  18. file:///media/cdrom/ #
  19. 删除此行
  20. file:///media/cdrecorder/ #
  21. 删除此行
  22. gpgcheck=1
  23. enabled=1 #
  24. 这里的0
  25. 改为1
  26. ,表示启用
  27. 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.3.4 自建本地yum源 - 图1

图8-14 CentOS重建yum缓存

8.3.4 自建本地yum源 - 图2

图8-15 使用本地yum安装httpd

如果是在RedHat系统中制作本地源,那么步骤就会略有不同。RedHat安装介质的根目录中并没有repodata目录(这个目录是yum在baseurl中的根目录中可找到,里面有很多格式化的文件),而是在Cluster、ClusterStorage、Server、VT这4个目录中分别放置repodata目录,所以repo文件会有很大不同。首先,创建文件/etc/yum.repos.d/RedHat-Media.repo,内容如下:


  1. [root@localhost yum.repos.d]# cat RedHat-Media.repo
  2. [Cluster]
  3. name=RedHat Cluster
  4. baseurl=file:///misc/cd/Cluster
  5. enabled=1
  6. gpgcheck=0
  7. [ClusterStorage]
  8. name=RedHat ClusterStorage
  9. baseurl=file:///misc/cd/ClusterStorage
  10. enabled=1
  11. gpgcheck=0
  12. [Server]
  13. name=RedHat Server
  14. baseurl=file:///misc/cd/Server
  15. enabled=1
  16. gpgcheck=0
  17. [VT]
  18. name=RedHat VT
  19. baseurl=file:///misc/cd/VT
  20. enabled=1
  21. gpgcheck=0

完成后,使用yum clean all&&yum makecache刷新缓存,这时yum命令就可以使用本地源安装软件了(为了不影响实验效果,注意将/etc/yum.repos.d/目录中的其他repo文件移出目录,或修改为不以.repo结尾的文件名),如图8-16所示。

8.3.4 自建本地yum源 - 图3

图8-16 RedHat重建本地缓存