在生产环境中,受到网络环境的影响,服务器可能带宽有限,连外网速度较慢或者局域网内的某些机器由于安全的限制,本身就不允许和外网和任何的连接。而这时候现在通过yum安装包或update包时就是一件比较麻烦的事。不过这个问题可以通过在本地自建yum源来解决 。

一、http的安装

yum源可以通过http、ftp、nfs等方式去防问,不过由于nfs由于自身的安全性问题,不推荐用。而ftp有主动/被动模式的问题,配置不当也会造成有无法访问的问题 。所以推荐以web的方式提供yum源 。常见的web server很多,有nginx、apache、lighthttp等,不过由于centos源中带的是apache(其中发行版中,也大都带的有apache),所以本处以apache为例:

1yum -y install httpd http-devel
2service httpd start
3checkconfig httpd on

以上操作就完成了apache的安装、启动及开机自启动。

二、createrepo的安装及使用

createrepo是yum源维护的工具。其安装命令如下:

1yum -y install createrepo

creatrepo带的参数非常多,不过我们平时用的比较多的就两条。一条是创建yum install的 repodata数据,一条是创建yum update 的 repodata数据。

1、创建install 数据

1createrepo -p -d -o yum/centos/6/x86_64 yum/centos/6/x86_64

执行以上命令后,会在x86_64目录下创建repodata目录,这个就是yum源的Meta索引数据和数据库文件,有了这个,yum就可以和这个“源”进行“数据信息”了 。

2、创建update数据

1createrepo --update local-yum/          # 更新本地源

有时候你的软件仓库中含有很多的软件包,虽然只是其中的一小部分有所改动但是你却不必为每个软件包重新产生元数据,这样做明显太浪费时间了。这时就可以使用–update参数创建update索引数据文件 。

三、创建yum源

将iso镜像文件挂载并将文件复制到web server目录并通过createrepo更新索引数据 。

1mkdir -p /var/www/html/centos6.4/x86_64
2mount -t iso9660 /root/centos6.4.iso /mnt -o loop
3cp -rp /mnt/* /var/www/html/centos6.4/x86_64/
4cd /var/www/html/
5createrepo -p -d -o centos6.4/x86_64/ centos6.4/x86_64/

以上几步就完成了yum源的创建,如果想把其他软件也加入源中,如nginx 、JDK(非openjdk版的)、varnish等加入到源,可以再别建一个extra目录。在客户端主机上中增加以上源:

 1cd /etc/yum.repos.d
 2vim test.repo
 3[base]
 4name=centos6
 5baseurl=http://192.168.0.254/centos6.4/x86_64
 6gpgcheck=0
 7[extra]
 8name=centos-extra
 9baseurl=http://192.168.0.254/centos6.4/extra
10gpgcheck=0

本处是新增了一个repo文件,也可以直接修改CentOS-Base.repo文件 。但无论是修改还是新增,需要保证的是文件名必须是以.repo结尾的。

更新源了以后,有时发现会无法使用。这时需要在客户机上执行以下命令清理以前的源数据:

1yum clean all

注:如果想要和现网上的源文件保持一致,还可以通过rsync进行同步。