8.3.5 自建网络yum源

如果你在公司只维护一到两台Linux服务器,那么使用本地yum源或许是可以接受的。但是如果要运维大规模的服务器,使用本地源就不现实了。作为一个Linux工程师,不能把技术活做成体力活。在这种情况下,最简单的方式自然是用官方源——这样连本地源都不需要了,但也总是会有各种各样的原因不能这么做:首先,你无法控制官方源的版本更新,由于大量的机器都是用于线上生产的,如果由于某种原因更新了某个软件包,很可能会造成系统无法正常工作,而使用自己创建的源则可以严格控制软件版本;其次,很多公司有自己定制开发的软件包,这些软件包只能通过内部的yum源服务器提供安装和更新;最后,对于很多生产服务器来说是没有外网权限的,只能使用内部yum源服务。鉴于以上原因,知道如何自建网络yum源是非常有必要的。本小节将演示使用CentOS系统做源服务器和使用CentOS、RedHat系统互做源服务器的场景,用于演示的两种系统的发行版版本(5.5)和操作系统类型(i386)都是一致的(读者考虑一下为什么)。

不管是使用CentOS还是RedHat做源服务器,所需的步骤如下:

1)安装Apache服务(提供http协议的共享源);

2)将安装介质中的内容共享出来;

3)在客户机上配置对应的repo文件(repo文件的内容需要根据源的内容做相应的调整)。

下面首先演示使用CentOS作为源服务器的场景(该服务器的IP为192.168.61.130)。首先安装Apache,该步骤请读者自行完成(使用RPM或者yum安装,安装完成后启动httpd服务)。安装完成后,apache的文档目录默认是varwww/html,为了能访问光盘安装介质中的文件,可以有两种方式,一种方式是把misccd目录中的所有文件复制到varwww/html中;还有更为简单一种方式,即做软链接,如下所示:


  1. [root@localhost ~]# cd varwww/html
  2. [root@localhost html]# ln -s misccd/ .
  3. [root@localhost html]# ls -l #
  4. 看到软链接已经做好了
  5. total 0
  6. lrwxrwxrwx 1 root root 9 Feb 25 21:06 cd -> misccd/

使用浏览器访问该服务器的http://IP/cd来测试apache是否成功共享安装文件,如果一切正常,应该会看到如图8-17所示的界面。

至此源服务器就设置好了。接下来使用一台服务器作为客户端来测试一下该源服务器是否可以使用(客户端服务器为RedHat系统,IP为192.168.61.131),操作系统可以是RedHat或CentOS,只需要保证操作系统是32位、版本为5.5(因为现在的源只能给这种版本的操作系统使用)即可。按照如下方式创建FirstYum.repo,然后更新一下yum缓存,如果成功就可以看到如图8-18所示的界面,也能够成功安装软件。注意,软件源是来自FirstYum,如图8-19所示。


  1. [root@localhost yum.repos.d]# cat FirstYum.repo
  2. [FirstYum]
  3. name=CentOS-5 - FirstYum
  4. baseurl=http://192.168.61.130/cd
  5. gpgcheck=1
  6. gpgkey=http://192.168.61.130/cd/RPM-GPG-KEY-CentOS-5

8.3.5 自建网络yum源 - 图1

图8-17 查看共享文件

8.3.5 自建网络yum源 - 图2

图8-18 重建yum缓存

8.3.5 自建网络yum源 - 图3

图8-19 软件源是FirstYum

如果使用RedHat作为源服务器,服务端的配置和前面介绍的CentOS是完全一致的,只是客户端服务器上的repo文件需要修改成以下的内容:


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

如果读者在网上搜索自建网络yum源的相关文档,可能会发现其中十有八九都有使用createrepo工具重新创建repodata这一步骤,其实这一步不是必要的。事实上,repodata是当前所有RPM包依赖关系的索引,只有在RPM包的目录中放置的文件有经过修改(添加、删除或修改了其中的RPM包)时,才需要重建repodata。这里并不涉及任何包的修改,所以即便是重新创建repodata,其内容和之前的repodata也是一致的。而且,在本例中,由于光驱是只读文件系统,光盘中的所有文件都无法修改,而且也不能重建(重建repo需要写repodata目录)。